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

Commit e45952c8 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by android-build-merger
Browse files

Rename AvoidBadWifiTracker to MultinetworkPolicyTracker am: 58ebe1c6 am:...

Rename AvoidBadWifiTracker to MultinetworkPolicyTracker am: 58ebe1c6 am: 0bc8070f am: 338241de
am: d526434f

Change-Id: I5aefc453c022286e6ee2332a53e6c9f36472e9a5
parents 7d8b56b8 d526434f
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ import android.net.Uri;
import android.net.metrics.DefaultNetworkEvent;
import android.net.metrics.IpConnectivityLog;
import android.net.metrics.NetworkEvent;
import android.net.util.AvoidBadWifiTracker;
import android.net.util.MultinetworkPolicyTracker;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
@@ -499,7 +499,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
    private final IpConnectivityLog mMetricsLog;

    @VisibleForTesting
    final AvoidBadWifiTracker mAvoidBadWifiTracker;
    final MultinetworkPolicyTracker mMultinetworkPolicyTracker;

    /**
     * Implements support for the legacy "one network per network type" model.
@@ -849,9 +849,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
                LingerMonitor.DEFAULT_NOTIFICATION_RATE_LIMIT_MILLIS);
        mLingerMonitor = new LingerMonitor(mContext, mNotifier, dailyLimit, rateLimit);

        mAvoidBadWifiTracker = createAvoidBadWifiTracker(
        mMultinetworkPolicyTracker = createMultinetworkPolicyTracker(
                mContext, mHandler, () -> rematchForAvoidBadWifiUpdate());
        mAvoidBadWifiTracker.start();
        mMultinetworkPolicyTracker.start();
    }

    private NetworkRequest createInternetRequestForTransport(
@@ -2784,7 +2784,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }

    public boolean avoidBadWifi() {
        return mAvoidBadWifiTracker.currentValue();
        return mMultinetworkPolicyTracker.getAvoidBadWifi();
    }

    private void rematchForAvoidBadWifiUpdate() {
@@ -2797,9 +2797,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }

    // TODO: Evaluate whether this is of interest to other consumers of
    // AvoidBadWifiTracker and worth moving out of here.
    // MultinetworkPolicyTracker and worth moving out of here.
    private void dumpAvoidBadWifiSettings(IndentingPrintWriter pw) {
        final boolean configRestrict = mAvoidBadWifiTracker.configRestrictsAvoidBadWifi();
        final boolean configRestrict = mMultinetworkPolicyTracker.configRestrictsAvoidBadWifi();
        if (!configRestrict) {
            pw.println("Bad Wi-Fi avoidance: unrestricted");
            return;
@@ -2809,7 +2809,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        pw.increaseIndent();
        pw.println("Config restrict:   " + configRestrict);

        final String value = mAvoidBadWifiTracker.getSettingsValue();
        final String value = mMultinetworkPolicyTracker.getAvoidBadWifiSetting();
        String description;
        // Can't use a switch statement because strings are legal case labels, but null is not.
        if ("0".equals(value)) {
@@ -2877,7 +2877,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        if (DBG) log("handleNetworkUnvalidated " + nai.name() + " cap=" + nc);

        if (nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) &&
            mAvoidBadWifiTracker.shouldNotifyWifiUnvalidated()) {
            mMultinetworkPolicyTracker.shouldNotifyWifiUnvalidated()) {
            showValidationNotification(nai, NotificationType.LOST_INTERNET);
        }
    }
@@ -5545,8 +5545,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }

    @VisibleForTesting
    AvoidBadWifiTracker createAvoidBadWifiTracker(Context c, Handler h, Runnable r) {
        return new AvoidBadWifiTracker(c, h, r);
    MultinetworkPolicyTracker createMultinetworkPolicyTracker(Context c, Handler h, Runnable r) {
        return new MultinetworkPolicyTracker(c, h, r);
    }

    @VisibleForTesting
+7 −7
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ import android.net.StaticIpConfiguration;
import android.net.dhcp.DhcpClient;
import android.net.metrics.IpConnectivityLog;
import android.net.metrics.IpManagerEvent;
import android.net.util.AvoidBadWifiTracker;
import android.net.util.MultinetworkPolicyTracker;
import android.os.INetworkManagementService;
import android.os.Message;
import android.os.RemoteException;
@@ -398,7 +398,7 @@ public class IpManager extends StateMachine {
    private final NetlinkTracker mNetlinkTracker;
    private final WakeupMessage mProvisioningTimeoutAlarm;
    private final WakeupMessage mDhcpActionTimeoutAlarm;
    private final AvoidBadWifiTracker mAvoidBadWifiTracker;
    private final MultinetworkPolicyTracker mMultinetworkPolicyTracker;
    private final LocalLog mLocalLog;
    private final LocalLog mConnectivityPacketLog;
    private final MessageHandlingLogger mMsgStateLogger;
@@ -492,7 +492,7 @@ public class IpManager extends StateMachine {
        mLinkProperties = new LinkProperties();
        mLinkProperties.setInterfaceName(mInterfaceName);

        mAvoidBadWifiTracker = new AvoidBadWifiTracker(mContext, getHandler(),
        mMultinetworkPolicyTracker = new MultinetworkPolicyTracker(mContext, getHandler(),
                () -> { mLocalLog.log("OBSERVED AvoidBadWifi changed"); });

        mProvisioningTimeoutAlarm = new WakeupMessage(mContext, getHandler(),
@@ -527,7 +527,7 @@ public class IpManager extends StateMachine {
            Log.e(mTag, "Couldn't register NetlinkTracker: " + e.toString());
        }

        mAvoidBadWifiTracker.start();
        mMultinetworkPolicyTracker.start();
    }

    @Override
@@ -538,7 +538,7 @@ public class IpManager extends StateMachine {
    // Shut down this IpManager instance altogether.
    public void shutdown() {
        stop();
        mAvoidBadWifiTracker.shutdown();
        mMultinetworkPolicyTracker.shutdown();
        quit();
    }

@@ -767,7 +767,7 @@ public class IpManager extends StateMachine {
        // Note that we can still be disconnected by IpReachabilityMonitor
        // if the IPv6 default gateway (but not the IPv6 DNS servers; see
        // accompanying code in IpReachabilityMonitor) is unreachable.
        final boolean ignoreIPv6ProvisioningLoss = !mAvoidBadWifiTracker.currentValue();
        final boolean ignoreIPv6ProvisioningLoss = !mMultinetworkPolicyTracker.getAvoidBadWifi();

        // Additionally:
        //
@@ -1045,7 +1045,7 @@ public class IpManager extends StateMachine {
                            mCallback.onReachabilityLost(logMsg);
                        }
                    },
                    mAvoidBadWifiTracker);
                    mMultinetworkPolicyTracker);
        } catch (IllegalArgumentException iae) {
            // Failed to start IpReachabilityMonitor. Log it and call
            // onProvisioningFailure() immediately.
+5 −5
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import android.net.netlink.RtNetlinkNeighborMessage;
import android.net.netlink.StructNdaCacheInfo;
import android.net.netlink.StructNdMsg;
import android.net.netlink.StructNlMsgHdr;
import android.net.util.AvoidBadWifiTracker;
import android.net.util.MultinetworkPolicyTracker;
import android.os.PowerManager;
import android.os.SystemClock;
import android.system.ErrnoException;
@@ -151,7 +151,7 @@ public class IpReachabilityMonitor {
    private final String mInterfaceName;
    private final int mInterfaceIndex;
    private final Callback mCallback;
    private final AvoidBadWifiTracker mAvoidBadWifiTracker;
    private final MultinetworkPolicyTracker mMultinetworkPolicyTracker;
    private final NetlinkSocketObserver mNetlinkSocketObserver;
    private final Thread mObserverThread;
    private final IpConnectivityLog mMetricsLog = new IpConnectivityLog();
@@ -226,7 +226,7 @@ public class IpReachabilityMonitor {
    }

    public IpReachabilityMonitor(Context context, String ifName, Callback callback,
            AvoidBadWifiTracker tracker) throws IllegalArgumentException {
            MultinetworkPolicyTracker tracker) throws IllegalArgumentException {
        mInterfaceName = ifName;
        int ifIndex = -1;
        try {
@@ -238,7 +238,7 @@ public class IpReachabilityMonitor {
        mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)).newWakeLock(
                PowerManager.PARTIAL_WAKE_LOCK, TAG + "." + mInterfaceName);
        mCallback = callback;
        mAvoidBadWifiTracker = tracker;
        mMultinetworkPolicyTracker = tracker;
        mNetlinkSocketObserver = new NetlinkSocketObserver();
        mObserverThread = new Thread(mNetlinkSocketObserver);
        mObserverThread.start();
@@ -379,7 +379,7 @@ public class IpReachabilityMonitor {
    }

    private boolean avoidingBadLinks() {
        return (mAvoidBadWifiTracker != null) ? mAvoidBadWifiTracker.currentValue() : true;
        return (mMultinetworkPolicyTracker == null) || mMultinetworkPolicyTracker.getAvoidBadWifi();
    }

    public void probeAll() {
+19 −17
Original line number Diff line number Diff line
@@ -42,8 +42,8 @@ import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI;
 * This enables the device to switch to another form of connectivity, like
 * mobile, if it's available and working.
 *
 * The Runnable |cb|, if given, is called on the supplied Handler's thread
 * whether the computed "avoid bad wifi" value changes.
 * The Runnable |avoidBadWifiCallback|, if given, is posted to the supplied
 * Handler' whenever the computed "avoid bad wifi" value changes.
 *
 * Disabling this reverts the device to a level of networking sophistication
 * circa 2012-13 by disabling disparate code paths each of which contribute to
@@ -51,28 +51,30 @@ import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI;
 *
 * @hide
 */
public class AvoidBadWifiTracker {
    private static String TAG = AvoidBadWifiTracker.class.getSimpleName();
public class MultinetworkPolicyTracker {
    private static String TAG = MultinetworkPolicyTracker.class.getSimpleName();

    private final Context mContext;
    private final Handler mHandler;
    private final Runnable mReevaluateRunnable;
    private final Uri mUri;
    private final Uri mAvoidBadWifiUri;
    private final ContentResolver mResolver;
    private final SettingObserver mSettingObserver;
    private final BroadcastReceiver mBroadcastReceiver;

    private volatile boolean mAvoidBadWifi = true;

    public AvoidBadWifiTracker(Context ctx, Handler handler) {
    public MultinetworkPolicyTracker(Context ctx, Handler handler) {
        this(ctx, handler, null);
    }

    public AvoidBadWifiTracker(Context ctx, Handler handler, Runnable cb) {
    public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) {
        mContext = ctx;
        mHandler = handler;
        mReevaluateRunnable = () -> { if (update() && cb != null) cb.run(); };
        mUri = Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI);
        mReevaluateRunnable = () -> {
            if (updateAvoidBadWifi() && avoidBadWifiCallback != null) avoidBadWifiCallback.run();
        };
        mAvoidBadWifiUri = Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI);
        mResolver = mContext.getContentResolver();
        mSettingObserver = new SettingObserver();
        mBroadcastReceiver = new BroadcastReceiver() {
@@ -82,11 +84,11 @@ public class AvoidBadWifiTracker {
            }
        };

        update();
        updateAvoidBadWifi();
    }

    public void start() {
        mResolver.registerContentObserver(mUri, false, mSettingObserver);
        mResolver.registerContentObserver(mAvoidBadWifiUri, false, mSettingObserver);

        final IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
@@ -102,7 +104,7 @@ public class AvoidBadWifiTracker {
        mContext.unregisterReceiver(mBroadcastReceiver);
    }

    public boolean currentValue() {
    public boolean getAvoidBadWifi() {
        return mAvoidBadWifi;
    }

@@ -117,10 +119,10 @@ public class AvoidBadWifiTracker {
     * Whether we should display a notification when wifi becomes unvalidated.
     */
    public boolean shouldNotifyWifiUnvalidated() {
        return configRestrictsAvoidBadWifi() && getSettingsValue() == null;
        return configRestrictsAvoidBadWifi() && getAvoidBadWifiSetting() == null;
    }

    public String getSettingsValue() {
    public String getAvoidBadWifiSetting() {
        return Settings.Global.getString(mResolver, NETWORK_AVOID_BAD_WIFI);
    }

@@ -129,8 +131,8 @@ public class AvoidBadWifiTracker {
        mHandler.post(mReevaluateRunnable);
    }

    public boolean update() {
        final boolean settingAvoidBadWifi = "1".equals(getSettingsValue());
    public boolean updateAvoidBadWifi() {
        final boolean settingAvoidBadWifi = "1".equals(getAvoidBadWifiSetting());
        final boolean prev = mAvoidBadWifi;
        mAvoidBadWifi = settingAvoidBadWifi || !configRestrictsAvoidBadWifi();
        return mAvoidBadWifi != prev;
@@ -148,7 +150,7 @@ public class AvoidBadWifiTracker {

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            if (!mUri.equals(uri)) return;
            if (!mAvoidBadWifiUri.equals(uri)) return;
            reevaluate();
        }
    }
+10 −10
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ import android.net.NetworkMisc;
import android.net.NetworkRequest;
import android.net.RouteInfo;
import android.net.metrics.IpConnectivityLog;
import android.net.util.AvoidBadWifiTracker;
import android.net.util.MultinetworkPolicyTracker;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.HandlerThread;
@@ -593,10 +593,10 @@ public class ConnectivityServiceTest extends AndroidTestCase {
        }
    }

    private class WrappedAvoidBadWifiTracker extends AvoidBadWifiTracker {
    private class WrappedMultinetworkPolicyTracker extends MultinetworkPolicyTracker {
        public volatile boolean configRestrictsAvoidBadWifi;

        public WrappedAvoidBadWifiTracker(Context c, Handler h, Runnable r) {
        public WrappedMultinetworkPolicyTracker(Context c, Handler h, Runnable r) {
            super(c, h, r);
        }

@@ -607,7 +607,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
    }

    private class WrappedConnectivityService extends ConnectivityService {
        public WrappedAvoidBadWifiTracker wrappedAvoidBadWifiTracker;
        public WrappedMultinetworkPolicyTracker wrappedMultinetworkPolicyTracker;
        private WrappedNetworkMonitor mLastCreatedNetworkMonitor;

        public WrappedConnectivityService(Context context, INetworkManagementService netManager,
@@ -654,14 +654,14 @@ public class ConnectivityServiceTest extends AndroidTestCase {
        }

        @Override
        public AvoidBadWifiTracker createAvoidBadWifiTracker(
        public MultinetworkPolicyTracker createMultinetworkPolicyTracker(
                Context c, Handler h, Runnable r) {
            final WrappedAvoidBadWifiTracker tracker = new WrappedAvoidBadWifiTracker(c, h, r);
            final WrappedMultinetworkPolicyTracker tracker = new WrappedMultinetworkPolicyTracker(c, h, r);
            return tracker;
        }

        public WrappedAvoidBadWifiTracker getAvoidBadWifiTracker() {
            return (WrappedAvoidBadWifiTracker) mAvoidBadWifiTracker;
        public WrappedMultinetworkPolicyTracker getMultinetworkPolicyTracker() {
            return (WrappedMultinetworkPolicyTracker) mMultinetworkPolicyTracker;
        }

        @Override
@@ -2140,7 +2140,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
    @SmallTest
    public void testAvoidBadWifiSetting() throws Exception {
        final ContentResolver cr = mServiceContext.getContentResolver();
        final WrappedAvoidBadWifiTracker tracker = mService.getAvoidBadWifiTracker();
        final WrappedMultinetworkPolicyTracker tracker = mService.getMultinetworkPolicyTracker();
        final String settingName = Settings.Global.NETWORK_AVOID_BAD_WIFI;

        tracker.configRestrictsAvoidBadWifi = false;
@@ -2178,7 +2178,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
    @SmallTest
    public void testAvoidBadWifi() throws Exception {
        final ContentResolver cr = mServiceContext.getContentResolver();
        final WrappedAvoidBadWifiTracker tracker = mService.getAvoidBadWifiTracker();
        final WrappedMultinetworkPolicyTracker tracker = mService.getMultinetworkPolicyTracker();

        // Pretend we're on a carrier that restricts switching away from bad wifi.
        tracker.configRestrictsAvoidBadWifi = true;