diff options
author | Peter Qiu <zqiu@google.com> | 2017-06-06 13:12:11 -0700 |
---|---|---|
committer | Peter Qiu <zqiu@google.com> | 2017-06-13 15:54:30 +0000 |
commit | 2d511b3ad304301a3459f434b973525a23107ad1 (patch) | |
tree | 52b62c82d703a190bcd6ce45a06cc2fab5e88d4f /service | |
parent | 95571223c1eece592650e67c894e4a9f95c2d5ae (diff) |
hotspot2: anqp: OsuProviderInfo: friendly name and service description selection
An OSU provider might contain multiple friendly names and
service descriptions in different languages. In this case,
the value that's in the default language will be preferred.
Bug: 62235301
Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh
Change-Id: Ie6065a494e6a5c9aa1cc05621ab9627628efb446
Merged-In: Ie6065a494e6a5c9aa1cc05621ab9627628efb446
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/hotspot2/anqp/OsuProviderInfo.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/hotspot2/anqp/OsuProviderInfo.java b/service/java/com/android/server/wifi/hotspot2/anqp/OsuProviderInfo.java index 85b024e50..8952c5a51 100644 --- a/service/java/com/android/server/wifi/hotspot2/anqp/OsuProviderInfo.java +++ b/service/java/com/android/server/wifi/hotspot2/anqp/OsuProviderInfo.java @@ -30,6 +30,7 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.Objects; /** @@ -168,6 +169,28 @@ public class OsuProviderInfo { return Collections.unmodifiableList(mServiceDescriptions); } + /** + * Return the friendly name string from the friendly name list. The string matching + * the default locale will be returned if it is found, otherwise the first name in the list + * will be returned. A null will be returned if the list is empty. + * + * @return friendly name string + */ + public String getFriendlyName() { + return getI18String(mFriendlyNames); + } + + /** + * Return the service description string from the service description list. The string + * matching the default locale will be returned if it is found, otherwise the first element in + * the list will be returned. A null will be returned if the list is empty. + * + * @return service description string + */ + public String getServiceDescription() { + return getI18String(mServiceDescriptions); + } + @Override public boolean equals(Object thatObject) { if (this == thatObject) { @@ -255,4 +278,24 @@ public class OsuProviderInfo { payload.position(payload.position() + length); return subBuffer; } + + /** + * Return the appropriate I18 string value from the list of I18 string values. + * The string matching the default locale will be returned if it is found, otherwise the + * first string in the list will be returned. A null will be returned if the list is empty. + * + * @param i18Strings List of I18 string values + * @return String matching the default locale, null otherwise + */ + private static String getI18String(List<I18Name> i18Strings) { + for (I18Name name : i18Strings) { + if (name.getLanguage().equals(Locale.getDefault().getLanguage())) { + return name.getText(); + } + } + if (i18Strings.size() > 0) { + return i18Strings.get(0).getText(); + } + return null; + } } |