summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEcco Park <eccopark@google.com>2018-12-20 13:34:10 -0800
committerEcco Park <eccopark@google.com>2019-01-07 17:19:57 +0000
commitde85c5df9db406c096593542367732364067a98f (patch)
tree1b9504d86f513a8d9bb54d538508ba6605136206
parente52bfec84a81968b6005b66b9d96f6a737c4bbd0 (diff)
downloadandroid_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>
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java14
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java5
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointManager.java20
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java9
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();
}