Merge "Still check the visibility of view"
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 2e6611f..d6c1931 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -123,7 +123,8 @@
     private final ArrayAdapter<String> mPhase2FullAdapter;
 
     // e.g. AccessPoint.SECURITY_NONE
-    private int mAccessPointSecurity;
+    @VisibleForTesting
+    int mAccessPointSecurity;
     private TextView mPasswordView;
 
     private String mUnspecifiedCertString;
@@ -465,7 +466,8 @@
         } else {
             enabled = ipAndProxyFieldsAreValid();
         }
-        if (mAccessPointSecurity == AccessPoint.SECURITY_EAP) {
+        if (mAccessPointSecurity == AccessPoint.SECURITY_EAP && mEapCaCertSpinner != null
+                && mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
             String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
             if (caCertSelection.equals(mUnspecifiedCertString)) {
                 // Disallow submit if the user has not selected a CA certificate for an EAP network
@@ -481,7 +483,8 @@
                 enabled = false;
             }
         }
-        if (mAccessPointSecurity == AccessPoint.SECURITY_EAP
+        if (mAccessPointSecurity == AccessPoint.SECURITY_EAP && mEapUserCertSpinner != null
+                && mView.findViewById(R.id.l_user_cert).getVisibility() != View.GONE
                 && mEapUserCertSpinner.getSelectedItem().equals(mUnspecifiedCertString)) {
             // Disallow submit if the user has not selected a user certificate for an EAP network
             // configuration.
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
index 54be773..471c991 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
@@ -57,11 +57,10 @@
     @Mock
     private Context mContext;
     @Mock
-    private View mView;
-    @Mock
     private AccessPoint mAccessPoint;
     @Mock
     private KeyStore mKeyStore;
+    private View mView;
     private Spinner mHiddenSettingsSpinner;
 
     public WifiConfigController mController;
@@ -74,6 +73,7 @@
     private static final String SHORT_PSK = "abcdefg";
     // Valid PSK pass phrase
     private static final String GOOD_PSK = "abcdefghijklmnopqrstuvwxyz";
+    private static final String GOOD_SSID = "abc";
     private static final int DHCP = 0;
 
     @Before
@@ -185,6 +185,9 @@
 
     @Test
     public void isSubmittable_EapToPskWithValidPassword_shouldReturnTrue() {
+        mController = new TestWifiConfigController(mConfigUiBase, mView, null,
+                WifiConfigUiBase.MODE_CONNECT);
+        final TextView ssid = mView.findViewById(R.id.ssid);
         final TextView password = mView.findViewById(R.id.password);
         final Spinner securitySpinner = mView.findViewById(R.id.security);
         assertThat(password).isNotNull();
@@ -195,6 +198,16 @@
         mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_EAP, 0);
         mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_PSK, 0);
         password.setText(GOOD_PSK);
+        ssid.setText(GOOD_SSID);
+
+        assertThat(mController.isSubmittable()).isTrue();
+    }
+
+    @Test
+    public void isSubmittable_EapWithAkaMethod_shouldReturnTrue() {
+        when(mAccessPoint.isSaved()).thenReturn(true);
+        mController.mAccessPointSecurity = AccessPoint.SECURITY_EAP;
+        mView.findViewById(R.id.l_ca_cert).setVisibility(View.GONE);
 
         assertThat(mController.isSubmittable()).isTrue();
     }