diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index b8db2d067a..4b77c69aba 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -5513,15 +5513,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (networkAgent.isVPN()) { // Temporarily disable the default proxy (not global). - synchronized (mProxyTracker.mProxyLock) { - if (!mProxyTracker.mDefaultProxyDisabled) { - mProxyTracker.mDefaultProxyDisabled = true; - if (mProxyTracker.mGlobalProxy == null - && mProxyTracker.mDefaultProxy != null) { - mProxyTracker.sendProxyBroadcast(null); - } - } - } + mProxyTracker.setDefaultProxyEnabled(false); // TODO: support proxy per network. } @@ -5543,15 +5535,7 @@ public class ConnectivityService extends IConnectivityManager.Stub } else if (state == NetworkInfo.State.DISCONNECTED) { networkAgent.asyncChannel.disconnect(); if (networkAgent.isVPN()) { - synchronized (mProxyTracker.mProxyLock) { - if (mProxyTracker.mDefaultProxyDisabled) { - mProxyTracker.mDefaultProxyDisabled = false; - if (mProxyTracker.mGlobalProxy == null - && mProxyTracker.mDefaultProxy != null) { - mProxyTracker.sendProxyBroadcast(mProxyTracker.mDefaultProxy); - } - } - } + mProxyTracker.setDefaultProxyEnabled(true); updateUids(networkAgent, networkAgent.networkCapabilities, null); } disconnectAndDestroyNetwork(networkAgent); diff --git a/services/core/java/com/android/server/connectivity/ProxyTracker.java b/services/core/java/com/android/server/connectivity/ProxyTracker.java index 111c6d2de5..4ea992cfb4 100644 --- a/services/core/java/com/android/server/connectivity/ProxyTracker.java +++ b/services/core/java/com/android/server/connectivity/ProxyTracker.java @@ -309,4 +309,22 @@ public class ProxyTracker { } } } + + /** + * Enable or disable the default proxy. + * + * This sets the flag for enabling/disabling the default proxy and sends the broadcast + * if applicable. + * @param enabled whether the default proxy should be enabled. + */ + public void setDefaultProxyEnabled(final boolean enabled) { + synchronized (mProxyLock) { + if (mDefaultProxyDisabled == enabled) { + mDefaultProxyDisabled = !enabled; + if (mGlobalProxy == null && mDefaultProxy != null) { + sendProxyBroadcast(enabled ? mDefaultProxy : null); + } + } + } + } }