WifiNetworkSuggestion setIsMetered change to tri-state

setIsMetered: true for metered; false for not metered; not set for
detect automatically
Bug: 157341534
Test: atest android.net.wifi

Change-Id: If4c028e184b44ae53db80b94fe6d9ae7d06b3cb6
This commit is contained in:
Nate Jiang
2020-05-28 18:34:55 -07:00
parent 8f29769362
commit 57f81d36dc
2 changed files with 43 additions and 13 deletions

View File

@@ -100,7 +100,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
/**
* Whether this network is metered or not.
*/
private boolean mIsMetered;
private int mMeteredOverride;
/**
* Priority of this network among other network suggestions provided by the app.
* The lower the number, the higher the priority (i.e value of 0 = highest priority).
@@ -156,7 +156,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
mIsHiddenSSID = false;
mIsAppInteractionRequired = false;
mIsUserInteractionRequired = false;
mIsMetered = false;
mMeteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
mIsSharedWithUser = true;
mIsSharedWithUserSet = false;
mIsInitialAutojoinEnabled = true;
@@ -421,14 +421,18 @@ public final class WifiNetworkSuggestion implements Parcelable {
/**
* Specifies whether this network is metered.
* <p>
* <li>If not set, defaults to false (i.e not metered).</li>
* <li>If not set, defaults to detect automatically.</li>
*
* @param isMetered {@code true} to indicate that the network is metered, {@code false}
* otherwise.
* for not metered.
* @return Instance of {@link Builder} to enable chaining of the builder method.
*/
public @NonNull Builder setIsMetered(boolean isMetered) {
mIsMetered = isMetered;
if (isMetered) {
mMeteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
} else {
mMeteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
}
return this;
}
@@ -541,9 +545,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
wifiConfiguration.hiddenSSID = mIsHiddenSSID;
wifiConfiguration.priority = mPriority;
wifiConfiguration.meteredOverride =
mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
: WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
wifiConfiguration.meteredOverride = mMeteredOverride;
wifiConfiguration.carrierId = mCarrierId;
wifiConfiguration.trusted = !mIsNetworkUntrusted;
return wifiConfiguration;
@@ -572,9 +574,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
wifiConfiguration.FQDN = mPasspointConfiguration.getHomeSp().getFqdn();
wifiConfiguration.setPasspointUniqueId(mPasspointConfiguration.getUniqueId());
wifiConfiguration.priority = mPriority;
wifiConfiguration.meteredOverride =
mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
: WifiConfiguration.METERED_OVERRIDE_NONE;
wifiConfiguration.meteredOverride = mMeteredOverride;
wifiConfiguration.trusted = !mIsNetworkUntrusted;
mPasspointConfiguration.setCarrierId(mCarrierId);
mPasspointConfiguration.setMeteredOverride(wifiConfiguration.meteredOverride);

View File

@@ -56,7 +56,7 @@ public class WifiNetworkSuggestionTest {
.get(WifiConfiguration.KeyMgmt.NONE));
assertTrue(suggestion.isAppInteractionRequired);
assertFalse(suggestion.isUserInteractionRequired);
assertEquals(WifiConfiguration.METERED_OVERRIDE_NOT_METERED,
assertEquals(WifiConfiguration.METERED_OVERRIDE_NONE,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(-1, suggestion.wifiConfiguration.priority);
assertFalse(suggestion.isUserAllowedToManuallyConnect);
@@ -86,7 +86,7 @@ public class WifiNetworkSuggestionTest {
suggestion.wifiConfiguration.preSharedKey);
assertTrue(suggestion.isAppInteractionRequired);
assertFalse(suggestion.isUserInteractionRequired);
assertEquals(WifiConfiguration.METERED_OVERRIDE_NOT_METERED,
assertEquals(WifiConfiguration.METERED_OVERRIDE_NONE,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(0, suggestion.wifiConfiguration.priority);
assertFalse(suggestion.isUserAllowedToManuallyConnect);
@@ -123,6 +123,36 @@ public class WifiNetworkSuggestionTest {
assertFalse(suggestion.isInitialAutoJoinEnabled);
}
/**
* Validate correctness of WifiNetworkSuggestion object created by
* {@link WifiNetworkSuggestion.Builder#build()} for WPA_PSK network which requires
* user interaction and is not metered.
*/
@Test
public void
testWifiNetworkSuggestionBuilderForWpa2PskNetworkWithNotMeteredAndReqUserInteraction() {
WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder()
.setSsid(TEST_SSID)
.setWpa2Passphrase(TEST_PRESHARED_KEY)
.setIsUserInteractionRequired(true)
.setIsInitialAutojoinEnabled(false)
.setIsMetered(false)
.build();
assertEquals("\"" + TEST_SSID + "\"", suggestion.wifiConfiguration.SSID);
assertTrue(suggestion.wifiConfiguration.allowedKeyManagement
.get(WifiConfiguration.KeyMgmt.WPA_PSK));
assertEquals("\"" + TEST_PRESHARED_KEY + "\"",
suggestion.wifiConfiguration.preSharedKey);
assertFalse(suggestion.isAppInteractionRequired);
assertTrue(suggestion.isUserInteractionRequired);
assertEquals(WifiConfiguration.METERED_OVERRIDE_NOT_METERED,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(-1, suggestion.wifiConfiguration.priority);
assertTrue(suggestion.isUserAllowedToManuallyConnect);
assertFalse(suggestion.isInitialAutoJoinEnabled);
}
/**
* Validate correctness of WifiNetworkSuggestion object created by
* {@link WifiNetworkSuggestion.Builder#build()} for OWE network.