Remove redundant vmpolicy variable

This completes a TODO.

Test: still builds
Change-Id: I6298f5b8899a4e9c3a2b3f110de1a924404b9fa4
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 4703af0..cceb949 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -317,13 +317,7 @@
     private static final HashMap<Class, Integer> EMPTY_CLASS_LIMIT_MAP =
             new HashMap<Class, Integer>();
 
-    /**
-     * The current VmPolicy in effect.
-     *
-     * <p>TODO: these are redundant (mask is in VmPolicy). Should remove sVmPolicyMask.
-     */
-    private static volatile int sVmPolicyMask = 0;
-
+    /** The current VmPolicy in effect. */
     private static volatile VmPolicy sVmPolicy = VmPolicy.LAX;
 
     /** {@hide} */
@@ -1168,7 +1162,12 @@
      * @hide
      */
     public static void enableDeathOnFileUriExposure() {
-        sVmPolicyMask |= DETECT_VM_FILE_URI_EXPOSURE | PENALTY_DEATH_ON_FILE_URI_EXPOSURE;
+        sVmPolicy =
+                new VmPolicy(
+                        sVmPolicy.mask
+                                | DETECT_VM_FILE_URI_EXPOSURE
+                                | PENALTY_DEATH_ON_FILE_URI_EXPOSURE,
+                        sVmPolicy.classInstanceLimit);
     }
 
     /**
@@ -1178,7 +1177,12 @@
      * @hide
      */
     public static void disableDeathOnFileUriExposure() {
-        sVmPolicyMask &= ~(DETECT_VM_FILE_URI_EXPOSURE | PENALTY_DEATH_ON_FILE_URI_EXPOSURE);
+        sVmPolicy =
+                new VmPolicy(
+                        sVmPolicy.mask
+                                & ~(DETECT_VM_FILE_URI_EXPOSURE
+                                        | PENALTY_DEATH_ON_FILE_URI_EXPOSURE),
+                        sVmPolicy.classInstanceLimit);
     }
 
     /**
@@ -1709,14 +1713,13 @@
     public static void setVmPolicy(final VmPolicy policy) {
         synchronized (StrictMode.class) {
             sVmPolicy = policy;
-            sVmPolicyMask = policy.mask;
             setCloseGuardEnabled(vmClosableObjectLeaksEnabled());
 
             Looper looper = Looper.getMainLooper();
             if (looper != null) {
                 MessageQueue mq = looper.mQueue;
                 if (policy.classInstanceLimit.size() == 0
-                        || (sVmPolicyMask & VM_PENALTY_MASK) == 0) {
+                        || (sVmPolicy.mask & VM_PENALTY_MASK) == 0) {
                     mq.removeIdleHandler(sProcessIdleHandler);
                     sIsIdlerRegistered = false;
                 } else if (!sIsIdlerRegistered) {
@@ -1726,9 +1729,9 @@
             }
 
             int networkPolicy = NETWORK_POLICY_ACCEPT;
-            if ((sVmPolicyMask & DETECT_VM_CLEARTEXT_NETWORK) != 0) {
-                if ((sVmPolicyMask & PENALTY_DEATH) != 0
-                        || (sVmPolicyMask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0) {
+            if ((sVmPolicy.mask & DETECT_VM_CLEARTEXT_NETWORK) != 0) {
+                if ((sVmPolicy.mask & PENALTY_DEATH) != 0
+                        || (sVmPolicy.mask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0) {
                     networkPolicy = NETWORK_POLICY_REJECT;
                 } else {
                     networkPolicy = NETWORK_POLICY_LOG;
@@ -1771,37 +1774,37 @@
 
     /** @hide */
     public static boolean vmSqliteObjectLeaksEnabled() {
-        return (sVmPolicyMask & DETECT_VM_CURSOR_LEAKS) != 0;
+        return (sVmPolicy.mask & DETECT_VM_CURSOR_LEAKS) != 0;
     }
 
     /** @hide */
     public static boolean vmClosableObjectLeaksEnabled() {
-        return (sVmPolicyMask & DETECT_VM_CLOSABLE_LEAKS) != 0;
+        return (sVmPolicy.mask & DETECT_VM_CLOSABLE_LEAKS) != 0;
     }
 
     /** @hide */
     public static boolean vmRegistrationLeaksEnabled() {
-        return (sVmPolicyMask & DETECT_VM_REGISTRATION_LEAKS) != 0;
+        return (sVmPolicy.mask & DETECT_VM_REGISTRATION_LEAKS) != 0;
     }
 
     /** @hide */
     public static boolean vmFileUriExposureEnabled() {
-        return (sVmPolicyMask & DETECT_VM_FILE_URI_EXPOSURE) != 0;
+        return (sVmPolicy.mask & DETECT_VM_FILE_URI_EXPOSURE) != 0;
     }
 
     /** @hide */
     public static boolean vmCleartextNetworkEnabled() {
-        return (sVmPolicyMask & DETECT_VM_CLEARTEXT_NETWORK) != 0;
+        return (sVmPolicy.mask & DETECT_VM_CLEARTEXT_NETWORK) != 0;
     }
 
     /** @hide */
     public static boolean vmContentUriWithoutPermissionEnabled() {
-        return (sVmPolicyMask & DETECT_VM_CONTENT_URI_WITHOUT_PERMISSION) != 0;
+        return (sVmPolicy.mask & DETECT_VM_CONTENT_URI_WITHOUT_PERMISSION) != 0;
     }
 
     /** @hide */
     public static boolean vmUntaggedSocketEnabled() {
-        return (sVmPolicyMask & DETECT_VM_UNTAGGED_SOCKET) != 0;
+        return (sVmPolicy.mask & DETECT_VM_UNTAGGED_SOCKET) != 0;
     }
 
     /** @hide */
@@ -1827,7 +1830,7 @@
     /** @hide */
     public static void onFileUriExposed(Uri uri, String location) {
         final String message = uri + " exposed beyond app through " + location;
-        if ((sVmPolicyMask & PENALTY_DEATH_ON_FILE_URI_EXPOSURE) != 0) {
+        if ((sVmPolicy.mask & PENALTY_DEATH_ON_FILE_URI_EXPOSURE) != 0) {
             throw new FileUriExposedException(message);
         } else {
             onVmPolicyViolation(null, new Throwable(message));
@@ -1873,7 +1876,7 @@
             }
         }
 
-        final boolean forceDeath = (sVmPolicyMask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0;
+        final boolean forceDeath = (sVmPolicy.mask & PENALTY_DEATH_ON_CLEARTEXT_NETWORK) != 0;
         onVmPolicyViolation(
                 HexDump.dumpHexString(firstPacket).trim(), new Throwable(msg), forceDeath);
     }
@@ -1898,10 +1901,10 @@
     /** @hide */
     public static void onVmPolicyViolation(
             String message, Throwable originStack, boolean forceDeath) {
-        final boolean penaltyDropbox = (sVmPolicyMask & PENALTY_DROPBOX) != 0;
-        final boolean penaltyDeath = ((sVmPolicyMask & PENALTY_DEATH) != 0) || forceDeath;
-        final boolean penaltyLog = (sVmPolicyMask & PENALTY_LOG) != 0;
-        final ViolationInfo info = new ViolationInfo(message, originStack, sVmPolicyMask);
+        final boolean penaltyDropbox = (sVmPolicy.mask & PENALTY_DROPBOX) != 0;
+        final boolean penaltyDeath = ((sVmPolicy.mask & PENALTY_DEATH) != 0) || forceDeath;
+        final boolean penaltyLog = (sVmPolicy.mask & PENALTY_LOG) != 0;
+        final ViolationInfo info = new ViolationInfo(message, originStack, sVmPolicy.mask);
 
         // Erase stuff not relevant for process-wide violations
         info.numAnimationsRunning = 0;
@@ -1929,7 +1932,7 @@
             Log.e(TAG, message, originStack);
         }
 
-        int violationMaskSubset = PENALTY_DROPBOX | (ALL_VM_DETECT_BITS & sVmPolicyMask);
+        int violationMaskSubset = PENALTY_DROPBOX | (ALL_VM_DETECT_BITS & sVmPolicy.mask);
 
         if (penaltyDropbox && !penaltyDeath) {
             // Common case for userdebug/eng builds.  If no death and