summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Walliser <mattwalliser@google.com>2023-09-22 00:15:12 +0000
committerMatt Walliser <mattwalliser@google.com>2023-09-22 00:15:12 +0000
commit1f5e1793dce8ac34f8dcdaa80cb2ca03cd371c3e (patch)
tree474289c621c20170e4a5f7e0de067ba30366ffcd
parenta51b136bd1d89d138bfc749e4a6fd42031aec5ee (diff)
downloadwifi-1f5e1793dce8ac34f8dcdaa80cb2ca03cd371c3e.tar.gz
Remove known network and hotspot network entries from handleServiceDisconnected.
Bug: 301515795 Fixes: 301515795 Test: atest -c com.android.wifitrackerlib.WifiPickerTrackerTest Change-Id: Ia0535f2acbc23b0c19e985157c2898e54c2b2048
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java13
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java48
2 files changed, 61 insertions, 0 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
index bb52cf659..4abffbaf8 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
@@ -520,6 +520,19 @@ public class WifiPickerTracker extends BaseWifiTracker {
}
}
+ @TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
+ @WorkerThread
+ @Override
+ protected void handleServiceDisconnected() {
+ if (mInjector.isSharedConnectivityFeatureEnabled()) {
+ mKnownNetworkDataCache.clear();
+ mHotspotNetworkDataCache.clear();
+ mKnownNetworkEntryCache.clear();
+ mHotspotNetworkEntryCache.clear();
+ updateWifiEntries();
+ }
+ }
+
/**
* Update the list returned by getWifiEntries() with the current states of the entry caches.
*/
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
index 737e46500..ee6c4199c 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java
@@ -2246,6 +2246,54 @@ public class WifiPickerTrackerTest {
}
@Test
+ public void testSharedConnectivityManager_onServiceDisconnected_networksCleared() {
+ final KnownNetwork testKnownNetwork = new KnownNetwork.Builder()
+ .setNetworkSource(KnownNetwork.NETWORK_SOURCE_NEARBY_SELF)
+ .setSsid("ssid")
+ .addSecurityType(SECURITY_TYPE_PSK)
+ .addSecurityType(SECURITY_TYPE_SAE)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .build())
+ .build();
+ when(mMockSharedConnectivityManager.getKnownNetworks()).thenReturn(
+ Collections.singletonList(testKnownNetwork));
+ when(mMockWifiManager.getScanResults()).thenReturn(
+ Collections.singletonList(buildScanResult("ssid", "bssid", START_MILLIS,
+ "[PSK/SAE]")));
+ final HotspotNetwork testHotspotNetwork = new HotspotNetwork.Builder()
+ .setDeviceId(1)
+ .setNetworkProviderInfo(new NetworkProviderInfo
+ .Builder("My Phone", "Pixel 7")
+ .setDeviceType(NetworkProviderInfo.DEVICE_TYPE_PHONE)
+ .setBatteryPercentage(100)
+ .setConnectionStrength(3)
+ .build())
+ .setHostNetworkType(HotspotNetwork.NETWORK_TYPE_CELLULAR)
+ .setNetworkName("Google Fi")
+ .build();
+ when(mMockSharedConnectivityManager.getHotspotNetworks()).thenReturn(
+ Collections.singletonList(testHotspotNetwork));
+ final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker();
+ wifiPickerTracker.onStart();
+ mTestLooper.dispatchAll();
+ verify(mMockSharedConnectivityManager).registerCallback(any(),
+ mSharedConnectivityCallbackCaptor.capture());
+ mSharedConnectivityCallbackCaptor.getValue().onServiceConnected();
+ mTestLooper.dispatchAll();
+
+ mSharedConnectivityCallbackCaptor.getValue().onServiceDisconnected();
+
+ assertThat(wifiPickerTracker.getWifiEntries().stream().filter(
+ entry -> entry instanceof KnownNetworkEntry).toList()).isEmpty();
+ assertThat(wifiPickerTracker.getWifiEntries().stream().filter(
+ entry -> entry instanceof HotspotNetworkEntry).toList()).isEmpty();
+ }
+
+ @Test
public void testKnownNetworks_noMatchingScanResult_entryNotIncluded() {
final KnownNetwork testKnownNetwork = new KnownNetwork.Builder()
.setNetworkSource(KnownNetwork.NETWORK_SOURCE_NEARBY_SELF)