Merge "Enhanced MAC randomization API for passpoint"

This commit is contained in:
Oscar Shu
2020-09-11 09:54:51 +00:00
committed by Android (Google) Code Review
4 changed files with 66 additions and 1 deletions

View File

@@ -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");

View File

@@ -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;
}

View File

@@ -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
*/

View File

@@ -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);
}