[PT05] Move sendProxyBroadcast into ProxyTracker.

Test: runtest
Change-Id: I2c149d29d4b75d3978021b940b6bc58f677b8d17
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 76a4078..3d923a9 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -3341,7 +3341,7 @@
             if (mProxyTracker.mGlobalProxy == null) {
                 proxyProperties = mProxyTracker.mDefaultProxy;
             }
-            sendProxyBroadcast(proxyProperties);
+            mProxyTracker.sendProxyBroadcast(proxyProperties);
         }
     }
 
@@ -3400,14 +3400,14 @@
                     && (!Uri.EMPTY.equals(proxy.getPacFileUrl()))
                     && proxy.getPacFileUrl().equals(mProxyTracker.mGlobalProxy.getPacFileUrl())) {
                 mProxyTracker.mGlobalProxy = proxy;
-                sendProxyBroadcast(mProxyTracker.mGlobalProxy);
+                mProxyTracker.sendProxyBroadcast(mProxyTracker.mGlobalProxy);
                 return;
             }
             mProxyTracker.mDefaultProxy = proxy;
 
             if (mProxyTracker.mGlobalProxy != null) return;
             if (!mProxyTracker.mDefaultProxyDisabled) {
-                sendProxyBroadcast(proxy);
+                mProxyTracker.sendProxyBroadcast(proxy);
             }
         }
     }
@@ -3422,7 +3422,7 @@
         ProxyInfo oldProxyInfo = oldLp == null ? null : oldLp.getHttpProxy();
 
         if (!ProxyTracker.proxyInfoEqual(newProxyInfo, oldProxyInfo)) {
-            sendProxyBroadcast(mProxyTracker.getDefaultProxy());
+            mProxyTracker.sendProxyBroadcast(mProxyTracker.getDefaultProxy());
         }
     }
 
@@ -3449,22 +3449,6 @@
         }
     }
 
-    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 {
         final private HashMap<Uri, Integer> mUriEventMap;
         final private Context mContext;
@@ -5483,7 +5467,7 @@
                         mProxyTracker.mDefaultProxyDisabled = true;
                         if (mProxyTracker.mGlobalProxy == null
                                 && mProxyTracker.mDefaultProxy != null) {
-                            sendProxyBroadcast(null);
+                            mProxyTracker.sendProxyBroadcast(null);
                         }
                     }
                 }
@@ -5513,7 +5497,7 @@
                         mProxyTracker.mDefaultProxyDisabled = false;
                         if (mProxyTracker.mGlobalProxy == null
                                 && mProxyTracker.mDefaultProxy != null) {
-                            sendProxyBroadcast(mProxyTracker.mDefaultProxy);
+                            mProxyTracker.sendProxyBroadcast(mProxyTracker.mDefaultProxy);
                         }
                     }
                 }
diff --git a/services/core/java/com/android/server/connectivity/ProxyTracker.java b/services/core/java/com/android/server/connectivity/ProxyTracker.java
index c41779a..89cacdc 100644
--- a/services/core/java/com/android/server/connectivity/ProxyTracker.java
+++ b/services/core/java/com/android/server/connectivity/ProxyTracker.java
@@ -19,10 +19,15 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
+import android.content.Intent;
+import android.net.Proxy;
 import android.net.ProxyInfo;
 import android.net.Uri;
+import android.os.Binder;
 import android.os.Handler;
+import android.os.UserHandle;
 import android.text.TextUtils;
+import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -34,6 +39,12 @@
  * @hide
  */
 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
     // possible
     @NonNull
@@ -52,6 +63,7 @@
 
     public ProxyTracker(@NonNull final Context context,
             @NonNull final Handler connectivityServiceInternalHandler, final int pacChangedEvent) {
+        mContext = context;
         mPacManager = new PacManager(context, connectivityServiceInternalHandler, pacChangedEvent);
     }
 
@@ -105,4 +117,21 @@
     public boolean setCurrentProxyScriptUrl(@NonNull final ProxyInfo 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);
+        }
+    }
 }