[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
This commit is contained in:
Chalard Jean
2018-06-08 14:24:49 +09:00
parent e4f9bd95ec
commit 0933537df9
2 changed files with 30 additions and 27 deletions

View File

@@ -1798,7 +1798,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void sendStickyBroadcast(Intent intent) { private void sendStickyBroadcast(Intent intent) {
synchronized (this) { synchronized (this) {
if (!mSystemReady) { if (!mSystemReady
&& intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
mInitialBroadcast = new Intent(intent); mInitialBroadcast = new Intent(intent);
} }
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
@@ -1847,8 +1848,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
mInitialBroadcast = null; 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 // Try bringing up tracker, but KeyStore won't be ready yet for secondary users so wait
// for user to unlock device too. // for user to unlock device too.
@@ -3089,7 +3088,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
break; break;
} }
case EVENT_APPLY_GLOBAL_HTTP_PROXY: { case EVENT_APPLY_GLOBAL_HTTP_PROXY: {
handleDeprecatedGlobalHttpProxy(); mProxyTracker.loadDeprecatedGlobalHttpProxy();
break; break;
} }
case EVENT_PROXY_HAS_CHANGED: { 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 { private static class SettingsObserver extends ContentObserver {
final private HashMap<Uri, Integer> mUriEventMap; final private HashMap<Uri, Integer> mUriEventMap;
final private Context mContext; final private Context mContext;

View File

@@ -167,9 +167,36 @@ public class ProxyTracker {
mGlobalProxy = proxyProperties; mGlobalProxy = proxyProperties;
} }
} }
loadDeprecatedGlobalHttpProxy();
// TODO : shouldn't this function call mPacManager.setCurrentProxyScriptUrl ? // 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. * Sends the system broadcast informing apps about a new proxy configuration.
* *