From 0933537df9c2b644b0c46eaaa914fa49ab6372d5 Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Fri, 8 Jun 2018 14:24:49 +0900 Subject: [PATCH] [PT11] Move handleDeprecatedGlobalHttpProxy to ProxyTracker This contains a significant logic change : it will load the deprecated proxy settings synchronously instead of on the next run loop. I think this is okay because it would happen almost immediately anyway, and there is nothing in ConnectivityService that might be changing this setting in the mean time. As for the possibility that this was executed in the handler because of possible disk access, I want to point out that the loadGlobalProxy method that now calls this was already doing those same similar accesses. Test: runtest Change-Id: Idc6f260e2a337689dc274eb758eb00f6a31089bb --- .../android/server/ConnectivityService.java | 30 ++----------------- .../server/connectivity/ProxyTracker.java | 27 +++++++++++++++++ 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 5e8ffb79c4..b8db2d067a 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -1798,7 +1798,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private void sendStickyBroadcast(Intent intent) { synchronized (this) { - if (!mSystemReady) { + if (!mSystemReady + && intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { mInitialBroadcast = new Intent(intent); } intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); @@ -1847,8 +1848,6 @@ public class ConnectivityService extends IConnectivityManager.Stub mInitialBroadcast = null; } } - // load the global proxy at startup - mHandler.sendMessage(mHandler.obtainMessage(EVENT_APPLY_GLOBAL_HTTP_PROXY)); // Try bringing up tracker, but KeyStore won't be ready yet for secondary users so wait // for user to unlock device too. @@ -3089,7 +3088,7 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case EVENT_APPLY_GLOBAL_HTTP_PROXY: { - handleDeprecatedGlobalHttpProxy(); + mProxyTracker.loadDeprecatedGlobalHttpProxy(); break; } case EVENT_PROXY_HAS_CHANGED: { @@ -3483,29 +3482,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private void handleDeprecatedGlobalHttpProxy() { - final String proxy = Settings.Global.getString(mContext.getContentResolver(), - Settings.Global.HTTP_PROXY); - if (!TextUtils.isEmpty(proxy)) { - String data[] = proxy.split(":"); - if (data.length == 0) { - return; - } - - final String proxyHost = data[0]; - int proxyPort = 8080; - if (data.length > 1) { - try { - proxyPort = Integer.parseInt(data[1]); - } catch (NumberFormatException e) { - return; - } - } - final ProxyInfo p = new ProxyInfo(proxyHost, proxyPort, ""); - setGlobalProxy(p); - } - } - private static class SettingsObserver extends ContentObserver { final private HashMap mUriEventMap; final private Context mContext; diff --git a/services/core/java/com/android/server/connectivity/ProxyTracker.java b/services/core/java/com/android/server/connectivity/ProxyTracker.java index b7bbd42245..111c6d2de5 100644 --- a/services/core/java/com/android/server/connectivity/ProxyTracker.java +++ b/services/core/java/com/android/server/connectivity/ProxyTracker.java @@ -167,9 +167,36 @@ public class ProxyTracker { mGlobalProxy = proxyProperties; } } + loadDeprecatedGlobalHttpProxy(); // TODO : shouldn't this function call mPacManager.setCurrentProxyScriptUrl ? } + /** + * Read the global proxy from the deprecated Settings.Global.HTTP_PROXY setting and apply it. + */ + public void loadDeprecatedGlobalHttpProxy() { + final String proxy = Settings.Global.getString(mContext.getContentResolver(), + Settings.Global.HTTP_PROXY); + if (!TextUtils.isEmpty(proxy)) { + String data[] = proxy.split(":"); + if (data.length == 0) { + return; + } + + final String proxyHost = data[0]; + int proxyPort = 8080; + if (data.length > 1) { + try { + proxyPort = Integer.parseInt(data[1]); + } catch (NumberFormatException e) { + return; + } + } + final ProxyInfo p = new ProxyInfo(proxyHost, proxyPort, ""); + setGlobalProxy(p); + } + } + /** * Sends the system broadcast informing apps about a new proxy configuration. *