diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-01-03 04:37:38 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-01-03 04:37:38 +0000 |
commit | 75688f77ab3e0ce1635c9d6863f4f39fe7adef82 (patch) | |
tree | ed2a8cbc8d44d4f0e2ca728ef7d34b4381cecf82 | |
parent | 955f757705614061372fa942cc5a06e06980f97f (diff) | |
parent | 18e215d357c6ac8ad2e5ed67b7aa110f9a0b2d03 (diff) |
Merge "[Wi-Fi] Implement WifiEntry#canShare & WifiEntry#canEasyConnect"
-rw-r--r-- | libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java | 42 | ||||
-rw-r--r-- | libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java | 84 |
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); + } } |