summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-01-03 04:37:38 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-01-03 04:37:38 +0000
commit75688f77ab3e0ce1635c9d6863f4f39fe7adef82 (patch)
treeed2a8cbc8d44d4f0e2ca728ef7d34b4381cecf82
parent955f757705614061372fa942cc5a06e06980f97f (diff)
parent18e215d357c6ac8ad2e5ed67b7aa110f9a0b2d03 (diff)
Merge "[Wi-Fi] Implement WifiEntry#canShare & WifiEntry#canEasyConnect"
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java42
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java84
2 files changed, 122 insertions, 4 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
index 244ba0224..149ba45a6 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
@@ -297,16 +297,50 @@ class StandardWifiEntry extends WifiEntry {
// TODO(b/70983952): Fill this method in
}
+ /**
+ * Returns whether the network can be shared via QR code.
+ * See https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
+ */
@Override
public boolean canShare() {
- // TODO(b/70983952): Fill this method in
- return false;
+ if (!isSaved()) {
+ return false;
+ }
+
+ switch (mSecurity) {
+ case SECURITY_PSK:
+ case SECURITY_WEP:
+ case SECURITY_NONE:
+ case SECURITY_SAE:
+ case SECURITY_OWE:
+ return true;
+ default:
+ return false;
+ }
}
+ /**
+ * Returns whether the user can use Easy Connect to onboard a device to the network.
+ * See https://www.wi-fi.org/discover-wi-fi/wi-fi-easy-connect
+ */
@Override
public boolean canEasyConnect() {
- // TODO(b/70983952): Fill this method in
- return false;
+ if (!isSaved()) {
+ return false;
+ }
+
+ if (!mWifiManager.isEasyConnectSupported()) {
+ return false;
+ }
+
+ // DPP 1.0 only supports SAE and PSK.
+ switch (mSecurity) {
+ case SECURITY_SAE:
+ case SECURITY_PSK:
+ return true;
+ default:
+ return false;
+ }
}
@Override
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
index 340c4736b..bb5f814bd 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java
@@ -420,4 +420,88 @@ public class StandardWifiEntryTest {
assertThat(macAddress).isEqualTo(factoryMac);
}
+
+ @Test
+ public void testCanShare_securityCanShare_shouldReturnTrue() {
+ final StandardWifiEntry pskWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_PSK);
+ final StandardWifiEntry wepWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_WEP);
+ final StandardWifiEntry openWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_OPEN);
+ final StandardWifiEntry saeWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_SAE);
+ final StandardWifiEntry oweWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_OWE);
+
+ assertThat(pskWifiEntry.canShare()).isTrue();
+ assertThat(wepWifiEntry.canShare()).isTrue();
+ assertThat(openWifiEntry.canShare()).isTrue();
+ assertThat(saeWifiEntry.canShare()).isTrue();
+ assertThat(oweWifiEntry.canShare()).isTrue();
+ }
+
+ @Test
+ public void testCanShare_securityCanNotShare_shouldReturnFalse() {
+ final StandardWifiEntry eapWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP);
+ final StandardWifiEntry eapSuiteBWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
+
+ assertThat(eapWifiEntry.canShare()).isFalse();
+ assertThat(eapSuiteBWifiEntry.canShare()).isFalse();
+ }
+
+ @Test
+ public void testCanEasyConnect_deviceNotSupported_shouldReturnFalse() {
+ when(mMockWifiManager.isEasyConnectSupported()).thenReturn(false);
+ final ScanResult pskScanResult = buildScanResult("ssid", "bssid", 0, GOOD_RSSI);
+ pskScanResult.capabilities = "PSK";
+
+ final StandardWifiEntry pskWifiEntry = new StandardWifiEntry(mTestHandler,
+ Arrays.asList(pskScanResult), mMockWifiManager);
+
+ assertThat(pskWifiEntry.canEasyConnect()).isFalse();
+ }
+
+ @Test
+ public void testCanEasyConnect_securityCanEasyConnect_shouldReturnTrue() {
+ when(mMockWifiManager.isEasyConnectSupported()).thenReturn(true);
+ final StandardWifiEntry pskWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_PSK);
+ final StandardWifiEntry saeWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_SAE);
+
+ assertThat(pskWifiEntry.canEasyConnect()).isTrue();
+ assertThat(saeWifiEntry.canEasyConnect()).isTrue();
+ }
+
+ @Test
+ public void testCanEasyConnect_securityCanNotEasyConnect_shouldReturnFalse() {
+ when(mMockWifiManager.isEasyConnectSupported()).thenReturn(true);
+ final StandardWifiEntry openWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_OPEN);
+ final StandardWifiEntry wepWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_WEP);
+ final StandardWifiEntry eapWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP);
+ final StandardWifiEntry eapSuiteBWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_EAP_SUITE_B);
+ final StandardWifiEntry oweWifiEntry =
+ getSavedStandardWifiEntry(WifiConfiguration.SECURITY_TYPE_OWE);
+
+ assertThat(openWifiEntry.canEasyConnect()).isFalse();
+ assertThat(wepWifiEntry.canEasyConnect()).isFalse();
+ assertThat(eapWifiEntry.canEasyConnect()).isFalse();
+ assertThat(eapSuiteBWifiEntry.canEasyConnect()).isFalse();
+ assertThat(oweWifiEntry.canEasyConnect()).isFalse();
+ }
+
+ private StandardWifiEntry getSavedStandardWifiEntry(int wifiConfigurationSecureType) {
+ final WifiConfiguration config = new WifiConfiguration();
+ config.SSID = "\"ssid\"";
+ config.setSecurityParams(wifiConfigurationSecureType);
+ return new StandardWifiEntry(mTestHandler, config,
+ mMockWifiManager);
+ }
}