From d5980661dbab2c36df3b0d4cf72c64333cb8b126 Mon Sep 17 00:00:00 2001 From: Nate Jiang Date: Wed, 2 Dec 2020 22:38:32 -0800 Subject: [PATCH] Pipe new flag into passpoint Pipe oemPaid, oemPrivite, and carrierMerged into passpoint profile Bug: 172867186 Test: atest android.net.wifi Change-Id: If253aca1d26fe5575fa9edbdd0d6fe75d9d4ca81 --- .../net/wifi/WifiNetworkSuggestion.java | 3 + .../wifi/hotspot2/PasspointConfiguration.java | 88 ++++++++++++++++++- .../net/wifi/WifiNetworkSuggestionTest.java | 23 ++++- 3 files changed, 112 insertions(+), 2 deletions(-) diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java index e606d533a5320..b7450c538ff87 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java +++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java @@ -917,6 +917,9 @@ public final class WifiNetworkSuggestion implements Parcelable { mPasspointConfiguration.setCarrierId(mCarrierId); mPasspointConfiguration.setSubscriptionId(mSubscriptionId); mPasspointConfiguration.setMeteredOverride(wifiConfiguration.meteredOverride); + mPasspointConfiguration.setOemPrivate(mIsNetworkOemPrivate); + mPasspointConfiguration.setOemPaid(mIsNetworkOemPaid); + mPasspointConfiguration.setCarrierMerged(mIsCarrierMerged); wifiConfiguration.macRandomizationSetting = mIsEnhancedMacRandomizationEnabled ? WifiConfiguration.RANDOMIZATION_ENHANCED : WifiConfiguration.RANDOMIZATION_PERSISTENT; diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java index 357c5bcfa265f..006fbaa028bd8 100644 --- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java +++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java @@ -474,6 +474,27 @@ public final class PasspointConfiguration implements Parcelable { */ private boolean mIsEnhancedMacRandomizationEnabled = false; + + /** + * Indicate whether the network is oem paid or not. Networks are considered oem paid + * if the corresponding connection is only available to system apps. + * @hide + */ + private boolean mIsOemPaid; + + /** + * Indicate whether the network is oem private or not. Networks are considered oem private + * if the corresponding connection is only available to system apps. + * @hide + */ + private boolean mIsOemPrivate; + + /** + * Indicate whether or not the network is a carrier merged network. + * @hide + */ + private boolean mIsCarrierMerged; + /** * Indicates if the end user has expressed an explicit opinion about the * meteredness of this network, such as through the Settings app. @@ -588,6 +609,54 @@ public final class PasspointConfiguration implements Parcelable { return mIsEnhancedMacRandomizationEnabled; } + /** + * Set whether the network is oem paid or not. + * @hide + */ + public void setOemPaid(boolean isOemPaid) { + mIsOemPaid = isOemPaid; + } + + /** + * Get whether the network is oem paid or not. + * @hide + */ + public boolean isOemPaid() { + return mIsOemPaid; + } + + /** + * Set whether the network is oem private or not. + * @hide + */ + public void setOemPrivate(boolean isOemPrivate) { + mIsOemPrivate = isOemPrivate; + } + + /** + * Get whether the network is oem private or not. + * @hide + */ + public boolean isOemPrivate() { + return mIsOemPrivate; + } + + /** + * Set whether the network is carrier merged or not. + * @hide + */ + public void setCarrierMerged(boolean isCarrierMerged) { + mIsCarrierMerged = isCarrierMerged; + } + + /** + * Get whether the network is carrier merged or not. + * @hide + */ + public boolean isCarrierMerged() { + return mIsCarrierMerged; + } + /** * Constructor for creating PasspointConfiguration with default values. */ @@ -635,6 +704,9 @@ public final class PasspointConfiguration implements Parcelable { mIsMacRandomizationEnabled = source.mIsMacRandomizationEnabled; mIsEnhancedMacRandomizationEnabled = source.mIsEnhancedMacRandomizationEnabled; mMeteredOverride = source.mMeteredOverride; + mIsCarrierMerged = source.mIsCarrierMerged; + mIsOemPaid = source.mIsOemPaid; + mIsOemPrivate = source.mIsOemPrivate; } @Override @@ -669,6 +741,9 @@ public final class PasspointConfiguration implements Parcelable { dest.writeBoolean(mIsEnhancedMacRandomizationEnabled); dest.writeInt(mMeteredOverride); dest.writeInt(mSubscriptionId); + dest.writeBoolean(mIsCarrierMerged); + dest.writeBoolean(mIsOemPaid); + dest.writeBoolean(mIsOemPrivate); } @Override @@ -700,6 +775,9 @@ public final class PasspointConfiguration implements Parcelable { && mUsageLimitTimeLimitInMinutes == that.mUsageLimitTimeLimitInMinutes && mCarrierId == that.mCarrierId && mSubscriptionId == that.mSubscriptionId + && mIsOemPrivate == that.mIsOemPrivate + && mIsOemPaid == that.mIsOemPaid + && mIsCarrierMerged == that.mIsCarrierMerged && mIsAutojoinEnabled == that.mIsAutojoinEnabled && mIsMacRandomizationEnabled == that.mIsMacRandomizationEnabled && mIsEnhancedMacRandomizationEnabled == that.mIsEnhancedMacRandomizationEnabled @@ -715,7 +793,8 @@ public final class PasspointConfiguration implements Parcelable { mSubscriptionExpirationTimeMillis, mUsageLimitUsageTimePeriodInMinutes, mUsageLimitStartTimeInMillis, mUsageLimitDataLimit, mUsageLimitTimeLimitInMinutes, mServiceFriendlyNames, mCarrierId, mIsAutojoinEnabled, mIsMacRandomizationEnabled, - mIsEnhancedMacRandomizationEnabled, mMeteredOverride, mSubscriptionId); + mIsEnhancedMacRandomizationEnabled, mMeteredOverride, mSubscriptionId, + mIsCarrierMerged, mIsOemPaid, mIsOemPrivate); } @Override @@ -774,6 +853,9 @@ public final class PasspointConfiguration implements Parcelable { builder.append("mIsMacRandomizationEnabled:" + mIsMacRandomizationEnabled); builder.append("mIsEnhancedMacRandomizationEnabled:" + mIsEnhancedMacRandomizationEnabled); builder.append("mMeteredOverride:" + mMeteredOverride); + builder.append("mIsCarrierMerged:" + mIsCarrierMerged); + builder.append("mIsOemPaid:" + mIsOemPaid); + builder.append("mIsOemPrivate" + mIsOemPrivate); return builder.toString(); } @@ -884,6 +966,10 @@ public final class PasspointConfiguration implements Parcelable { config.mIsEnhancedMacRandomizationEnabled = in.readBoolean(); config.mMeteredOverride = in.readInt(); config.mSubscriptionId = in.readInt(); + config.mIsCarrierMerged = in.readBoolean(); + config.mIsOemPaid = in.readBoolean(); + config.mIsOemPrivate = in.readBoolean(); + return config; } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java index 643a78c38f91d..5e829188f93f1 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java @@ -809,7 +809,7 @@ public class WifiNetworkSuggestionTest { /** * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception * when both {@link WifiNetworkSuggestion.Builder#setWpa3Passphrase(String)} and - * {@link WifiNetworkSuggestion.Builderi + * {@link WifiNetworkSuggestion.Builder * #setWpa3EnterpriseStandardModeConfig(WifiEnterpriseConfig)} * are invoked. */ @@ -1310,6 +1310,7 @@ public class WifiNetworkSuggestionTest { .build(); assertTrue(suggestion.isOemPaid()); assertFalse(suggestion.isUserAllowedToManuallyConnect); + assertTrue(suggestion.getPasspointConfig().isOemPaid()); } /** @@ -1345,6 +1346,7 @@ public class WifiNetworkSuggestionTest { .build(); assertTrue(suggestion.isOemPrivate()); assertFalse(suggestion.isUserAllowedToManuallyConnect); + assertTrue(suggestion.getPasspointConfig().isOemPrivate()); } /** @@ -1438,6 +1440,25 @@ public class WifiNetworkSuggestionTest { assertTrue(suggestion.wifiConfiguration.carrierMerged); } + /** + * Validate {@link WifiNetworkSuggestion.Builder#setCarrierMerged(boolean)} (boolean)} set the + * correct value to the passpoint network. + */ + @Test + public void testSetCarrierMergedNetworkOnPasspointNetwork() { + assumeTrue(SdkLevel.isAtLeastS()); + + PasspointConfiguration passpointConfiguration = PasspointTestUtils.createConfig(); + WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder() + .setPasspointConfig(passpointConfiguration) + .setSubscriptionId(1) + .setCarrierMerged(true) + .setIsMetered(true) + .build(); + assertTrue(suggestion.isCarrierMerged()); + assertTrue(suggestion.getPasspointConfig().isCarrierMerged()); + } + /** * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception * when set both {@link WifiNetworkSuggestion.Builder#setCarrierMerged(boolean)} (boolean)}