Roaming always metered, relax DHCP metered check.
Always treat roaming connections as metered, and relax DHCP test to
match any substring for forward compatibility.
Bug: 6382737, 6375399
Change-Id: I9781a60f55fbe35da6f8bfc7a1d609608e8f0951
diff --git a/core/java/android/net/DhcpInfoInternal.java b/core/java/android/net/DhcpInfoInternal.java
index c87c34b..f3508c1 100644
--- a/core/java/android/net/DhcpInfoInternal.java
+++ b/core/java/android/net/DhcpInfoInternal.java
@@ -147,7 +147,11 @@
* metered, and sensitive to heavy data transfers.
*/
public boolean hasMeteredHint() {
- return "ANDROID_METERED".equals(vendorInfo);
+ if (vendorInfo != null) {
+ return vendorInfo.contains("ANDROID_METERED");
+ } else {
+ return false;
+ }
}
public String toString() {
diff --git a/services/java/com/android/server/net/NetworkPolicyManagerService.java b/services/java/com/android/server/net/NetworkPolicyManagerService.java
index 5255647..8ebe224 100644
--- a/services/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1497,6 +1497,11 @@
public boolean isNetworkMetered(NetworkState state) {
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);
+ // roaming networks are always considered metered
+ if (ident.getRoaming()) {
+ return true;
+ }
+
final NetworkPolicy policy;
synchronized (mRulesLock) {
policy = findPolicyForNetworkLocked(ident);