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