From 3f94ad15cd0eb88e3b9590f5e5afaf2d00372c40 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 14 Feb 2019 16:02:15 -0800 Subject: Passpoint: add FQDN and Provider name field in WifiInfo As part of new Passpoint UX, quick Setting and "Network &* internet" screen of Settings needs to present Provider name when Passpoint AP is connected instead of displaying SSID of the AP. In addition, Wifi Picker needs to match current passpoint connection info with Passpoint AccessPoint by FQDN. So, the two fields are added in WifiInfo Bug: 124462043 Test: ./frameworks/base/wifi/tests/runtests.sh Test: Tested with Passpoint AP and confirmed that the info is set correctly. Change-Id: I7215cba671e1c7eb07fbacb9d546d810cc26e826 Signed-off-by: Ecco Park --- api/system-current.txt | 3 ++ wifi/java/android/net/wifi/WifiInfo.java | 46 +++++++++++++++++++++++ wifi/tests/src/android/net/wifi/WifiInfoTest.java | 7 ++++ 3 files changed, 56 insertions(+) diff --git a/api/system-current.txt b/api/system-current.txt index 51d8225e4a04..bec29950243f 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4608,7 +4608,10 @@ package android.net.wifi { } public class WifiInfo implements android.os.Parcelable { + method @Nullable public String getFqdn(); + method @Nullable public String getProviderFriendlyName(); method public boolean isOsuAp(); + method public boolean isPasspointAp(); } public class WifiManager { diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 488de8789178..d06dcb7700fb 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -136,6 +136,16 @@ public class WifiInfo implements Parcelable { */ private boolean mOsuAp; + /** + * Fully qualified domain name of a Passpoint configuration + */ + private String mFqdn; + + /** + * Name of Passpoint credential provider + */ + private String mProviderFriendlyName; + /** * If connected to a network suggestion or specifier, store the package name of the app, * else null. @@ -223,6 +233,8 @@ public class WifiInfo implements Parcelable { setEphemeral(false); setOsuAp(false); setNetworkSuggestionOrSpecifierPackageName(null); + setFQDN(null); + setProviderFriendlyName(null); txBad = 0; txSuccess = 0; rxSuccess = 0; @@ -257,6 +269,8 @@ public class WifiInfo implements Parcelable { mNetworkSuggestionOrSpecifierPackageName = source.mNetworkSuggestionOrSpecifierPackageName; mOsuAp = source.mOsuAp; + mFqdn = source.mFqdn; + mProviderFriendlyName = source.mProviderFriendlyName; txBad = source.txBad; txRetries = source.txRetries; txSuccess = source.txSuccess; @@ -492,6 +506,34 @@ public class WifiInfo implements Parcelable { return mOsuAp; } + /** {@hide} */ + @SystemApi + public boolean isPasspointAp() { + return mFqdn != null && mProviderFriendlyName != null; + } + + /** {@hide} */ + public void setFQDN(@Nullable String fqdn) { + mFqdn = fqdn; + } + + /** {@hide} */ + @SystemApi + public @Nullable String getFqdn() { + return mFqdn; + } + + /** {@hide} */ + public void setProviderFriendlyName(@Nullable String providerFriendlyName) { + mProviderFriendlyName = providerFriendlyName; + } + + /** {@hide} */ + @SystemApi + public @Nullable String getProviderFriendlyName() { + return mProviderFriendlyName; + } + /** {@hide} */ public void setNetworkSuggestionOrSpecifierPackageName(@Nullable String packageName) { mNetworkSuggestionOrSpecifierPackageName = packageName; @@ -662,6 +704,8 @@ public class WifiInfo implements Parcelable { mSupplicantState.writeToParcel(dest, flags); dest.writeInt(mOsuAp ? 1 : 0); dest.writeString(mNetworkSuggestionOrSpecifierPackageName); + dest.writeString(mFqdn); + dest.writeString(mProviderFriendlyName); } /** Implement the Parcelable interface {@hide} */ @@ -701,6 +745,8 @@ public class WifiInfo implements Parcelable { info.mSupplicantState = SupplicantState.CREATOR.createFromParcel(in); info.mOsuAp = in.readInt() != 0; info.mNetworkSuggestionOrSpecifierPackageName = in.readString(); + info.mFqdn = in.readString(); + info.mProviderFriendlyName = in.readString(); return info; } diff --git a/wifi/tests/src/android/net/wifi/WifiInfoTest.java b/wifi/tests/src/android/net/wifi/WifiInfoTest.java index 948dcfa47f59..b3034965b5fc 100644 --- a/wifi/tests/src/android/net/wifi/WifiInfoTest.java +++ b/wifi/tests/src/android/net/wifi/WifiInfoTest.java @@ -36,6 +36,8 @@ public class WifiInfoTest { private static final long TEST_TX_BAD = 3; private static final long TEST_RX_SUCCESS = 4; private static final String TEST_PACKAGE_NAME = "com.test.example"; + private static final String TEST_FQDN = "test.com"; + private static final String TEST_PROVIDER_NAME = "test"; /** * Verify parcel write/read with WifiInfo. @@ -49,6 +51,8 @@ public class WifiInfoTest { writeWifiInfo.rxSuccess = TEST_RX_SUCCESS; writeWifiInfo.setTrusted(true); writeWifiInfo.setOsuAp(true); + writeWifiInfo.setFQDN(TEST_FQDN); + writeWifiInfo.setProviderFriendlyName(TEST_PROVIDER_NAME); writeWifiInfo.setNetworkSuggestionOrSpecifierPackageName(TEST_PACKAGE_NAME); Parcel parcel = Parcel.obtain(); @@ -64,6 +68,9 @@ public class WifiInfoTest { assertEquals(TEST_RX_SUCCESS, readWifiInfo.rxSuccess); assertTrue(readWifiInfo.isTrusted()); assertTrue(readWifiInfo.isOsuAp()); + assertTrue(readWifiInfo.isPasspointAp()); assertEquals(TEST_PACKAGE_NAME, readWifiInfo.getNetworkSuggestionOrSpecifierPackageName()); + assertEquals(TEST_FQDN, readWifiInfo.getFqdn()); + assertEquals(TEST_PROVIDER_NAME, readWifiInfo.getProviderFriendlyName()); } } -- cgit v1.2.3-59-g8ed1b