Connect to OWE Wi-Fi network when QR code has no password
- Since there is no password for Wi-Fi security in OPEN and OWE, try to connect to one of them Bug: 360377330 Flag: EXEMPT bugfix Test: Manual testing atest -c WifiDppQrCodeScannerFragmentTest Change-Id: Ia0a59e099b724170ad993df8b4246b94e0da392c
This commit is contained in:
@@ -262,16 +262,9 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
canFindNetwork = true;
|
canFindNetwork = true;
|
||||||
final int security =
|
int security = WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration);
|
||||||
WifiDppUtils.getSecurityTypeFromWifiConfiguration(wifiConfiguration);
|
if (isSecurityMatched(security, wifiEntry.getSecurity())) {
|
||||||
if (security == wifiEntry.getSecurity()) {
|
Log.d(TAG, "WiFi DPP detects connection security for a matching WiFi network.");
|
||||||
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) {
|
|
||||||
return REACHABLE_WIFI_NETWORK;
|
return REACHABLE_WIFI_NETWORK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -283,6 +276,24 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
return R.string.wifi_dpp_check_connection_no_matched_ssid;
|
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
|
@VisibleForTesting
|
||||||
boolean canConnectWifi(String ssid) {
|
boolean canConnectWifi(String ssid) {
|
||||||
final List<WifiEntry> wifiEntries = mWifiPickerTracker.getWifiEntries();
|
final List<WifiEntry> wifiEntries = mWifiPickerTracker.getWifiEntries();
|
||||||
|
@@ -16,6 +16,11 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi.dpp;
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
@@ -148,4 +153,24 @@ public class WifiDppQrCodeScannerFragmentTest {
|
|||||||
verify(mActivity).setResult(eq(Activity.RESULT_OK), any());
|
verify(mActivity).setResult(eq(Activity.RESULT_OK), any());
|
||||||
verify(mActivity).finish();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user