diff options
author | Quang Luong <qal@google.com> | 2021-09-16 04:02:29 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-09-16 04:02:29 +0000 |
commit | 73c64c50c0ca38c0ad0abd739e69a43898acb906 (patch) | |
tree | 9b40c399118bfe7f7c34b6c1b679df8a7d87b6c1 | |
parent | 34a8df974aabbb10999ce7ee80088919e344765f (diff) | |
parent | 731bcb99abc489f1bcab3740be91b321328c6976 (diff) | |
download | wifi-73c64c50c0ca38c0ad0abd739e69a43898acb906.tar.gz |
WifiTracker: Update suggestion user shareablilty after scan am: 731bcb99ab
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/net/wifi/+/15829333
Change-Id: I5808583454a82d3e74f95b286e41df74e645f637
-rw-r--r-- | libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java | 15 | ||||
-rw-r--r-- | libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java | 44 |
2 files changed, 53 insertions, 6 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java index 469e43ce9..e97aa28b6 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java @@ -500,25 +500,28 @@ public class WifiPickerTracker extends BaseWifiTracker { private void updateSuggestedWifiEntryScans(@NonNull List<ScanResult> scanResults) { checkNotNull(scanResults, "Scan Result list should not be null!"); + // Get every ScanResultKey that is user shareable + final Set<StandardWifiEntryKey> userSharedEntryKeys = + mWifiManager.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(scanResults) + .stream() + .map(StandardWifiEntryKey::new) + .collect(Collectors.toSet()); + // Group scans by ScanResultKey key final Map<ScanResultKey, List<ScanResult>> scanResultsByKey = scanResults.stream() .filter(scan -> !TextUtils.isEmpty(scan.SSID)) .collect(Collectors.groupingBy(ScanResultKey::new)); - // Iterate through current entries and update each entry's scan results + // Iterate through current entries and update each entry's scan results and shareability. final Set<StandardWifiEntryKey> seenEntryKeys = new ArraySet<>(); mSuggestedWifiEntryCache.forEach(entry -> { final StandardWifiEntryKey entryKey = entry.getStandardWifiEntryKey(); seenEntryKeys.add(entryKey); // Update scan results if available, or set to null. entry.updateScanResultInfo(scanResultsByKey.get(entryKey.getScanResultKey())); + entry.setUserShareable(userSharedEntryKeys.contains(entryKey)); }); // Create new StandardWifiEntry objects for each leftover config with scan results. - final Set<StandardWifiEntryKey> userSharedEntryKeys = - mWifiManager.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(scanResults) - .stream() - .map(StandardWifiEntryKey::new) - .collect(Collectors.toSet()); for (StandardWifiEntryKey entryKey : mSuggestedConfigCache.keySet()) { final ScanResultKey scanKey = entryKey.getScanResultKey(); if (seenEntryKeys.contains(entryKey) diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java index 122d4b6f9..dd487e9f6 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/WifiPickerTrackerTest.java @@ -852,6 +852,50 @@ public class WifiPickerTrackerTest { .count()).isEqualTo(1); } + /** + * Tests that a suggestion entry created before scan results are available will be updated to + * user shareable after scans become available. + */ + @Test + public void testGetWifiEntries_preConnectedSuggestion_becomesUserShareable() { + WifiConfiguration suggestionConfig = new WifiConfiguration(); + suggestionConfig.SSID = "\"ssid\""; + suggestionConfig.networkId = 1; + suggestionConfig.creatorName = "creator"; + suggestionConfig.carrierId = 1; + suggestionConfig.subscriptionId = 1; + suggestionConfig.fromWifiNetworkSuggestion = true; + // Initial entries + when(mMockWifiManager.getPrivilegedConfiguredNetworks()).thenReturn( + Arrays.asList(suggestionConfig)); + when(mMockWifiInfo.getNetworkId()).thenReturn(suggestionConfig.networkId); + when(mMockWifiInfo.getRssi()).thenReturn(-50); + when(mMockNetworkInfo.getDetailedState()).thenReturn(NetworkInfo.DetailedState.CONNECTED); + final WifiPickerTracker wifiPickerTracker = createTestWifiPickerTracker(); + wifiPickerTracker.onStart(); + verify(mMockContext).registerReceiver(mBroadcastReceiverCaptor.capture(), + any(), any(), any()); + mTestLooper.dispatchAll(); + WifiEntry suggestionEntry = wifiPickerTracker.getConnectedWifiEntry(); + assertThat(suggestionEntry).isNotNull(); + + // Update with user-shareable scan results for the suggestion + when(mMockWifiManager.getScanResults()).thenReturn(Collections.singletonList( + buildScanResult("ssid", "bssid", START_MILLIS))); + when(mMockWifiManager.getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(any())) + .thenReturn(Arrays.asList(suggestionConfig)); + mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, + new Intent(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); + // Disconnect from network to verify its usershareability in the picker list + mBroadcastReceiverCaptor.getValue().onReceive(mMockContext, + new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)); + mTestLooper.dispatchAll(); + + // Suggestion entry should be in picker list now + suggestionEntry = wifiPickerTracker.getWifiEntries().get(0); + assertThat(suggestionEntry.isSuggestion()).isTrue(); + } + @Test public void testGetConnectedEntry_alreadyConnectedToPasspoint_returnsPasspointEntry() { final String fqdn = "fqdn"; |