Loading src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java +21 −10 Original line number Diff line number Diff line Loading @@ -262,16 +262,9 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl continue; } canFindNetwork = true; final int security = WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration); if (security == wifiEntry.getSecurity()) { return REACHABLE_WIFI_NETWORK; } // Default security type of PSK/SAE transition mode WifiEntry is SECURITY_PSK and // there is no way to know if a WifiEntry is of transition mode. Give it a chance. if (security == WifiEntry.SECURITY_SAE && wifiEntry.getSecurity() == WifiEntry.SECURITY_PSK) { int security = WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration); if (isSecurityMatched(security, wifiEntry.getSecurity())) { Log.d(TAG, "WiFi DPP detects connection security for a matching WiFi network."); return REACHABLE_WIFI_NETWORK; } } Loading @@ -283,6 +276,24 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl return R.string.wifi_dpp_check_connection_no_matched_ssid; } @VisibleForTesting boolean isSecurityMatched(int qrSecurity, int entrySecurity) { if (qrSecurity == entrySecurity) { return true; } // Default security type of PSK/SAE transition mode WifiEntry is SECURITY_PSK and // there is no way to know if a WifiEntry is of transition mode. Give it a chance. if (qrSecurity == WifiEntry.SECURITY_SAE && entrySecurity == WifiEntry.SECURITY_PSK) { return true; } // If configured is no password, the Wi-Fi framework will attempt OPEN and OWE security. return isNoPasswordSecurity(qrSecurity) && isNoPasswordSecurity(entrySecurity); } private boolean isNoPasswordSecurity(int security) { return security == WifiEntry.SECURITY_NONE || security == WifiEntry.SECURITY_OWE; } @VisibleForTesting boolean canConnectWifi(String ssid) { final List<WifiEntry> wifiEntries = mWifiPickerTracker.getWifiEntries(); Loading tests/robotests/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragmentTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ package com.android.settings.wifi.dpp; import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE; import static com.android.wifitrackerlib.WifiEntry.SECURITY_OWE; import static com.android.wifitrackerlib.WifiEntry.SECURITY_PSK; import static com.android.wifitrackerlib.WifiEntry.SECURITY_SAE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -148,4 +153,24 @@ public class WifiDppQrCodeScannerFragmentTest { verify(mActivity).setResult(eq(Activity.RESULT_OK), any()); verify(mActivity).finish(); } @Test public void isSecurityMatched_securityNotMatch_returnFalse() { assertThat(mFragment.isSecurityMatched(SECURITY_NONE, SECURITY_PSK)).isFalse(); } @Test public void isSecurityMatched_securityMatch_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_PSK, SECURITY_PSK)).isTrue(); } @Test public void isSecurityMatched_tryPskSaeTransition_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_SAE, SECURITY_PSK)).isTrue(); } @Test public void isSecurityMatched_noPasswordSecurity_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_NONE, SECURITY_OWE)).isTrue(); } } Loading
src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java +21 −10 Original line number Diff line number Diff line Loading @@ -262,16 +262,9 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl continue; } canFindNetwork = true; final int security = WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration); if (security == wifiEntry.getSecurity()) { return REACHABLE_WIFI_NETWORK; } // Default security type of PSK/SAE transition mode WifiEntry is SECURITY_PSK and // there is no way to know if a WifiEntry is of transition mode. Give it a chance. if (security == WifiEntry.SECURITY_SAE && wifiEntry.getSecurity() == WifiEntry.SECURITY_PSK) { int security = WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration); if (isSecurityMatched(security, wifiEntry.getSecurity())) { Log.d(TAG, "WiFi DPP detects connection security for a matching WiFi network."); return REACHABLE_WIFI_NETWORK; } } Loading @@ -283,6 +276,24 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl return R.string.wifi_dpp_check_connection_no_matched_ssid; } @VisibleForTesting boolean isSecurityMatched(int qrSecurity, int entrySecurity) { if (qrSecurity == entrySecurity) { return true; } // Default security type of PSK/SAE transition mode WifiEntry is SECURITY_PSK and // there is no way to know if a WifiEntry is of transition mode. Give it a chance. if (qrSecurity == WifiEntry.SECURITY_SAE && entrySecurity == WifiEntry.SECURITY_PSK) { return true; } // If configured is no password, the Wi-Fi framework will attempt OPEN and OWE security. return isNoPasswordSecurity(qrSecurity) && isNoPasswordSecurity(entrySecurity); } private boolean isNoPasswordSecurity(int security) { return security == WifiEntry.SECURITY_NONE || security == WifiEntry.SECURITY_OWE; } @VisibleForTesting boolean canConnectWifi(String ssid) { final List<WifiEntry> wifiEntries = mWifiPickerTracker.getWifiEntries(); Loading
tests/robotests/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragmentTest.java +25 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ package com.android.settings.wifi.dpp; import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE; import static com.android.wifitrackerlib.WifiEntry.SECURITY_OWE; import static com.android.wifitrackerlib.WifiEntry.SECURITY_PSK; import static com.android.wifitrackerlib.WifiEntry.SECURITY_SAE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -148,4 +153,24 @@ public class WifiDppQrCodeScannerFragmentTest { verify(mActivity).setResult(eq(Activity.RESULT_OK), any()); verify(mActivity).finish(); } @Test public void isSecurityMatched_securityNotMatch_returnFalse() { assertThat(mFragment.isSecurityMatched(SECURITY_NONE, SECURITY_PSK)).isFalse(); } @Test public void isSecurityMatched_securityMatch_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_PSK, SECURITY_PSK)).isTrue(); } @Test public void isSecurityMatched_tryPskSaeTransition_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_SAE, SECURITY_PSK)).isTrue(); } @Test public void isSecurityMatched_noPasswordSecurity_returnTrue() { assertThat(mFragment.isSecurityMatched(SECURITY_NONE, SECURITY_OWE)).isTrue(); } }