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.content.Intent;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.ConnectivityManager.NetworkCallback;
|
import android.net.ConnectivityManager.NetworkCallback;
|
||||||
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
@@ -38,7 +39,9 @@ import android.util.FeatureFlagUtils;
|
|||||||
import com.android.settingslib.R;
|
import com.android.settingslib.R;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Track status of Wi-Fi for the Sys UI.
|
* Track status of Wi-Fi for the Sys UI.
|
||||||
@@ -50,6 +53,7 @@ public class WifiStatusTracker {
|
|||||||
private final NetworkScoreManager mNetworkScoreManager;
|
private final NetworkScoreManager mNetworkScoreManager;
|
||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
||||||
|
private final Set<Integer> mNetworks = new HashSet<>();
|
||||||
private final WifiNetworkScoreCache.CacheListener mCacheListener =
|
private final WifiNetworkScoreCache.CacheListener mCacheListener =
|
||||||
new WifiNetworkScoreCache.CacheListener(mHandler) {
|
new WifiNetworkScoreCache.CacheListener(mHandler) {
|
||||||
@Override
|
@Override
|
||||||
@@ -64,6 +68,20 @@ public class WifiStatusTracker {
|
|||||||
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
|
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
|
||||||
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build();
|
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build();
|
||||||
private final NetworkCallback mNetworkCallback = new NetworkCallback() {
|
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
|
// Note: onCapabilitiesChanged is guaranteed to be called "immediately" after onAvailable
|
||||||
// and onLinkPropertiesChanged.
|
// and onLinkPropertiesChanged.
|
||||||
@Override
|
@Override
|
||||||
@@ -84,9 +102,12 @@ public class WifiStatusTracker {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLost(Network network) {
|
public void onLost(Network network) {
|
||||||
updateWifiInfo(null);
|
if (mNetworks.contains(network.getNetId())) {
|
||||||
updateStatusLabel();
|
mNetworks.remove(network.getNetId());
|
||||||
mCallback.run();
|
updateWifiInfo(null);
|
||||||
|
updateStatusLabel();
|
||||||
|
mCallback.run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() {
|
private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() {
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.app.Instrumentation;
|
import android.app.Instrumentation;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.LinkProperties;
|
||||||
import android.net.Network;
|
import android.net.Network;
|
||||||
import android.net.NetworkCapabilities;
|
import android.net.NetworkCapabilities;
|
||||||
import android.net.NetworkRequest;
|
import android.net.NetworkRequest;
|
||||||
@@ -343,6 +344,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
setConnectivityCommon(networkType, validated, isConnected);
|
setConnectivityCommon(networkType, validated, isConnected);
|
||||||
if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
|
if (networkType == NetworkCapabilities.TRANSPORT_WIFI) {
|
||||||
if (isConnected) {
|
if (isConnected) {
|
||||||
|
mNetworkCallback.onAvailable(mock(Network.class),
|
||||||
|
new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
|
||||||
mNetworkCallback.onCapabilitiesChanged(
|
mNetworkCallback.onCapabilitiesChanged(
|
||||||
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
|
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
|
||||||
} else {
|
} else {
|
||||||
@@ -357,6 +360,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
|
|||||||
setConnectivityCommon(networkType, validated, isConnected);
|
setConnectivityCommon(networkType, validated, isConnected);
|
||||||
if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
|
if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {
|
||||||
if (isConnected) {
|
if (isConnected) {
|
||||||
|
mNetworkCallback.onAvailable(mock(Network.class),
|
||||||
|
new NetworkCapabilities(mNetCapabilities), new LinkProperties(), false);
|
||||||
mNetworkCallback.onCapabilitiesChanged(
|
mNetworkCallback.onCapabilitiesChanged(
|
||||||
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
|
mock(Network.class), new NetworkCapabilities(mNetCapabilities));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user