diff options
| author | Ye Wen <ywen@google.com> | 2015-01-26 15:17:24 -0800 |
|---|---|---|
| committer | Ye Wen <ywen@google.com> | 2015-01-26 15:17:24 -0800 |
| commit | 7a284e5b43a12ba9e4fa7786786f059bf924dd78 (patch) | |
| tree | 0329d471c9f6524cfae8e31a80bfe74301c7a7b4 /src/com | |
| parent | 6b2ef3b7a2a8e65ef81c031b92227a38cf5c400a (diff) | |
| download | platform_packages_services_Mms-7a284e5b43a12ba9e4fa7786786f059bf924dd78.tar.gz platform_packages_services_Mms-7a284e5b43a12ba9e4fa7786786f059bf924dd78.tar.bz2 platform_packages_services_Mms-7a284e5b43a12ba9e4fa7786786f059bf924dd78.zip | |
Use Network.openConnection instead of duplicating the code
Network.openConnection didn't support proxy but now it does. So removing
redundant code in MmsService and directly call the method. Also moved
confusing MmsConfig macro log to the right place.
b/18717580
Change-Id: I02ed49d738d3d8ad0e315dc8d3e59098f8849d82
Diffstat (limited to 'src/com')
| -rwxr-xr-x | src/com/android/mms/service/MmsConfig.java | 1 | ||||
| -rw-r--r-- | src/com/android/mms/service/MmsHttpClient.java | 54 | ||||
| -rw-r--r-- | src/com/android/mms/service/MmsNetworkManager.java | 52 |
3 files changed, 7 insertions, 100 deletions
diff --git a/src/com/android/mms/service/MmsConfig.java b/src/com/android/mms/service/MmsConfig.java index 4eea339..c5505aa 100755 --- a/src/com/android/mms/service/MmsConfig.java +++ b/src/com/android/mms/service/MmsConfig.java @@ -515,6 +515,7 @@ public class MmsConfig { } else if (MACRO_NAI.equals(macro)) { return getNai(context, mBase.getSubId()); } + Log.e(MmsService.TAG, "MmsConfig: invalid macro " + macro); return null; } diff --git a/src/com/android/mms/service/MmsHttpClient.java b/src/com/android/mms/service/MmsHttpClient.java index 8ce972d..10a758d 100644 --- a/src/com/android/mms/service/MmsHttpClient.java +++ b/src/com/android/mms/service/MmsHttpClient.java @@ -17,17 +17,11 @@ package com.android.mms.service; import android.content.Context; +import android.net.Network; import android.text.TextUtils; import android.util.Log; import com.android.mms.service.exception.MmsHttpException; -import com.android.okhttp.ConnectionPool; -import com.android.okhttp.HttpHandler; -import com.android.okhttp.HttpsHandler; -import com.android.okhttp.OkHttpClient; -import com.android.okhttp.OkUrlFactory; -import com.android.okhttp.internal.Internal; -import com.android.okhttp.internal.Network; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -46,7 +40,6 @@ import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.net.SocketFactory; /** * MMS HTTP client for sending and downloading MMS messages @@ -70,24 +63,17 @@ public class MmsHttpClient { "application/vnd.wap.mms-message"; private final Context mContext; - private final SocketFactory mSocketFactory; private final Network mNetwork; - private final ConnectionPool mConnectionPool; /** * Constructor * * @param context The Context object - * @param socketFactory The socket factory for creating an OKHttp client * @param network The Network for creating an OKHttp client - * @param connectionPool The connection pool for creating an OKHttp client */ - public MmsHttpClient(Context context, SocketFactory socketFactory, Network network, - ConnectionPool connectionPool) { + public MmsHttpClient(Context context, Network network) { mContext = context; - mSocketFactory = socketFactory; mNetwork = network; - mConnectionPool = connectionPool; } /** @@ -119,7 +105,7 @@ public class MmsHttpClient { } final URL url = new URL(urlString); // Now get the connection - connection = openConnection(url, proxy); + connection = (HttpURLConnection) mNetwork.openConnection(url, proxy); connection.setDoInput(true); connection.setConnectTimeout(mmsConfig.getHttpSocketTimeout()); // ------- COMMON HEADERS --------- @@ -210,38 +196,6 @@ public class MmsHttpClient { } } - /** - * Open an HTTP connection - * - * TODO: The following code is borrowed from android.net.Network.openConnection - * Once that method supports proxy, we should use that instead - * Also we should remove the associated Network and ConnectionPool from - * MmsNetworkManager - * - * @param url The URL to connect to - * @param proxy The proxy to use - * @return The opened HttpURLConnection - * @throws MalformedURLException If URL is malformed - */ - private HttpURLConnection openConnection(URL url, Proxy proxy) throws MalformedURLException { - final String protocol = url.getProtocol(); - OkUrlFactory okUrlFactory; - if (protocol.equals("http")) { - okUrlFactory = HttpHandler.createHttpOkUrlFactory(proxy); - } else if (protocol.equals("https")) { - okUrlFactory = HttpsHandler.createHttpsOkUrlFactory(proxy); - } else { - throw new MalformedURLException("Invalid URL or unrecognized protocol " + protocol); - } - OkHttpClient client = okUrlFactory.client(); - client.setSocketFactory(mSocketFactory).setConnectionPool(mConnectionPool); - - // Use internal APIs to change the Network. - Internal.instance.setNetwork(client, mNetwork); - - return okUrlFactory.open(url); - } - private static void logHttpHeaders(Map<String, List<String>> headers) { final StringBuilder sb = new StringBuilder(); if (headers != null) { @@ -348,8 +302,6 @@ public class MmsHttpClient { final String macroValue = mmsConfig.getHttpParamMacro(context, macro); if (macroValue != null) { replaced.append(macroValue); - } else { - Log.w(MmsService.TAG, "HTTP: invalid macro " + macro); } nextStart = matcher.end(); } diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java index f9008a3..c8aa904 100644 --- a/src/com/android/mms/service/MmsNetworkManager.java +++ b/src/com/android/mms/service/MmsNetworkManager.java @@ -20,22 +20,17 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; -import android.net.NetworkRequest; import android.net.NetworkInfo; +import android.net.NetworkRequest; import android.os.SystemClock; -import android.provider.Settings; import android.util.Log; import com.android.mms.service.exception.MmsNetworkException; -import com.android.okhttp.ConnectionPool; - -import java.net.InetAddress; -import java.net.UnknownHostException; /** * Manages the MMS network connectivity */ -public class MmsNetworkManager implements com.android.okhttp.internal.Network { +public class MmsNetworkManager { // Timeout used to call ConnectivityManager.requestNetwork private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 60 * 1000; // Wait timeout for this class, a little bit longer than the above timeout @@ -43,14 +38,6 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { private static final int NETWORK_ACQUIRE_TIMEOUT_MILLIS = NETWORK_REQUEST_TIMEOUT_MILLIS + (5 * 1000); - // Borrowed from {@link android.net.Network} - private static final boolean httpKeepAlive = - Boolean.parseBoolean(System.getProperty("http.keepAlive", "true")); - private static final int httpMaxConnections = - httpKeepAlive ? Integer.parseInt(System.getProperty("http.maxConnections", "5")) : 0; - private static final long httpKeepAliveDurationMs = - Long.parseLong(System.getProperty("http.keepAliveDuration", "300000")); // 5 minutes. - private final Context mContext; // The requested MMS {@link android.net.Network} we are holding @@ -67,9 +54,6 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { private volatile ConnectivityManager mConnectivityManager; - // The OkHttp's ConnectionPool used by the HTTP client associated with this network manager - private ConnectionPool mConnectionPool; - // The MMS HTTP client for this network private MmsHttpClient mMmsHttpClient; @@ -82,7 +66,6 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { mNetwork = null; mMmsRequestCount = 0; mConnectivityManager = null; - mConnectionPool = null; mMmsHttpClient = null; mSubId = subId; mNetworkRequest = new NetworkRequest.Builder() @@ -205,27 +188,9 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { mNetworkCallback = null; mNetwork = null; mMmsRequestCount = 0; - // Currently we follow what android.net.Network does with ConnectionPool, - // which is per Network object. So if Network changes, we should clear - // out the ConnectionPool and thus the MmsHttpClient (since it is linked - // to a specific ConnectionPool). - mConnectionPool = null; mMmsHttpClient = null; } - private static final InetAddress[] EMPTY_ADDRESS_ARRAY = new InetAddress[0]; - @Override - public InetAddress[] resolveInetAddresses(String host) throws UnknownHostException { - Network network = null; - synchronized (this) { - if (mNetwork == null) { - return EMPTY_ADDRESS_ARRAY; - } - network = mNetwork; - } - return network.getAllByName(host); - } - private ConnectivityManager getConnectivityManager() { if (mConnectivityManager == null) { mConnectivityManager = (ConnectivityManager) mContext.getSystemService( @@ -234,13 +199,6 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { return mConnectivityManager; } - private ConnectionPool getOrCreateConnectionPoolLocked() { - if (mConnectionPool == null) { - mConnectionPool = new ConnectionPool(httpMaxConnections, httpKeepAliveDurationMs); - } - return mConnectionPool; - } - /** * Get an MmsHttpClient for the current network * @@ -251,11 +209,7 @@ public class MmsNetworkManager implements com.android.okhttp.internal.Network { if (mMmsHttpClient == null) { if (mNetwork != null) { // Create new MmsHttpClient for the current Network - mMmsHttpClient = new MmsHttpClient( - mContext, - mNetwork.getSocketFactory(), - MmsNetworkManager.this, - getOrCreateConnectionPoolLocked()); + mMmsHttpClient = new MmsHttpClient(mContext, mNetwork); } } return mMmsHttpClient; |
