Merge "Only remove the relevant network" into sc-dev
This commit is contained in:
@@ -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,9 +102,12 @@ public class WifiStatusTracker {
|
||||
|
||||
@Override
|
||||
public void onLost(Network network) {
|
||||
updateWifiInfo(null);
|
||||
updateStatusLabel();
|
||||
mCallback.run();
|
||||
if (mNetworks.contains(network.getNetId())) {
|
||||
mNetworks.remove(network.getNetId());
|
||||
updateWifiInfo(null);
|
||||
updateStatusLabel();
|
||||
mCallback.run();
|
||||
}
|
||||
}
|
||||
};
|
||||
private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user