diff options
author | Roshan Pius <rpius@google.com> | 2020-05-27 12:48:29 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2020-05-27 12:51:56 -0700 |
commit | d8385620730a483b98a8db3b86b1a150450cf105 (patch) | |
tree | c9d68b7bcfade8a35042c5bf49f0a59846d06666 /service | |
parent | 2643b8eef2007c18d2e0e7d722e0372858bc66ed (diff) |
WifiNetworkSuggestionsManager: Only use approved suggestions externally
Only expose approved network suggestions to external modules, unapproved
suggestions by apps should not considered by platform for any behavior
changes.
Bug: 157579285
Test: atest com.android.server.wifi
Change-Id: I09925b4498d435f35115a1680562c3765c067ca3
Diffstat (limited to 'service')
3 files changed, 15 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WakeupController.java b/service/java/com/android/server/wifi/WakeupController.java index d9882dbf3..a92bdf7f1 100644 --- a/service/java/com/android/server/wifi/WakeupController.java +++ b/service/java/com/android/server/wifi/WakeupController.java @@ -347,7 +347,7 @@ public class WakeupController { } Set<WifiNetworkSuggestion> networkSuggestions = - mWifiNetworkSuggestionsManager.getAllNetworkSuggestions(); + mWifiNetworkSuggestionsManager.getAllApprovedNetworkSuggestions(); for (WifiNetworkSuggestion suggestion : networkSuggestions) { // TODO(b/127799111): Do we need to filter the list similar to saved networks above? goodNetworks.add( diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java index 8470d0c7d..bcf162275 100644 --- a/service/java/com/android/server/wifi/WifiConnectivityManager.java +++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java @@ -1635,7 +1635,7 @@ public class WifiConnectivityManager { } Set<WifiNetworkSuggestion> suggestionsNetworks = - mWifiNetworkSuggestionsManager.getAllNetworkSuggestions(); + mWifiNetworkSuggestionsManager.getAllApprovedNetworkSuggestions(); // If total size not equal to 1, then no need to proceed if (passpointNetworks.size() + savedNetworks.size() + suggestionsNetworks.size() != 1) { return false; diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java index f470039a7..5d5a7d782 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java +++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java @@ -1254,6 +1254,19 @@ public class WifiNetworkSuggestionsManager { } /** + * Returns a set of all network suggestions across all apps that have been approved by user. + */ + public Set<WifiNetworkSuggestion> getAllApprovedNetworkSuggestions() { + final String activeScorerPackage = mNetworkScoreManager.getActiveScorerPackage(); + return mActiveNetworkSuggestionsPerApp.values() + .stream() + .filter(e -> e.isApproved(activeScorerPackage)) + .flatMap(e -> convertToWnsSet(e.extNetworkSuggestions) + .stream()) + .collect(Collectors.toSet()); + } + + /** * Get all user approved, non-passpoint networks from suggestion. */ public List<WifiConfiguration> getAllScanOptimizationSuggestionNetworks() { |