summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Oscar Shu <xshu@google.com> 2020-09-11 09:54:51 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-09-11 09:54:51 +0000
commit56a7840578528ad2c6676b65f454c439c45f87d3 (patch)
tree9c11f421af2c04c1f23da79e8b05136d0220cc40
parent588f2c0e06cfeaf1101dbcacbf55a6b76d1f9f76 (diff)
parenteaa9626c7ed73dabdaab0719cd9f01aa5ba618e9 (diff)
Merge "Enhanced MAC randomization API for passpoint"
-rw-r--r--wifi/java/android/net/wifi/WifiNetworkSuggestion.java2
-rw-r--r--wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java39
-rw-r--r--wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java25
-rw-r--r--wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java1
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);
}