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

Commit 56a78405 authored by Oscar Shu's avatar Oscar Shu Committed by Android (Google) Code Review
Browse files

Merge "Enhanced MAC randomization API for passpoint"

parents 588f2c0e eaa9626c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -732,6 +732,8 @@ public final class WifiNetworkSuggestion implements Parcelable {
                            + "suggestion with Passpoint configuration");
                }
                wifiConfiguration = buildWifiConfigurationForPasspoint();
                mPasspointConfiguration.setEnhancedMacRandomizationEnabled(
                        mIsEnhancedMacRandomizationEnabled);
            } else {
                if (mSsid == null) {
                    throw new IllegalStateException("setSsid should be invoked for suggestion");
+38 −1
Original line number Diff line number Diff line
@@ -443,6 +443,11 @@ public final class PasspointConfiguration implements Parcelable {
     */
    private boolean mIsMacRandomizationEnabled = true;

    /**
     * Whether this passpoint configuration should use enhanced MAC randomization.
     */
    private boolean mIsEnhancedMacRandomizationEnabled = false;

    /**
     * Indicates if the end user has expressed an explicit opinion about the
     * meteredness of this network, such as through the Settings app.
@@ -480,6 +485,20 @@ public final class PasspointConfiguration implements Parcelable {
        mIsMacRandomizationEnabled = enabled;
    }

    /**
     * This setting is only applicable if MAC randomization is enabled.
     * If set to true, the framework will periodically generate new MAC addresses for new
     * connections.
     * If set to false (the default), the framework will use the same locally generated MAC address
     * for connections to this passpoint configuration.
     * @param enabled true to use enhanced MAC randomization, false to use persistent MAC
     *                randomization.
     * @hide
     */
    public void setEnhancedMacRandomizationEnabled(boolean enabled) {
        mIsEnhancedMacRandomizationEnabled = enabled;
    }

    /**
     * Sets the metered override setting for this Passpoint configuration.
     *
@@ -530,6 +549,19 @@ public final class PasspointConfiguration implements Parcelable {
        return mIsMacRandomizationEnabled;
    }

    /**
     * When MAC randomization is enabled, this indicates whether enhanced MAC randomization or
     * persistent MAC randomization will be used for connections to this Passpoint network.
     * If true, the MAC address used for connections will periodically change. Otherwise, the same
     * locally generated MAC will be used for all connections to this passpoint configuration.
     *
     * @return true for enhanced MAC randomization enabled. False for disabled.
     * @hide
     */
    public boolean isEnhancedMacRandomizationEnabled() {
        return mIsEnhancedMacRandomizationEnabled;
    }

    /**
     * Constructor for creating PasspointConfiguration with default values.
     */
@@ -574,6 +606,7 @@ public final class PasspointConfiguration implements Parcelable {
        mCarrierId = source.mCarrierId;
        mIsAutojoinEnabled = source.mIsAutojoinEnabled;
        mIsMacRandomizationEnabled = source.mIsMacRandomizationEnabled;
        mIsEnhancedMacRandomizationEnabled = source.mIsEnhancedMacRandomizationEnabled;
        mMeteredOverride = source.mMeteredOverride;
    }

@@ -606,6 +639,7 @@ public final class PasspointConfiguration implements Parcelable {
        dest.writeInt(mCarrierId);
        dest.writeBoolean(mIsAutojoinEnabled);
        dest.writeBoolean(mIsMacRandomizationEnabled);
        dest.writeBoolean(mIsEnhancedMacRandomizationEnabled);
        dest.writeInt(mMeteredOverride);
    }

@@ -639,6 +673,7 @@ public final class PasspointConfiguration implements Parcelable {
                && mCarrierId == that.mCarrierId
                && mIsAutojoinEnabled == that.mIsAutojoinEnabled
                && mIsMacRandomizationEnabled == that.mIsMacRandomizationEnabled
                && mIsEnhancedMacRandomizationEnabled == that.mIsEnhancedMacRandomizationEnabled
                && mMeteredOverride == that.mMeteredOverride
                && (mServiceFriendlyNames == null ? that.mServiceFriendlyNames == null
                : mServiceFriendlyNames.equals(that.mServiceFriendlyNames));
@@ -651,7 +686,7 @@ public final class PasspointConfiguration implements Parcelable {
                mSubscriptionExpirationTimeMillis, mUsageLimitUsageTimePeriodInMinutes,
                mUsageLimitStartTimeInMillis, mUsageLimitDataLimit, mUsageLimitTimeLimitInMinutes,
                mServiceFriendlyNames, mCarrierId, mIsAutojoinEnabled, mIsMacRandomizationEnabled,
                mMeteredOverride);
                mIsEnhancedMacRandomizationEnabled, mMeteredOverride);
    }

    @Override
@@ -707,6 +742,7 @@ public final class PasspointConfiguration implements Parcelable {
        builder.append("CarrierId:" + mCarrierId);
        builder.append("IsAutojoinEnabled:" + mIsAutojoinEnabled);
        builder.append("mIsMacRandomizationEnabled:" + mIsMacRandomizationEnabled);
        builder.append("mIsEnhancedMacRandomizationEnabled:" + mIsEnhancedMacRandomizationEnabled);
        builder.append("mMeteredOverride:" + mMeteredOverride);
        return builder.toString();
    }
@@ -815,6 +851,7 @@ public final class PasspointConfiguration implements Parcelable {
                config.mCarrierId = in.readInt();
                config.mIsAutojoinEnabled = in.readBoolean();
                config.mIsMacRandomizationEnabled = in.readBoolean();
                config.mIsEnhancedMacRandomizationEnabled = in.readBoolean();
                config.mMeteredOverride = in.readInt();
                return config;
            }
+25 −0
Original line number Diff line number Diff line
@@ -708,6 +708,31 @@ public class WifiNetworkSuggestionTest {
                suggestion.wifiConfiguration.macRandomizationSetting);
    }

    /**
     * Verify that the builder creates the appropriate PasspointConfiguration according to the
     * enhanced MAC randomization setting.
     */
    @Test
    public void testWifiNetworkSuggestionBuilderSetMacRandomizationPasspoint() {
        PasspointConfiguration passpointConfiguration = PasspointTestUtils.createConfig();
        WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder()
                .setPasspointConfig(passpointConfiguration)
                .build();
        assertEquals(false, suggestion.passpointConfiguration.isEnhancedMacRandomizationEnabled());

        suggestion = new WifiNetworkSuggestion.Builder()
                .setPasspointConfig(passpointConfiguration)
                .setIsEnhancedMacRandomizationEnabled(false)
                .build();
        assertEquals(false, suggestion.passpointConfiguration.isEnhancedMacRandomizationEnabled());

        suggestion = new WifiNetworkSuggestion.Builder()
                .setPasspointConfig(passpointConfiguration)
                .setIsEnhancedMacRandomizationEnabled(true)
                .build();
        assertEquals(true, suggestion.passpointConfiguration.isEnhancedMacRandomizationEnabled());
    }

    /**
     * Check that parcel marshalling/unmarshalling works
     */
+1 −0
Original line number Diff line number Diff line
@@ -186,6 +186,7 @@ public class PasspointConfigurationTest {
        assertFalse(config.validateForR2());
        assertTrue(config.isAutojoinEnabled());
        assertTrue(config.isMacRandomizationEnabled());
        assertFalse(config.isEnhancedMacRandomizationEnabled());
        assertTrue(config.getMeteredOverride() == METERED_OVERRIDE_NONE);
    }