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:
Weng Su
2024-10-14 07:02:18 +08:00
parent 30526d9858
commit efe8d52f77
2 changed files with 46 additions and 10 deletions

View File

@@ -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;
}
}
@@ -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();