summaryrefslogtreecommitdiff
path: root/wifi
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2020-04-03 09:04:51 -0700
committerRoshan Pius <rpius@google.com>2020-04-03 13:27:50 -0700
commit12e167b30e4d5763e619605ae08cf8ce6cd5593c (patch)
treec1588fd21304c6c70b23ef7c553c722880730250 /wifi
parent8555b9a166871a78523b8aa0db08cff83f7b28e9 (diff)
WifiManager: Update doc for new metered change behavior
Also, explictitly mark OVERRIDE_NOT_METERED in WifiConfiguration when suggestion is not metered. Bug: 153127005 Test: Compiles Change-Id: I917de747406167fc38faa05e15d98a9b867a6ce8
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java21
-rw-r--r--wifi/java/android/net/wifi/WifiNetworkSuggestion.java2
-rw-r--r--wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java4
3 files changed, 20 insertions, 7 deletions
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index dfeea9f4b52e..f1be8b20eb53 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -1887,12 +1887,20 @@ public class WifiManager {
* <li> If user reset network settings, all added suggestions will be discarded. Apps can use
* {@link #getNetworkSuggestions()} to check if their suggestions are in the device.</li>
* <li> In-place modification of existing suggestions are allowed.
- * If the provided suggestions {@link WifiNetworkSuggestion#equals(Object)} any previously
- * provided suggestions by the app. Previous suggestions will be updated</li>
+ * <li>If the provided suggestions includes any previously provided suggestions by the app,
+ * previous suggestions will be updated.</li>
+ * <li>If one of the provided suggestions marks a previously unmetered suggestion as metered and
+ * the device is currently connected to that suggested network, then the device will disconnect
+ * from that network. The system will immediately re-evaluate all the network candidates
+ * and possibly reconnect back to the same suggestion. This disconnect is to make sure that any
+ * traffic flowing over unmetered networks isn't accidentally continued over a metered network.
+ * </li>
+ * </li>
*
* @param networkSuggestions List of network suggestions provided by the app.
* @return Status code for the operation. One of the STATUS_NETWORK_SUGGESTIONS_ values.
* @throws {@link SecurityException} if the caller is missing required permissions.
+ * @see WifiNetworkSuggestion#equals(Object)
*/
@RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE)
public @NetworkSuggestionsStatusCode int addNetworkSuggestions(
@@ -4152,6 +4160,10 @@ public class WifiManager {
*
* This function is used instead of a enableNetwork() and reconnect()
*
+ * <li> This API will cause reconnect if the credentials of the current active
+ * connection has been changed.</li>
+ * <li> This API will cause reconnect if the current active connection is marked metered.</li>
+ *
* @param networkId the ID of the network as returned by {@link #addNetwork} or {@link
* getConfiguredNetworks}.
* @param listener for callbacks on success or failure. Can be null.
@@ -4180,8 +4192,9 @@ public class WifiManager {
*
* For an existing network, it accomplishes the task of updateNetwork()
*
- * This API will cause reconnect if the crecdentials of the current active
- * connection has been changed.
+ * <li> This API will cause reconnect if the credentials of the current active
+ * connection has been changed.</li>
+ * <li> This API will cause disconnect if the current active connection is marked metered.</li>
*
* @param config the set of variables that describe the configuration,
* contained in a {@link WifiConfiguration} object.
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
index 4c524f49e4df..cedf9b0b872d 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
@@ -543,7 +543,7 @@ public final class WifiNetworkSuggestion implements Parcelable {
wifiConfiguration.priority = mPriority;
wifiConfiguration.meteredOverride =
mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
- : WifiConfiguration.METERED_OVERRIDE_NONE;
+ : WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
wifiConfiguration.carrierId = mCarrierId;
wifiConfiguration.trusted = !mIsNetworkUntrusted;
return wifiConfiguration;
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
index ac2f6b26aa00..aca190910ed1 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
@@ -56,7 +56,7 @@ public class WifiNetworkSuggestionTest {
.get(WifiConfiguration.KeyMgmt.NONE));
assertTrue(suggestion.isAppInteractionRequired);
assertFalse(suggestion.isUserInteractionRequired);
- assertEquals(WifiConfiguration.METERED_OVERRIDE_NONE,
+ assertEquals(WifiConfiguration.METERED_OVERRIDE_NOT_METERED,
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_NONE,
+ assertEquals(WifiConfiguration.METERED_OVERRIDE_NOT_METERED,
suggestion.wifiConfiguration.meteredOverride);
assertEquals(0, suggestion.wifiConfiguration.priority);
assertFalse(suggestion.isUserAllowedToManuallyConnect);