Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3319c62d authored by Chalard Jean's avatar Chalard Jean
Browse files

[PT05] Move sendProxyBroadcast into ProxyTracker.

Test: runtest
Change-Id: I2c149d29d4b75d3978021b940b6bc58f677b8d17
parent ff5d0055
Loading
Loading
Loading
Loading
+6 −22
Original line number Diff line number Diff line
@@ -3341,7 +3341,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
            if (mProxyTracker.mGlobalProxy == null) {
                proxyProperties = mProxyTracker.mDefaultProxy;
            }
            sendProxyBroadcast(proxyProperties);
            mProxyTracker.sendProxyBroadcast(proxyProperties);
        }
    }

@@ -3400,14 +3400,14 @@ public class ConnectivityService extends IConnectivityManager.Stub
                    && (!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 @@ public class ConnectivityService extends IConnectivityManager.Stub
        ProxyInfo oldProxyInfo = oldLp == null ? null : oldLp.getHttpProxy();

        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 {
        final private HashMap<Uri, Integer> mUriEventMap;
        final private Context mContext;
@@ -5483,7 +5467,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
                        mProxyTracker.mDefaultProxyDisabled = true;
                        if (mProxyTracker.mGlobalProxy == null
                                && mProxyTracker.mDefaultProxy != null) {
                            sendProxyBroadcast(null);
                            mProxyTracker.sendProxyBroadcast(null);
                        }
                    }
                }
@@ -5513,7 +5497,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
                        mProxyTracker.mDefaultProxyDisabled = false;
                        if (mProxyTracker.mGlobalProxy == null
                                && mProxyTracker.mDefaultProxy != null) {
                            sendProxyBroadcast(mProxyTracker.mDefaultProxy);
                            mProxyTracker.sendProxyBroadcast(mProxyTracker.mDefaultProxy);
                        }
                    }
                }
+29 −0
Original line number Diff line number Diff line
@@ -19,10 +19,15 @@ package com.android.server.connectivity;
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 @@ import java.util.Objects;
 * @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 class ProxyTracker {

    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 class ProxyTracker {
    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);
        }
    }
}