Update WifiConfigManager when autojoin changed
Bug: 168573596
Test: atest com.android.server.wifi
Change-Id: I5041dc70ee4cffeb18da25986ce1e68b06db6149
diff --git a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
index 464ced0..aa860d8 100644
--- a/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
+++ b/service/java/com/android/server/wifi/WifiNetworkSuggestionsManager.java
@@ -1242,6 +1242,10 @@
mWifiInjector.getPasspointManager()
.enableAutojoin(ewns.wns.passpointConfiguration.getUniqueId(),
null, ewns.isAutojoinEnabled);
+ } else {
+ // Update WifiConfigManager to sync auto-join.
+ updateWifiConfigInWcmIfPresent(ewns.createInternalWifiConfiguration(),
+ ewns.perAppInfo.uid, ewns.perAppInfo.packageName);
}
}
}
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index 9cb4254..24ad3df 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -602,7 +602,11 @@
? UserActionEvent.EVENT_CONFIGURE_AUTO_CONNECT_ON
: UserActionEvent.EVENT_CONFIGURE_AUTO_CONNECT_OFF,
provider.isFromSuggestion(), true);
+ // Update WifiConfigManager if changed.
+ updateWifiConfigInWcmIfPresent(provider.getWifiConfig(), provider.getCreatorUid(),
+ provider.getPackageName(), provider.isFromSuggestion());
}
+
mWifiConfigManager.saveToStore(true);
return true;
}
@@ -618,6 +622,10 @@
? UserActionEvent.EVENT_CONFIGURE_AUTO_CONNECT_ON
: UserActionEvent.EVENT_CONFIGURE_AUTO_CONNECT_OFF,
provider.isFromSuggestion(), true);
+ // Update WifiConfigManager if changed.
+ updateWifiConfigInWcmIfPresent(provider.getWifiConfig(),
+ provider.getCreatorUid(), provider.getPackageName(),
+ provider.isFromSuggestion());
}
found = true;
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
index 38a0026..873c3b1 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSuggestionsManagerTest.java
@@ -3600,23 +3600,30 @@
TEST_PACKAGE_1, TEST_FEATURE));
verifyNoMoreInteractions(mNotificationManger);
- Set<ExtendedWifiNetworkSuggestion> matchedSuggestion = mWifiNetworkSuggestionsManager
+ Set<ExtendedWifiNetworkSuggestion> matchedSuggestions = mWifiNetworkSuggestionsManager
.getNetworkSuggestionsForScanDetail(createScanDetailForNetwork(eapSimConfig));
verify(mWifiCarrierInfoManager)
.sendImsiProtectionExemptionNotificationIfRequired(TEST_CARRIER_ID);
- for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestion) {
+ for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestions) {
assertFalse(ewns.isAutojoinEnabled);
}
// Simulate user approved carrier
+ eapSimConfig.fromWifiNetworkSuggestion = true;
+ eapSimConfig.creatorUid = TEST_UID_1;
+ eapSimConfig.creatorName = TEST_PACKAGE_1;
+ when(mWifiConfigManager.getConfiguredNetwork(anyString())).thenReturn(eapSimConfig);
+ when(mWifiConfigManager.addOrUpdateNetwork(any(), anyInt(), anyString()))
+ .thenReturn(new NetworkUpdateResult(TEST_NETWORK_ID));
mUserApproveCarrierListenerArgumentCaptor.getValue().onUserAllowed(TEST_CARRIER_ID);
when(mWifiCarrierInfoManager.hasUserApprovedImsiPrivacyExemptionForCarrier(TEST_CARRIER_ID))
.thenReturn(true);
verify(mPasspointManager).enableAutojoin(anyString(), any(), anyBoolean());
- matchedSuggestion = mWifiNetworkSuggestionsManager
+ verify(mWifiConfigManager).addOrUpdateNetwork(any(), anyInt(), anyString());
+ matchedSuggestions = mWifiNetworkSuggestionsManager
.getNetworkSuggestionsForScanDetail(createScanDetailForNetwork(eapSimConfig));
- for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestion) {
+ for (ExtendedWifiNetworkSuggestion ewns : matchedSuggestions) {
assertTrue(ewns.isAutojoinEnabled);
}
}