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

Commit 08a106eb authored by Ying Xu's avatar Ying Xu Committed by Automerger Merge Worker
Browse files

Merge "Only remove the relevant network" into sc-dev am: e4dfd1d7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13421166

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I4fd3596b4d1618df7428e0e4df92413b88e4fed1
parents 00bafb3b e4dfd1d7
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
@@ -38,7 +39,9 @@ import android.util.FeatureFlagUtils;
import com.android.settingslib.R;
import com.android.settingslib.Utils;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Track status of Wi-Fi for the Sys UI.
@@ -50,6 +53,7 @@ public class WifiStatusTracker {
    private final NetworkScoreManager mNetworkScoreManager;
    private final ConnectivityManager mConnectivityManager;
    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final Set<Integer> mNetworks = new HashSet<>();
    private final WifiNetworkScoreCache.CacheListener mCacheListener =
            new WifiNetworkScoreCache.CacheListener(mHandler) {
                @Override
@@ -64,6 +68,20 @@ public class WifiStatusTracker {
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build();
    private final NetworkCallback mNetworkCallback = new NetworkCallback() {
        @Override
        public void onAvailable(
                Network network, NetworkCapabilities networkCapabilities,
                LinkProperties linkProperties, boolean blocked) {
            boolean isVcnOverWifi =
                    networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                            && (Utils.tryGetWifiInfoForVcn(networkCapabilities) != null);
            boolean isWifi =
                    networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
            if (isVcnOverWifi || isWifi) {
                mNetworks.add(network.getNetId());
            }
        }

        // Note: onCapabilitiesChanged is guaranteed to be called "immediately" after onAvailable
        // and onLinkPropertiesChanged.
        @Override
@@ -84,10 +102,13 @@ public class WifiStatusTracker {

        @Override
        public void onLost(Network network) {
            if (mNetworks.contains(network.getNetId())) {
                mNetworks.remove(network.getNetId());
                updateWifiInfo(null);
                updateStatusLabel();
                mCallback.run();
            }
        }
    };
    private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() {
        @Override
+5 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import static org.mockito.Mockito.when;
import android.app.Instrumentation;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
@@ -343,6 +344,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        setConnectivityCommon(networkType, validated, isConnected);
        if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
            if (isConnected) {
                mNetworkCallback.onAvailable(mock(Network.class),
                        new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
                mNetworkCallback.onCapabilitiesChanged(
                        mock(Network.class), new NetworkCapabilities(mNetCapabilities));
            } else {
@@ -357,6 +360,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
        setConnectivityCommon(networkType, validated, isConnected);
        if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
            if (isConnected) {
                mNetworkCallback.onAvailable(mock(Network.class),
                        new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
                mNetworkCallback.onCapabilitiesChanged(
                        mock(Network.class), new NetworkCapabilities(mNetCapabilities));
            } else {