diff options
author | Matt Walliser <mattwalliser@google.com> | 2023-09-22 00:15:12 +0000 |
---|---|---|
committer | Matt Walliser <mattwalliser@google.com> | 2023-09-22 00:15:12 +0000 |
commit | 1f5e1793dce8ac34f8dcdaa80cb2ca03cd371c3e (patch) | |
tree | 474289c621c20170e4a5f7e0de067ba30366ffcd | |
parent | a51b136bd1d89d138bfc749e4a6fd42031aec5ee (diff) | |
download | wifi-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.java | 13 | ||||
-rw-r--r-- | libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java | 48 |
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) |