[PT05] Move sendProxyBroadcast into ProxyTracker.

Test: runtest
Change-Id: I2c149d29d4b75d3978021b940b6bc58f677b8d17
This commit is contained in:
Chalard Jean
2018-06-07 19:30:29 +09:00
parent faf4a2083d
commit 5c0ca509d5
2 changed files with 35 additions and 22 deletions

View File

@@ -3341,7 +3341,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (mProxyTracker.mGlobalProxy == null) { if (mProxyTracker.mGlobalProxy == null) {
proxyProperties = mProxyTracker.mDefaultProxy; proxyProperties = mProxyTracker.mDefaultProxy;
} }
sendProxyBroadcast(proxyProperties); mProxyTracker.sendProxyBroadcast(proxyProperties);
} }
} }
@@ -3400,14 +3400,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
&& (!Uri.EMPTY.equals(proxy.getPacFileUrl())) && (!Uri.EMPTY.equals(proxy.getPacFileUrl()))
&& proxy.getPacFileUrl().equals(mProxyTracker.mGlobalProxy.getPacFileUrl())) { && proxy.getPacFileUrl().equals(mProxyTracker.mGlobalProxy.getPacFileUrl())) {
mProxyTracker.mGlobalProxy = proxy; mProxyTracker.mGlobalProxy = proxy;
sendProxyBroadcast(mProxyTracker.mGlobalProxy); mProxyTracker.sendProxyBroadcast(mProxyTracker.mGlobalProxy);
return; return;
} }
mProxyTracker.mDefaultProxy = proxy; mProxyTracker.mDefaultProxy = proxy;
if (mProxyTracker.mGlobalProxy != null) return; if (mProxyTracker.mGlobalProxy != null) return;
if (!mProxyTracker.mDefaultProxyDisabled) { if (!mProxyTracker.mDefaultProxyDisabled) {
sendProxyBroadcast(proxy); mProxyTracker.sendProxyBroadcast(proxy);
} }
} }
} }
@@ -3422,7 +3422,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
ProxyInfo oldProxyInfo = oldLp == null ? null : oldLp.getHttpProxy(); ProxyInfo oldProxyInfo = oldLp == null ? null : oldLp.getHttpProxy();
if (!ProxyTracker.proxyInfoEqual(newProxyInfo, oldProxyInfo)) { if (!ProxyTracker.proxyInfoEqual(newProxyInfo, oldProxyInfo)) {
sendProxyBroadcast(mProxyTracker.getDefaultProxy()); mProxyTracker.sendProxyBroadcast(mProxyTracker.getDefaultProxy());
} }
} }
@@ -3449,22 +3449,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private void sendProxyBroadcast(ProxyInfo proxy) {
if (proxy == null) proxy = new ProxyInfo("", 0, "");
if (mProxyTracker.setCurrentProxyScriptUrl(proxy)) return;
if (DBG) log("sending Proxy Broadcast for " + proxy);
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
intent.putExtra(Proxy.EXTRA_PROXY_INFO, proxy);
final long ident = Binder.clearCallingIdentity();
try {
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
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;
@@ -5483,7 +5467,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mProxyTracker.mDefaultProxyDisabled = true; mProxyTracker.mDefaultProxyDisabled = true;
if (mProxyTracker.mGlobalProxy == null if (mProxyTracker.mGlobalProxy == null
&& mProxyTracker.mDefaultProxy != null) { && mProxyTracker.mDefaultProxy != null) {
sendProxyBroadcast(null); mProxyTracker.sendProxyBroadcast(null);
} }
} }
} }
@@ -5513,7 +5497,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mProxyTracker.mDefaultProxyDisabled = false; mProxyTracker.mDefaultProxyDisabled = false;
if (mProxyTracker.mGlobalProxy == null if (mProxyTracker.mGlobalProxy == null
&& mProxyTracker.mDefaultProxy != null) { && mProxyTracker.mDefaultProxy != null) {
sendProxyBroadcast(mProxyTracker.mDefaultProxy); mProxyTracker.sendProxyBroadcast(mProxyTracker.mDefaultProxy);
} }
} }
} }

View File

@@ -19,10 +19,15 @@ package com.android.server.connectivity;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.net.Proxy;
import android.net.ProxyInfo; import android.net.ProxyInfo;
import android.net.Uri; import android.net.Uri;
import android.os.Binder;
import android.os.Handler; import android.os.Handler;
import android.os.UserHandle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
@@ -34,6 +39,12 @@ import java.util.Objects;
* @hide * @hide
*/ */
public class ProxyTracker { public class ProxyTracker {
private static final String TAG = ProxyTracker.class.getSimpleName();
private static final boolean DBG = true;
@NonNull
private final Context mContext;
// TODO : make this private and import as much managing logic from ConnectivityService as // TODO : make this private and import as much managing logic from ConnectivityService as
// possible // possible
@NonNull @NonNull
@@ -52,6 +63,7 @@ public class ProxyTracker {
public ProxyTracker(@NonNull final Context context, public ProxyTracker(@NonNull final Context context,
@NonNull final Handler connectivityServiceInternalHandler, final int pacChangedEvent) { @NonNull final Handler connectivityServiceInternalHandler, final int pacChangedEvent) {
mContext = context;
mPacManager = new PacManager(context, connectivityServiceInternalHandler, pacChangedEvent); mPacManager = new PacManager(context, connectivityServiceInternalHandler, pacChangedEvent);
} }
@@ -105,4 +117,21 @@ public class ProxyTracker {
public boolean setCurrentProxyScriptUrl(@NonNull final ProxyInfo proxy) { public boolean setCurrentProxyScriptUrl(@NonNull final ProxyInfo proxy) {
return mPacManager.setCurrentProxyScriptUrl(proxy); return mPacManager.setCurrentProxyScriptUrl(proxy);
} }
// TODO : make the argument NonNull final
public void sendProxyBroadcast(@Nullable ProxyInfo proxy) {
if (proxy == null) proxy = new ProxyInfo("", 0, "");
if (setCurrentProxyScriptUrl(proxy)) return;
if (DBG) Slog.d(TAG, "sending Proxy Broadcast for " + proxy);
Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING |
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
intent.putExtra(Proxy.EXTRA_PROXY_INFO, proxy);
final long ident = Binder.clearCallingIdentity();
try {
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
} }