Merge "Allow set metered override setting for passpoint"

This commit is contained in:
TreeHugger Robot
2020-01-24 04:38:35 +00:00
committed by Android (Google) Code Review
7 changed files with 86 additions and 1 deletions

View File

@@ -7639,6 +7639,7 @@ package android.net.wifi {
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
method @RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE) public void setDeviceMobilityState(int);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMacRandomizationSettingPasspointEnabled(@NonNull String, boolean);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMeteredOverridePasspoint(@NonNull String, int);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean setSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
method @RequiresPermission(android.Manifest.permission.WIFI_UPDATE_USABILITY_STATS_SCORE) public boolean setWifiConnectedNetworkScorer(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.WifiConnectedNetworkScorer);
@@ -8004,6 +8005,7 @@ package android.net.wifi.hotspot2 {
}
public final class PasspointConfiguration implements android.os.Parcelable {
method public int getMeteredOverride();
method public boolean isAutoJoinEnabled();
method public boolean isMacRandomizationEnabled();
}

View File

@@ -97,6 +97,8 @@ interface IWifiManager
void setMacRandomizationSettingPasspointEnabled(String fqdn, boolean enable);
void setMeteredOverridePasspoint(String fqdn, int meteredOverride);
boolean startScan(String packageName, String featureId);
List<ScanResult> getScanResults(String callingPackage, String callingFeatureId);

View File

@@ -4348,6 +4348,25 @@ public class WifiManager {
}
}
/**
* Sets the user's choice of metered override for a Passpoint profile.
*
* @param fqdn the FQDN (fully qualified domain name) of the passpoint profile.
* @param meteredOverride One of three values: {@link WifiConfiguration#METERED_OVERRIDE_NONE},
* {@link WifiConfiguration#METERED_OVERRIDE_METERED},
* {@link WifiConfiguration#METERED_OVERRIDE_NOT_METERED}
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void setMeteredOverridePasspoint(@NonNull String fqdn, int meteredOverride) {
try {
mService.setMeteredOverridePasspoint(fqdn, meteredOverride);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
* Disable an ephemeral network.
*

View File

@@ -16,6 +16,9 @@
package android.net.wifi.hotspot2;
import static android.net.wifi.WifiConfiguration.METERED_OVERRIDE_NONE;
import static android.net.wifi.WifiConfiguration.MeteredOverride;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.net.wifi.hotspot2.pps.Credential;
@@ -437,6 +440,18 @@ public final class PasspointConfiguration implements Parcelable {
*/
private boolean mIsMacRandomizationEnabled = true;
/**
* 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},
* or {@link #METERED_OVERRIDE_NOT_METERED}.
* <p>
* This should always override any values from {@link WifiInfo#getMeteredHint()}.
*
* By default this field is set to {@link #METERED_OVERRIDE_NONE}.
*/
private int mMeteredOverride = METERED_OVERRIDE_NONE;
/**
* Configures the auto-association status of this Passpoint configuration. A value of true
* indicates that the configuration will be considered for auto-connection, a value of false
@@ -462,6 +477,16 @@ public final class PasspointConfiguration implements Parcelable {
mIsMacRandomizationEnabled = enabled;
}
/**
* Sets the metered override setting for this Passpoint configuration.
*
* @param meteredOverride One of the values in {@link MeteredOverride}
* @hide
*/
public void setMeteredOverride(@MeteredOverride int meteredOverride) {
mMeteredOverride = meteredOverride;
}
/**
* Indicates whether the Passpoint configuration may be auto-connected to by the framework. A
* value of true indicates that auto-connection can happen, a value of false indicates that it
@@ -477,6 +502,18 @@ public final class PasspointConfiguration implements Parcelable {
return mIsAutoJoinEnabled;
}
/**
* Indicates whether the user chose this configuration to be treated as metered or not.
*
* @return One of the values in {@link MeteredOverride}
* @hide
*/
@SystemApi
@MeteredOverride
public int getMeteredOverride() {
return mMeteredOverride;
}
/**
* Indicates whether a randomized MAC address or device MAC address will be used for
* connections to this Passpoint network. If true, a randomized MAC address will be used.
@@ -534,6 +571,7 @@ public final class PasspointConfiguration implements Parcelable {
mCarrierId = source.mCarrierId;
mIsAutoJoinEnabled = source.mIsAutoJoinEnabled;
mIsMacRandomizationEnabled = source.mIsMacRandomizationEnabled;
mMeteredOverride = source.mMeteredOverride;
}
@Override
@@ -565,6 +603,7 @@ public final class PasspointConfiguration implements Parcelable {
dest.writeInt(mCarrierId);
dest.writeBoolean(mIsAutoJoinEnabled);
dest.writeBoolean(mIsMacRandomizationEnabled);
dest.writeInt(mMeteredOverride);
}
@Override
@@ -597,6 +636,7 @@ public final class PasspointConfiguration implements Parcelable {
&& mCarrierId == that.mCarrierId
&& mIsAutoJoinEnabled == that.mIsAutoJoinEnabled
&& mIsMacRandomizationEnabled == that.mIsMacRandomizationEnabled
&& mMeteredOverride == that.mMeteredOverride
&& (mServiceFriendlyNames == null ? that.mServiceFriendlyNames == null
: mServiceFriendlyNames.equals(that.mServiceFriendlyNames));
}
@@ -607,7 +647,8 @@ public final class PasspointConfiguration implements Parcelable {
mUpdateIdentifier, mCredentialPriority, mSubscriptionCreationTimeInMillis,
mSubscriptionExpirationTimeInMillis, mUsageLimitUsageTimePeriodInMinutes,
mUsageLimitStartTimeInMillis, mUsageLimitDataLimit, mUsageLimitTimeLimitInMinutes,
mServiceFriendlyNames, mCarrierId, mIsAutoJoinEnabled, mIsMacRandomizationEnabled);
mServiceFriendlyNames, mCarrierId, mIsAutoJoinEnabled, mIsMacRandomizationEnabled,
mMeteredOverride);
}
@Override
@@ -663,6 +704,7 @@ public final class PasspointConfiguration implements Parcelable {
builder.append("CarrierId:" + mCarrierId);
builder.append("IsAutoJoinEnabled:" + mIsAutoJoinEnabled);
builder.append("mIsMacRandomizationEnabled:" + mIsMacRandomizationEnabled);
builder.append("mMeteredOverride:" + mMeteredOverride);
return builder.toString();
}
@@ -770,6 +812,7 @@ public final class PasspointConfiguration implements Parcelable {
config.mCarrierId = in.readInt();
config.mIsAutoJoinEnabled = in.readBoolean();
config.mIsMacRandomizationEnabled = in.readBoolean();
config.mMeteredOverride = in.readInt();
return config;
}

View File

@@ -197,6 +197,11 @@ public class BaseWifiService extends IWifiManager.Stub {
throw new UnsupportedOperationException();
}
@Override
public void setMeteredOverridePasspoint(String fqdn, int meteredOverride) {
throw new UnsupportedOperationException();
}
@Override
public boolean startScan(String packageName, String featureId) {
throw new UnsupportedOperationException();

View File

@@ -16,6 +16,7 @@
package android.net.wifi;
import static android.net.wifi.WifiConfiguration.METERED_OVERRIDE_METERED;
import static android.net.wifi.WifiManager.ActionListener;
import static android.net.wifi.WifiManager.BUSY;
import static android.net.wifi.WifiManager.ERROR;
@@ -1796,6 +1797,16 @@ public class WifiManagerTest {
verify(mWifiService).setMacRandomizationSettingPasspointEnabled(fqdn, true);
}
/**
* Test behavior of
* {@link WifiManager#setMacRandomizationSettingPasspointEnabled(String, boolean)}
*/
@Test
public void testSetMeteredOverridePasspoint() throws Exception {
final String fqdn = "FullyQualifiedDomainName";
mWifiManager.setMeteredOverridePasspoint(fqdn, METERED_OVERRIDE_METERED);
verify(mWifiService).setMeteredOverridePasspoint(fqdn, METERED_OVERRIDE_METERED);
}
/**
* Test behavior of {@link WifiManager#disconnect()}

View File

@@ -16,6 +16,8 @@
package android.net.wifi.hotspot2;
import static android.net.wifi.WifiConfiguration.METERED_OVERRIDE_NONE;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -173,6 +175,7 @@ public class PasspointConfigurationTest {
assertFalse(config.validateForR2());
assertTrue(config.isAutoJoinEnabled());
assertTrue(config.isMacRandomizationEnabled());
assertTrue(config.getMeteredOverride() == METERED_OVERRIDE_NONE);
}
/**