Merge "Meteredness should reflect user opinion." into oc-mr1-dev
am: b3592f242d
Change-Id: I953fa8f79bb7bba630b44c910ede99ac35eeda81
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 93db5ab..e417fde 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -512,6 +512,8 @@
}
@Override
public void onSavedNetworkUpdated(int networkId) {
+ // User might have changed meteredOverride, so update capabilties
+ mStateMachine.updateCapabilities();
updatePnoScan();
}
@Override
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 5ebe259..f1ca17d 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -3482,14 +3482,14 @@
final WifiConfiguration config = getCurrentWifiConfiguration();
if (config != null) {
mWifiInfo.setEphemeral(config.ephemeral);
-
- // Set meteredHint if DHCP result says network is metered
- if (dhcpResults.hasMeteredHint()) {
- mWifiInfo.setMeteredHint(true);
- }
}
- updateCapabilities();
+ // Set meteredHint if DHCP result says network is metered
+ if (dhcpResults.hasMeteredHint()) {
+ mWifiInfo.setMeteredHint(true);
+ }
+
+ updateCapabilities(config);
}
private void handleSuccessfulIpConfiguration() {
@@ -3501,7 +3501,7 @@
WifiConfiguration.NetworkSelectionStatus.DISABLED_DHCP_FAILURE);
// Tell the framework whether the newly connected network is trusted or untrusted.
- updateCapabilities();
+ updateCapabilities(c);
}
if (c != null) {
ScanResult result = getCurrentScanResult();
@@ -5507,7 +5507,11 @@
}
}
- private void updateCapabilities() {
+ public void updateCapabilities() {
+ updateCapabilities(getCurrentWifiConfiguration());
+ }
+
+ private void updateCapabilities(WifiConfiguration config) {
final NetworkCapabilities result = new NetworkCapabilities(mDfltNetworkCapabilities);
if (mWifiInfo != null && !mWifiInfo.isEphemeral()) {
@@ -5516,7 +5520,7 @@
result.removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
}
- if (mWifiInfo != null && !mWifiInfo.getMeteredHint()) {
+ if (mWifiInfo != null && !WifiConfiguration.isMetered(config, mWifiInfo)) {
result.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
} else {
result.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);