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
public void onCapabilitiesChanged(
Network network, NetworkCapabilities networkCapabilities) {
if (!mNetworks.contains(network.getNetId())) {
// New network
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());
}
}
boolean isVcnOverWifi = false;
boolean isWifi = false;
WifiInfo wifiInfo = null;
if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
wifiInfo = Utils.tryGetWifiInfoForVcn(networkCapabilities);
isVcnOverWifi = (wifiInfo != null);
} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();
isWifi = true;
}
String log = new StringBuilder()
.append(SSDF.format(System.currentTimeMillis())).append(",")
.append("onCapabilitiesChanged: ")
.append("network=").append(network).append(",")
.append("networkCapabilities=").append(networkCapabilities)
.toString();
recordLastWifiNetwork(log);
if (wifiInfo != null) {
updateWifiInfo(wifiInfo);
updateStatusLabel();
mCallback.run();
// As long as it is a WiFi network, we will log it in the dumpsys for debugging.
if (isVcnOverWifi || isWifi) {
String log = new StringBuilder()
.append(SSDF.format(System.currentTimeMillis())).append(",")
.append("onCapabilitiesChanged: ")
.append("network=").append(network).append(",")
.append("networkCapabilities=").append(networkCapabilities)
.toString();
recordLastWifiNetwork(log);
}
// 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

View File

@@ -43,6 +43,7 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest {
public void setUp() throws Exception {
super.setUp();
when(mWifiInfo.makeCopy(anyLong())).thenReturn(mWifiInfo);
when(mWifiInfo.isPrimary()).thenReturn(true);
}
@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) {
// TODO: Not this, because this variable probably isn't sticking around.
mNetworkController.mWifiSignalController.setActivity(activity);