From 31a79feccda7792402f77b9cf8bd9c394e9b9f19 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Thu, 5 Sep 2019 14:56:56 +0800 Subject: [PATCH] [Wi-Fi] Can't change EAP method for a saved enterprise Wi-Fi network Should only allow saved network UI initialization for once. Bug: 140362368 Test: WifiConfigControllerTest manual: Manually change EAP method and other security fields for a saved Wi-Fi neterprise network. Change-Id: Iddc1dae53849760f43b41b75262358dff6ba09af Merged-In: Iddc1dae53849760f43b41b75262358dff6ba09af --- .../settings/wifi/WifiConfigController.java | 4 +++- .../wifi/WifiConfigControllerTest.java | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index 8e0da6b1181..12d5a9082ad 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -987,7 +987,9 @@ public class WifiConfigController implements TextWatcher, } mView.findViewById(R.id.eap).setVisibility(View.VISIBLE); + boolean initiateEnterpriseNetworkUi = false; if (mEapMethodSpinner == null) { + initiateEnterpriseNetworkUi = true; mEapMethodSpinner = (Spinner) mView.findViewById(R.id.method); mEapMethodSpinner.setOnItemSelectedListener(this); mPhase2Spinner = (Spinner) mView.findViewById(R.id.phase2); @@ -1045,7 +1047,7 @@ public class WifiConfigController implements TextWatcher, } // Modifying an existing network - if (mAccessPoint != null && mAccessPoint.isSaved()) { + if (initiateEnterpriseNetworkUi && mAccessPoint != null && mAccessPoint.isSaved()) { final WifiEnterpriseConfig enterpriseConfig = mAccessPoint.getConfig().enterpriseConfig; final int eapMethod = enterpriseConfig.getEapMethod(); final int phase2Method = enterpriseConfig.getPhase2Method(); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java index dd7ecde0063..669a2e68436 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java @@ -28,6 +28,8 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiEnterpriseConfig; +import android.net.wifi.WifiEnterpriseConfig.Eap; import android.net.wifi.WifiManager; import android.os.ServiceSpecificException; import android.security.KeyStore; @@ -469,4 +471,22 @@ public class WifiConfigControllerTest { final int selectedItemPosition = eapMethodSpinner.getSelectedItemPosition(); assertThat(eapMethodSpinner.getSelectedItem().toString()).isEqualTo("TLS"); } + + @Test + public void selectEapMethod_savedAccessPoint_shouldGetCorrectPosition() { + when(mAccessPoint.isSaved()).thenReturn(true); + when(mAccessPoint.getSecurity()).thenReturn(AccessPoint.SECURITY_EAP); + final WifiConfiguration mockWifiConfig = mock(WifiConfiguration.class); + final WifiEnterpriseConfig mockWifiEnterpriseConfig = mock(WifiEnterpriseConfig.class); + when(mockWifiEnterpriseConfig.getEapMethod()).thenReturn(Eap.PEAP); + mockWifiConfig.enterpriseConfig = mockWifiEnterpriseConfig ; + when(mAccessPoint.getConfig()).thenReturn(mockWifiConfig); + mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint, + WifiConfigUiBase.MODE_MODIFY); + final Spinner eapMethodSpinner = mView.findViewById(R.id.method); + + eapMethodSpinner.setSelection(Eap.TLS); + + assertThat(eapMethodSpinner.getSelectedItemPosition()).isEqualTo(Eap.TLS); + } }