Checks WEP password lengths of Wi-Fi network

- Checks for WEP40 and WEP104 password lengths (5 and 13 bytes)

Bug: 333289235
Flag: None
Test: unit test
atest -c WifiConfigController2Test

Change-Id: I5f96ad67ed0c67a2724960e72464dc0a56c0c1ab
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 1e40568..1606469 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -514,6 +514,12 @@
         submit.setEnabled(isSubmittable());
     }
 
+    boolean isValidWepPassword(String password) {
+        // Checks for WEP40 and WEP104 password lengths (5 and 13 bytes)
+        int passwordLen = (password != null) ? password.length() : -1;
+        return passwordLen == 5 || passwordLen == 13;
+    }
+
     boolean isValidPsk(String password) {
         if (password.length() == 64 && password.matches("[0-9A-Fa-f]{64}")) {
             return true;
@@ -535,7 +541,7 @@
         boolean passwordInvalid = false;
         if (mPasswordView != null
                 && ((mWifiEntrySecurity == WifiEntry.SECURITY_WEP
-                        && mPasswordView.length() == 0)
+                        && !isValidWepPassword(mPasswordView.getText().toString()))
                     || (mWifiEntrySecurity == WifiEntry.SECURITY_PSK
                            && !isValidPsk(mPasswordView.getText().toString()))
                     || (mWifiEntrySecurity == WifiEntry.SECURITY_SAE
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
index 7d96496..a531e3f 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
@@ -203,6 +203,39 @@
     }
 
     @Test
+    public void isSubmittable_wepPasswordLength5_returnTrue() {
+        when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+        createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+        final TextView password = mView.findViewById(R.id.password);
+        assertThat(password).isNotNull();
+        password.setText("12345");
+
+        assertThat(mController.isSubmittable()).isTrue();
+    }
+
+    @Test
+    public void isSubmittable_wepPasswordLength13_returnTrue() {
+        when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+        createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+        final TextView password = mView.findViewById(R.id.password);
+        assertThat(password).isNotNull();
+        password.setText("1234567890123");
+
+        assertThat(mController.isSubmittable()).isTrue();
+    }
+
+    @Test
+    public void isSubmittable_wepPasswordLength1_returnFalse() {
+        when(mWifiEntry.getSecurity()).thenReturn(WifiEntry.SECURITY_WEP);
+        createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
+        final TextView password = mView.findViewById(R.id.password);
+        assertThat(password).isNotNull();
+        password.setText("1");
+
+        assertThat(mController.isSubmittable()).isFalse();
+    }
+
+    @Test
     public void isSubmittable_longPsk_shouldReturnFalse() {
         createController(mWifiEntry, WifiConfigUiBase2.MODE_CONNECT, false);
         final TextView password = mView.findViewById(R.id.password);