diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiConfigManager.java | 6 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java | 27 |
2 files changed, 31 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java index db7e4c091..1fd3c5124 100644 --- a/service/java/com/android/server/wifi/WifiConfigManager.java +++ b/service/java/com/android/server/wifi/WifiConfigManager.java @@ -1269,8 +1269,10 @@ public class WifiConfigManager { Log.e(TAG, "Failed to add network to config map", e); return new NetworkUpdateResult(WifiConfiguration.INVALID_NETWORK_ID); } - // Add or update user saved network or saved passpoint network will re-enable network. - if (!newInternalConfig.fromWifiNetworkSuggestion) { + // Only re-enable network: 1. add or update user saved network; 2. add or update a user + // saved passpoint network framework consider it is a new network. + if (!newInternalConfig.fromWifiNetworkSuggestion + && (!newInternalConfig.isPasspoint() || newNetwork)) { userEnabledNetwork(newInternalConfig.networkId); } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java index 98c82b88e..244cad499 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java @@ -4736,6 +4736,33 @@ public class WifiConfigManagerTest extends WifiBaseTest { assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(openNetwork.SSID)); } + @Test + public void testUserAddPasspointNetworkEnableNetwork() { + WifiConfiguration passpointNetwork = WifiConfigurationTestUtil.createPasspointNetwork(); + List<WifiConfiguration> networks = new ArrayList<>(); + networks.add(passpointNetwork); + mWifiConfigManager.userTemporarilyDisabledNetwork(passpointNetwork.FQDN); + assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(passpointNetwork.FQDN)); + // Add new passpoint network will enable the network. + NetworkUpdateResult result = addNetworkToWifiConfigManager(passpointNetwork); + assertTrue(result.getNetworkId() != WifiConfiguration.INVALID_NETWORK_ID); + assertTrue(result.isNewNetwork()); + + List<WifiConfiguration> retrievedNetworks = + mWifiConfigManager.getConfiguredNetworksWithPasswords(); + WifiConfigurationTestUtil.assertConfigurationsEqualForConfigManagerAddOrUpdate( + networks, retrievedNetworks); + assertFalse(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(passpointNetwork.FQDN)); + + mWifiConfigManager.userTemporarilyDisabledNetwork(passpointNetwork.FQDN); + assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(passpointNetwork.FQDN)); + // Update a existing passpoint network will not enable network. + result = addNetworkToWifiConfigManager(passpointNetwork); + assertTrue(result.getNetworkId() != WifiConfiguration.INVALID_NETWORK_ID); + assertFalse(result.isNewNetwork()); + assertTrue(mWifiConfigManager.isNetworkTemporarilyDisabledByUser(passpointNetwork.FQDN)); + } + private void verifyExpiryOfTimeout(WifiConfiguration config) { // Disable the ephemeral network. long disableTimeMs = 546643L; |