Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f94ad15 authored by Ecco Park's avatar Ecco Park
Browse files

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: default avatarEcco Park <eccopark@google.com>
parent 6c3b856e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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 {
+46 −0
Original line number Diff line number Diff line
@@ -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;
            }

+7 −0
Original line number Diff line number Diff line
@@ -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());
    }
}