diff options
author | Ecco Park <eccopark@google.com> | 2018-12-20 13:34:10 -0800 |
---|---|---|
committer | Ecco Park <eccopark@google.com> | 2019-01-07 17:19:57 +0000 |
commit | de85c5df9db406c096593542367732364067a98f (patch) | |
tree | 1b9504d86f513a8d9bb54d538508ba6605136206 | |
parent | e52bfec84a81968b6005b66b9d96f6a737c4bbd0 (diff) | |
download | android_frameworks_opt_net_wifi-de85c5df9db406c096593542367732364067a98f.tar.gz android_frameworks_opt_net_wifi-de85c5df9db406c096593542367732364067a98f.tar.bz2 android_frameworks_opt_net_wifi-de85c5df9db406c096593542367732364067a98f.zip |
passpoint-r2: change return type of getMatchingOsuProviders
This change is required to show signal strength with OSU provider name
on UI.
Bug: 119514793
Test: ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh
Test: tested with R1 AP for installing profile and R2 AP for connection
Change-Id: Ice99d176353d539e511717ccc7a4aba51d83ed48
Signed-off-by: Ecco Park <eccopark@google.com>
4 files changed, 30 insertions, 18 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index be7cc2c0e..7f37c2948 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -1646,13 +1646,15 @@ public class ClientModeImpl extends StateMachine { * * @param scanResults a list of ScanResult that has Passpoint APs. * @param channel Channel for communicating with the state machine - * @return List of {@link OsuProvider} + * @return Map that consists of {@link OsuProvider} and a matching list of {@link ScanResult}. */ - public List<OsuProvider> syncGetMatchingOsuProviders(List<ScanResult> scanResults, + public Map<OsuProvider, List<ScanResult>> syncGetMatchingOsuProviders( + List<ScanResult> scanResults, AsyncChannel channel) { Message resultMsg = channel.sendMessageSynchronously(CMD_GET_MATCHING_OSU_PROVIDERS, scanResults); - List<OsuProvider> providers = new ArrayList<>((Set<OsuProvider>) resultMsg.obj); + Map<OsuProvider, List<ScanResult>> providers = + (Map<OsuProvider, List<ScanResult>>) resultMsg.obj; resultMsg.recycle(); return providers; } @@ -1683,7 +1685,8 @@ public class ClientModeImpl extends StateMachine { * * @param fqdnList a list of FQDN * @param channel AsyncChannel to use for the response - * @return List of {@link WifiConfiguration} converted from {@link PasspointProvider} + * @return List of {@link WifiConfiguration} converted from + * {@link com.android.server.wifi.hotspot2.PasspointProvider} */ public List<WifiConfiguration> syncGetWifiConfigsForPasspointProfiles(List<String> fqdnList, AsyncChannel channel) { @@ -3560,7 +3563,7 @@ public class ClientModeImpl extends StateMachine { updateLinkProperties((LinkProperties) message.obj); break; case CMD_GET_MATCHING_OSU_PROVIDERS: - replyToMessage(message, message.what, new ArrayList<OsuProvider>()); + replyToMessage(message, message.what, new HashMap<>()); break; case CMD_GET_MATCHING_PASSPOINT_CONFIGS_FOR_OSU_PROVIDERS: replyToMessage(message, message.what, @@ -4115,6 +4118,7 @@ public class ClientModeImpl extends StateMachine { replyToMessage(message, message.what, mPasspointManager.getWifiConfigsForPasspointProfiles( (List<String>) message.obj)); + break; case CMD_START_SUBSCRIPTION_PROVISIONING: IProvisioningCallback callback = (IProvisioningCallback) message.obj; diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index e2d0124a4..7b6b66d21 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -1838,10 +1838,11 @@ public class WifiServiceImpl extends AbstractWifiService { * Returns list of OSU (Online Sign-Up) providers associated with the given list of ScanResult. * * @param scanResults a list of ScanResult that has Passpoint APs. - * @return List of {@link OsuProvider} + * @return Map that consists of {@link OsuProvider} and a matching list of {@link ScanResult}. */ @Override - public List<OsuProvider> getMatchingOsuProviders(List<ScanResult> scanResults) { + public Map<OsuProvider, List<ScanResult>> getMatchingOsuProviders( + List<ScanResult> scanResults) { enforceNetworkSettingsPermission(); if (mVerboseLoggingEnabled) { mLog.info("getMatchingOsuProviders uid=%").c(Binder.getCallingUid()).flush(); diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java index 053d78bf9..b7cd0dcf8 100644 --- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java +++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java @@ -574,21 +574,22 @@ public class PasspointManager { } /** - * Returns the set of Hotspot 2.0 OSU (Online Sign-Up) providers associated with the given list + * Returns the list of Hotspot 2.0 OSU (Online Sign-Up) providers associated with the given list * of ScanResult. * - * An empty set will be returned when an invalid scanResults are provided or no match is found. + * An empty map will be returned when an invalid scanResults are provided or no match is found. * * @param scanResults a list of ScanResult that has Passpoint APs. - * @return Set of {@link OsuProvider} + * @return Map that consists of {@link OsuProvider} and a matching list of {@link ScanResult} */ - public Set<OsuProvider> getMatchingOsuProviders(List<ScanResult> scanResults) { + public Map<OsuProvider, List<ScanResult>> getMatchingOsuProviders( + List<ScanResult> scanResults) { if (scanResults == null) { Log.e(TAG, "Attempt to retrieve OSU providers for a null ScanResult"); - return new HashSet<>(); + return new HashMap(); } - Set<OsuProvider> osuProviders = new HashSet<>(); + Map<OsuProvider, List<ScanResult>> osuProviders = new HashMap<>(); for (ScanResult scanResult : scanResults) { if (!scanResult.isPasspointNetwork()) continue; @@ -607,7 +608,12 @@ public class PasspointManager { OsuProvider provider = new OsuProvider(null, info.getFriendlyNames(), info.getServiceDescription(), info.getServerUri(), info.getNetworkAccessIdentifier(), info.getMethodList(), null); - osuProviders.add(provider); + List<ScanResult> matchingScanResults = osuProviders.get(provider); + if (matchingScanResults == null) { + matchingScanResults = new ArrayList<>(); + osuProviders.put(provider, matchingScanResults); + } + matchingScanResults.add(scanResult); } } return osuProviders; diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java index cf8475ae4..4cf1cd90c 100644 --- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java @@ -1094,14 +1094,15 @@ public class PasspointManagerTest { // ANQP_DOMAIN_ID(TEST_ANQP_KEY) vsa.anqpDomainID = TEST_ANQP_DOMAIN_ID; when(InformationElementUtil.getHS2VendorSpecificIE(isNull())).thenReturn(vsa); - assertThat(mManager.getMatchingOsuProviders(Arrays.asList(createTestScanResult())), - containsInAnyOrder(expectedOsuProvidersForDomainId.toArray())); + assertEquals(mManager.getMatchingOsuProviders( + Arrays.asList(createTestScanResult())).keySet(), + expectedOsuProvidersForDomainId); // ANQP_DOMAIN_ID2(TEST_ANQP_KEY2) vsa.anqpDomainID = TEST_ANQP_DOMAIN_ID2; when(InformationElementUtil.getHS2VendorSpecificIE(isNull())).thenReturn(vsa); - assertThat(mManager.getMatchingOsuProviders(createTestScanResults()), - containsInAnyOrder(expectedOsuProvidersForDomainId2.toArray())); + assertEquals(mManager.getMatchingOsuProviders( + createTestScanResults()).keySet(), expectedOsuProvidersForDomainId2); } finally { session.finishMocking(); } |