Merge "WifiConfiguration: Add a method to check if keymgmt needs preShareKey" into rvc-dev
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index b110a61..71f0ab8 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -2973,4 +2973,15 @@
      */
     public boolean isMostRecentlyConnected = false;
 
+    /**
+     * Whether the key mgmt indicates if the WifiConfiguration needs a preSharedKey or not.
+     * @return true if preSharedKey is needed, false otherwise.
+     * @hide
+     */
+    public boolean needsPreSharedKey() {
+        return allowedKeyManagement.get(KeyMgmt.WPA_PSK)
+                || allowedKeyManagement.get(KeyMgmt.SAE)
+                || allowedKeyManagement.get(KeyMgmt.WAPI_PSK);
+    }
+
 }
diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
index e210e4f..a7b6765 100644
--- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
@@ -16,9 +16,13 @@
 
 package android.net.wifi;
 
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP;
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B;
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OPEN;
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_OWE;
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_PSK;
 import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_SAE;
+import static android.net.wifi.WifiConfiguration.SECURITY_TYPE_WAPI_PSK;
 
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -507,4 +511,30 @@
         assertEquals(NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED,
                 status2.getNetworkSelectionStatus());
     }
+
+    @Test
+    public void testNeedsPreSharedKey() throws Exception {
+        WifiConfiguration configuration = new WifiConfiguration();
+
+        configuration.setSecurityParams(SECURITY_TYPE_PSK);
+        assertTrue(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_SAE);
+        assertTrue(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_WAPI_PSK);
+        assertTrue(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_OPEN);
+        assertFalse(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_OWE);
+        assertFalse(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_EAP);
+        assertFalse(configuration.needsPreSharedKey());
+
+        configuration.setSecurityParams(SECURITY_TYPE_EAP_SUITE_B);
+        assertFalse(configuration.needsPreSharedKey());
+    }
 }