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);