diff options
author | Quang Anh Luong <qal@google.com> | 2023-11-16 17:51:32 +0900 |
---|---|---|
committer | Quang Anh Luong <qal@google.com> | 2023-11-16 17:51:32 +0900 |
commit | 6efc2eaeb51cf2d760656c8b9d6f37451cd8eda7 (patch) | |
tree | 499b6492f445fb9943a5c6f3c88da8c6cf04d82c | |
parent | cc5dcf59073c57fedb4fcb3e7d9f4a531c751cdd (diff) | |
download | wifi-6efc2eaeb51cf2d760656c8b9d6f37451cd8eda7.tar.gz |
Add WifiEntry.needsWifiConfiguration()
Add WifiEntry.needsWifiConfiguration() to indicate if a network needs to
have a WifiConfiguration saved before connecting. This is to provide a
synchronous way to query if we need a config instead of waiting for
CONNECT_STATUS_FAILURE_NO_CONFIG, in case the caller (e.g. Android TV)
wants to show a progress spinner upon a user press.
Bug: 305092860
Bug: 153627947
Test: atest StandardWifiEntryTest
Change-Id: I9065fe75c1b21a5b0e2b9045e0d0635f551d8c81
3 files changed, 22 insertions, 2 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java index 6b28a41a3..4d46354c7 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java @@ -287,6 +287,14 @@ public class StandardWifiEntry extends WifiEntry { } @Override + public boolean needsWifiConfiguration() { + List<Integer> securityTypes = getSecurityTypes(); + return !isSaved() && !isSuggestion() + && !securityTypes.contains(SECURITY_TYPE_OPEN) + && !securityTypes.contains(SECURITY_TYPE_OWE); + } + + @Override @Nullable public synchronized WifiConfiguration getWifiConfiguration() { if (!isSaved()) { diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index 8c78e81f7..84d8ac1ab 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java @@ -486,6 +486,14 @@ public class WifiEntry { } /** + * Returns whether this entry needs to be configured with a new WifiConfiguration before + * connection. + */ + public boolean needsWifiConfiguration() { + return false; + } + + /** * Returns the WifiConfiguration of an entry or null if unavailable. This should be used when * information on the WifiConfiguration needs to be modified and saved via * {@link WifiManager#save(WifiConfiguration, WifiManager.ActionListener)}. diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java index ebb24d987..6cfde1907 100644 --- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java +++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/StandardWifiEntryTest.java @@ -345,7 +345,7 @@ public class StandardWifiEntryTest { ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP), null, Arrays.asList(scan), mMockWifiManager, false /* forSavedNetworksPage */); - + assertThat(entry.needsWifiConfiguration()).isTrue(); assertThat(entry.isSaved()).isFalse(); final WifiConfiguration config = new WifiConfiguration(); @@ -354,6 +354,7 @@ public class StandardWifiEntryTest { config.networkId = 1; entry.updateConfig(Collections.singletonList(config)); + assertThat(entry.needsWifiConfiguration()).isFalse(); assertThat(entry.isSaved()).isTrue(); } @@ -368,11 +369,12 @@ public class StandardWifiEntryTest { ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_EAP), Collections.singletonList(config), null, mMockWifiManager, false /* forSavedNetworksPage */); - + assertThat(entry.needsWifiConfiguration()).isFalse(); assertThat(entry.isSaved()).isTrue(); entry.updateConfig(null); + assertThat(entry.needsWifiConfiguration()).isTrue(); assertThat(entry.isSaved()).isFalse(); } @@ -533,6 +535,8 @@ public class StandardWifiEntryTest { ssidAndSecurityTypeToStandardWifiEntryKey("ssid", SECURITY_TYPE_OPEN), null, Arrays.asList(buildScanResult("ssid", "bssid0", 0, TestUtils.GOOD_RSSI)), mMockWifiManager, false /* forSavedNetworksPage */); + assertThat(entry.needsWifiConfiguration()).isFalse(); + assertThat(entry.isSaved()).isFalse(); entry.connect(null /* ConnectCallback */); |