Merge "Only monitor primary WIFi in the SysUI" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-18 17:35:51 +00:00
committed by Android (Google) Code Review
2 changed files with 43 additions and 23 deletions

View File

@@ -80,36 +80,41 @@ public class WifiStatusTracker {
@Override @Override
public void onCapabilitiesChanged( public void onCapabilitiesChanged(
Network network, NetworkCapabilities networkCapabilities) { Network network, NetworkCapabilities networkCapabilities) {
if (!mNetworks.contains(network.getNetId())) { boolean isVcnOverWifi = false;
// New network boolean isWifi = false;
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());
}
}
WifiInfo wifiInfo = null; WifiInfo wifiInfo = null;
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
wifiInfo = Utils.tryGetWifiInfoForVcn(networkCapabilities); wifiInfo = Utils.tryGetWifiInfoForVcn(networkCapabilities);
isVcnOverWifi = (wifiInfo != null);
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { } else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo(); wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
isWifi = true;
} }
String log = new StringBuilder() // As long as it is a WiFi network, we will log it in the dumpsys for debugging.
.append(SSDF.format(System.currentTimeMillis())).append(",") if (isVcnOverWifi || isWifi) {
.append("onCapabilitiesChanged: ") String log = new StringBuilder()
.append("network=").append(network).append(",") .append(SSDF.format(System.currentTimeMillis())).append(",")
.append("networkCapabilities=").append(networkCapabilities) .append("onCapabilitiesChanged: ")
.toString(); .append("network=").append(network).append(",")
recordLastWifiNetwork(log); .append("networkCapabilities=").append(networkCapabilities)
if (wifiInfo != null) { .toString();
updateWifiInfo(wifiInfo); recordLastWifiNetwork(log);
updateStatusLabel();
mCallback.run();
} }
// Ignore the WiFi network if it doesn't contain any valid WifiInfo, or it is not the
// primary WiFi.
if (wifiInfo == null || !wifiInfo.isPrimary()) {
// Remove the network from the tracking list once it becomes non-primary.
if (mNetworks.contains(network.getNetId())) {
mNetworks.remove(network.getNetId());
}
return;
}
if (!mNetworks.contains(network.getNetId())) {
mNetworks.add(network.getNetId());
}
updateWifiInfo(wifiInfo);
updateStatusLabel();
mCallback.run();
} }
@Override @Override

View File

@@ -43,6 +43,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); super.setUp();
when(mWifiInfo.makeCopy(anyLong())).thenReturn(mWifiInfo); when(mWifiInfo.makeCopy(anyLong())).thenReturn(mWifiInfo);
when(mWifiInfo.isPrimary()).thenReturn(true);
} }
@Test @Test
@@ -277,6 +278,20 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
} }
} }
@Test
public void testNonPrimaryWiFi() {
String testSsid = "Test SSID";
setWifiEnabled(true);
setWifiState(true, testSsid);
// Set the ImsType to be IMS_TYPE_WLAN
setImsType(2);
setWifiLevel(1);
verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
when(mWifiInfo.isPrimary()).thenReturn(false);
setWifiLevel(3);
verifyLastCallStrength(TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[1]);
}
protected void setWifiActivity(int activity) { protected void setWifiActivity(int activity) {
// TODO: Not this, because this variable probably isn't sticking around. // TODO: Not this, because this variable probably isn't sticking around.
mNetworkController.mWifiSignalController.setActivity(activity); mNetworkController.mWifiSignalController.setActivity(activity);