diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java index 9a29c1cf030..f92b58fbd1c 100644 --- a/src/com/android/settings/wifi/WifiConfigController2.java +++ b/src/com/android/settings/wifi/WifiConfigController2.java @@ -592,28 +592,32 @@ public class WifiConfigController2 implements TextWatcher, return null; } - WifiConfiguration config = new WifiConfiguration(); - + WifiConfiguration config; if (mWifiEntry == null) { + config = new WifiConfiguration(); config.SSID = "\"" + mSsidView.getText().toString() + "\""; // If the user adds a network manually, assume that it is hidden. config.hiddenSSID = mHiddenSettingsSpinner.getSelectedItemPosition() == HIDDEN_NETWORK; - } else if (!mWifiEntry.isSaved()) { - config.SSID = "\"" + mWifiEntry.getTitle() + "\""; + } else if (mWifiEntry.isSaved()) { + config = new WifiConfiguration(mWifiEntry.getWifiConfiguration()); } else { - config.networkId = mWifiEntry.getWifiConfiguration().networkId; - config.hiddenSSID = mWifiEntry.getWifiConfiguration().hiddenSSID; + config = new WifiConfiguration(); + config.SSID = "\"" + mWifiEntry.getTitle() + "\""; } config.shared = mSharedCheckBox.isChecked(); switch (mWifiEntrySecurity) { case WifiEntry.SECURITY_NONE: - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OPEN); + } break; case WifiEntry.SECURITY_WEP: - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_WEP); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_WEP); + } if (mPasswordView.length() != 0) { int length = mPasswordView.length(); String password = mPasswordView.getText().toString(); @@ -628,7 +632,9 @@ public class WifiConfigController2 implements TextWatcher, break; case WifiEntry.SECURITY_PSK: - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_PSK); + } if (mPasswordView.length() != 0) { String password = mPasswordView.getText().toString(); if (password.matches("[0-9A-Fa-f]{64}")) { @@ -642,13 +648,16 @@ public class WifiConfigController2 implements TextWatcher, case WifiEntry.SECURITY_EAP: case WifiEntry.SECURITY_EAP_WPA3_ENTERPRISE: case WifiEntry.SECURITY_EAP_SUITE_B: - if (mWifiEntrySecurity == WifiEntry.SECURITY_EAP_SUITE_B) { - // allowedSuiteBCiphers will be set according to certificate type - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); - } else if (mWifiEntrySecurity == WifiEntry.SECURITY_EAP_WPA3_ENTERPRISE) { - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE); - } else { - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + if (mWifiEntrySecurity == WifiEntry.SECURITY_EAP_SUITE_B) { + // allowedSuiteBCiphers will be set according to certificate type + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B); + } else if (mWifiEntrySecurity == WifiEntry.SECURITY_EAP_WPA3_ENTERPRISE) { + config.setSecurityParams( + WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE); + } else { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); + } } config.enterpriseConfig = new WifiEnterpriseConfig(); int eapMethod = mEapMethodSpinner.getSelectedItemPosition(); @@ -790,7 +799,9 @@ public class WifiConfigController2 implements TextWatcher, } break; case WifiEntry.SECURITY_SAE: - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_SAE); + } if (mPasswordView.length() != 0) { String password = mPasswordView.getText().toString(); config.preSharedKey = '"' + password + '"'; @@ -798,7 +809,9 @@ public class WifiConfigController2 implements TextWatcher, break; case WifiEntry.SECURITY_OWE: - config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); + if (mWifiEntry == null || !mWifiEntry.isSaved()) { + config.setSecurityParams(WifiConfiguration.SECURITY_TYPE_OWE); + } break; default: diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java index ad086b7dce8..faaa0fa917f 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java @@ -470,7 +470,7 @@ public class WifiConfigController2Test { private void checkSavedMacRandomizedValue(int macRandomizedValue) { when(mWifiEntry.isSaved()).thenReturn(true); - final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); + final WifiConfiguration mockWifiConfig = spy(new WifiConfiguration()); when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class)); when(mWifiEntry.getWifiConfiguration()).thenReturn(mockWifiConfig); mockWifiConfig.macRandomizationSetting = macRandomizedValue; @@ -809,9 +809,10 @@ public class WifiConfigController2Test { private void setUpModifyingSavedPeapConfigController() { when(mWifiEntry.isSaved()).thenReturn(true); when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_EAP); - final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); + final WifiConfiguration mockWifiConfig = spy(new WifiConfiguration()); + mockWifiConfig.setSecurityParams(WifiConfiguration.SECURITY_TYPE_EAP); when(mockWifiConfig.getIpConfiguration()).thenReturn(mock(IpConfiguration.class)); - final WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class); + final WifiEnterpriseConfig mockWifiEnterpriseConfig = spy(new WifiEnterpriseConfig()); when(mockWifiEnterpriseConfig.getEapMethod()).thenReturn(Eap.PEAP); mockWifiConfig.enterpriseConfig = mockWifiEnterpriseConfig; when(mWifiEntry.getWifiConfiguration()).thenReturn(mockWifiConfig); @@ -980,8 +981,8 @@ public class WifiConfigController2Test { private void setUpModifyingSavedCertificateConfigController(String savedCaCertificate, String savedUserCertificate) { - final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); - final WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class); + final WifiConfiguration mockWifiConfig = spy(new WifiConfiguration()); + final WifiEnterpriseConfig mockWifiEnterpriseConfig = spy(new WifiEnterpriseConfig()); mockWifiConfig.enterpriseConfig = mockWifiEnterpriseConfig; when(mWifiEntry.isSaved()).thenReturn(true);