diff options
| author | 2020-09-11 09:54:51 +0000 | |
|---|---|---|
| committer | 2020-09-11 09:54:51 +0000 | |
| commit | 56a7840578528ad2c6676b65f454c439c45f87d3 (patch) | |
| tree | 9c11f421af2c04c1f23da79e8b05136d0220cc40 | |
| parent | 588f2c0e06cfeaf1101dbcacbf55a6b76d1f9f76 (diff) | |
| parent | eaa9626c7ed73dabdaab0719cd9f01aa5ba618e9 (diff) | |
Merge "Enhanced MAC randomization API for passpoint"
4 files changed, 66 insertions, 1 deletions
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java index 145c39d754f9..e992c830aa87 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java +++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java @@ -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"); diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java index d1d1780a25fd..61a6e16f9c43 100644 --- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java +++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java @@ -444,6 +444,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. * This value is one of {@link #METERED_OVERRIDE_NONE}, {@link #METERED_OVERRIDE_METERED}, @@ -481,6 +486,20 @@ public final class PasspointConfiguration implements Parcelable { } /** + * 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. * * @param meteredOverride One of the values in {@link MeteredOverride} @@ -531,6 +550,19 @@ public final class PasspointConfiguration implements Parcelable { } /** + * 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. */ public PasspointConfiguration() {} @@ -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; } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java index 631e5e23a9b8..668d2385a4ae 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java @@ -709,6 +709,31 @@ public class WifiNetworkSuggestionTest { } /** + * 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 */ @Test diff --git a/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java b/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java index 8270d643ca65..badcf5205c4d 100644 --- a/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java +++ b/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java @@ -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); } |