From 12e167b30e4d5763e619605ae08cf8ce6cd5593c Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Fri, 3 Apr 2020 09:04:51 -0700 Subject: 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 --- wifi/java/android/net/wifi/WifiManager.java | 21 +++++++++++++++++---- .../android/net/wifi/WifiNetworkSuggestion.java | 2 +- .../android/net/wifi/WifiNetworkSuggestionTest.java | 4 ++-- 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 { *
  • 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.
  • *
  • 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
  • + *
  • If the provided suggestions includes any previously provided suggestions by the app, + * previous suggestions will be updated.
  • + *
  • 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. + *
  • + * * * @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() * + *
  • This API will cause reconnect if the credentials of the current active + * connection has been changed.
  • + *
  • This API will cause reconnect if the current active connection is marked metered.
  • + * * @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. + *
  • This API will cause reconnect if the credentials of the current active + * connection has been changed.
  • + *
  • This API will cause disconnect if the current active connection is marked metered.
  • * * @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); -- cgit v1.2.3-59-g8ed1b