summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Jiang <qiangjiang@google.com>2020-05-04 17:23:20 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-05-04 17:23:20 +0000
commit4919b27fa45208b0a7d48b534e395a2baaf9d335 (patch)
tree79f8a3dfa29c6f442719957a3ff27ccb335a9a5a
parent4d16a9c59e1ae60f327593f658ac7394b020326a (diff)
parent412814b217444fb8799956d5e629565aaaae24ad (diff)
Merge "[Suggestion] Add or remove suggestion before userData loaded will fail." into rvc-dev am: 412814b217
Change-Id: I74813382bee2e0c829f90e9cea5f4517eb668997
-rw-r--r--service/java/com/android/server/wifi/WifiCarrierInfoManager.java3
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java16
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java21
3 files changed, 38 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiCarrierInfoManager.java b/service/java/com/android/server/wifi/WifiCarrierInfoManager.java
index a0dcfe9f5..f35f59047 100644
--- a/service/java/com/android/server/wifi/WifiCarrierInfoManager.java
+++ b/service/java/com/android/server/wifi/WifiCarrierInfoManager.java
@@ -176,8 +176,9 @@ public class WifiCarrierInfoManager {
@Override
public void fromDeserialized(Map<Integer, Boolean> imsiProtectionExemptionMap) {
- mUserDataLoaded = true;
+ mImsiPrivacyProtectionExemptionMap.clear();
mImsiPrivacyProtectionExemptionMap.putAll(imsiProtectionExemptionMap);
+ mUserDataLoaded = true;
}
@Override
diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
index b83af52f2..8eb5a337a 100644
--- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
+++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
@@ -372,6 +372,7 @@ public class WifiNetworkSuggestionsManager {
*/
private boolean mUserApprovalUiActive = false;
+ private boolean mUserDataLoaded = false;
/**
* Listener for app-ops changes for active suggestor apps.
*/
@@ -434,6 +435,7 @@ public class WifiNetworkSuggestionsManager {
@Override
public void fromDeserialized(Map<String, PerAppInfo> networkSuggestionsMap) {
+ mActiveNetworkSuggestionsPerApp.clear();
mActiveNetworkSuggestionsPerApp.putAll(networkSuggestionsMap);
// Build the scan cache.
for (Map.Entry<String, PerAppInfo> entry : networkSuggestionsMap.entrySet()) {
@@ -457,10 +459,12 @@ public class WifiNetworkSuggestionsManager {
}
}
}
+ mUserDataLoaded = true;
}
@Override
public void reset() {
+ mUserDataLoaded = false;
mActiveNetworkSuggestionsPerApp.clear();
mActiveScanResultMatchInfoWithBssid.clear();
mActiveScanResultMatchInfoWithNoBssid.clear();
@@ -802,6 +806,10 @@ public class WifiNetworkSuggestionsManager {
public @WifiManager.NetworkSuggestionsStatusCode int add(
List<WifiNetworkSuggestion> networkSuggestions, int uid, String packageName,
@Nullable String featureId) {
+ if (!mUserDataLoaded) {
+ Log.e(TAG, "Add Network suggestion before boot complete is not allowed.");
+ return WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL;
+ }
if (networkSuggestions == null || networkSuggestions.isEmpty()) {
Log.w(TAG, "Empty list of network suggestions for " + packageName + ". Ignoring");
return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS;
@@ -1067,6 +1075,10 @@ public class WifiNetworkSuggestionsManager {
*/
public @WifiManager.NetworkSuggestionsStatusCode int remove(
List<WifiNetworkSuggestion> networkSuggestions, int uid, String packageName) {
+ if (!mUserDataLoaded) {
+ Log.e(TAG, "Remove Network suggestion before boot complete is not allowed.");
+ return WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL;
+ }
if (networkSuggestions == null) {
Log.w(TAG, "Null list of network suggestions for " + packageName + ". Ignoring");
return WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS;
@@ -1123,6 +1135,10 @@ public class WifiNetworkSuggestionsManager {
*/
public @NonNull List<WifiNetworkSuggestion> get(@NonNull String packageName) {
List<WifiNetworkSuggestion> networkSuggestionList = new ArrayList<>();
+ if (!mUserDataLoaded) {
+ Log.e(TAG, "Get Network suggestion before boot complete is not allowed.");
+ return networkSuggestionList;
+ }
PerAppInfo perAppInfo = mActiveNetworkSuggestionsPerApp.get(packageName);
// if App never suggested return empty list.
if (perAppInfo == null) return networkSuggestionList;
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
index 79c9c0a3e..f2f9c8ad4 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
@@ -262,6 +262,7 @@ public class WifiNetworkSuggestionsManagerTest extends WifiBaseTest {
verify(mWifiInjector).makeNetworkSuggestionStoreData(dataSourceArgumentCaptor.capture());
mDataSource = dataSourceArgumentCaptor.getValue();
assertNotNull(mDataSource);
+ mDataSource.fromDeserialized(Collections.EMPTY_MAP);
verify(mWifiCarrierInfoManager).addImsiExemptionUserApprovalListener(
mUserApproveCarrierListenerArgumentCaptor.capture());
@@ -374,6 +375,24 @@ public class WifiNetworkSuggestionsManagerTest extends WifiBaseTest {
assertEquals(maxSizesCaptor.getValue(), new ArrayList<Integer>() {{ add(1); add(1); }});
}
+ /**
+ * Add or remove suggestion before user data store loaded will fail.
+ */
+ @Test
+ public void testAddRemoveSuggestionBeforeUserDataLoaded() {
+ // Clear the data source, and user data store is not loaded
+ mDataSource.reset();
+ WifiNetworkSuggestion networkSuggestion = new WifiNetworkSuggestion(
+ WifiConfigurationTestUtil.createOpenNetwork(), null, false, false, true, true);
+ List<WifiNetworkSuggestion> networkSuggestionList = Arrays.asList(networkSuggestion);
+ assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL,
+ mWifiNetworkSuggestionsManager.add(networkSuggestionList, TEST_UID_1,
+ TEST_PACKAGE_1, TEST_FEATURE));
+ assertEquals(WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_INTERNAL,
+ mWifiNetworkSuggestionsManager.remove(networkSuggestionList, TEST_UID_1,
+ TEST_PACKAGE_1));
+ }
+
@Test
public void testAddRemoveEnterpriseNetworkSuggestion() {
WifiNetworkSuggestion networkSuggestion1 = new WifiNetworkSuggestion(
@@ -3676,7 +3695,7 @@ public class WifiNetworkSuggestionsManagerTest extends WifiBaseTest {
.add(networkSuggestionList, TEST_UID_1, TEST_PACKAGE_1, TEST_FEATURE));
mWifiNetworkSuggestionsManager.setHasUserApprovedForApp(true, TEST_PACKAGE_1);
when(mLruConnectionTracker.isMostRecentlyConnected(any())).thenReturn(true);
- Map<String, PerAppInfo> suggestionStore = mDataSource.toSerialize();
+ Map<String, PerAppInfo> suggestionStore = new HashMap<>(mDataSource.toSerialize());
PerAppInfo perAppInfo = suggestionStore.get(TEST_PACKAGE_1);
ExtendedWifiNetworkSuggestion ewns = perAppInfo.extNetworkSuggestions.iterator().next();
assertTrue(ewns.wns.wifiConfiguration.isMostRecentlyConnected);