diff options
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java | 51 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java | 15 |
2 files changed, 43 insertions, 23 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java index 2c2ca3becd4a..06969167b658 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java @@ -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 diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java index 687ca601bd6e..521b958ab891 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java @@ -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); |