From f166f480f0f29b310a27fe001ee26d7dfac84fdd Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 30 Apr 2012 15:59:21 -0700 Subject: [PATCH] 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 --- core/java/android/net/DhcpInfoInternal.java | 6 +++++- .../com/android/server/net/NetworkPolicyManagerService.java | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/net/DhcpInfoInternal.java b/core/java/android/net/DhcpInfoInternal.java index c87c34b8b12a8..f3508c1105bbb 100644 --- a/core/java/android/net/DhcpInfoInternal.java +++ b/core/java/android/net/DhcpInfoInternal.java @@ -147,7 +147,11 @@ public class DhcpInfoInternal { * 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 5255647693d16..8ebe224f15fd4 100644 --- a/services/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/java/com/android/server/net/NetworkPolicyManagerService.java @@ -1497,6 +1497,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { 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);