Merge "Add new StrictMode thread policy - DETECT_UNBUFFERED_IO" am: c60c70dcf9
am: 8297d74de5
Change-Id: Ic0778b573e1d9f0b1a9af6257ce91f9251beec30
This commit is contained in:
committed by
android-build-merger
commit
61eb1615a6
@@ -29169,6 +29169,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
||||||
@@ -29181,6 +29182,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class StrictMode.VmPolicy {
|
public static final class StrictMode.VmPolicy {
|
||||||
|
|||||||
@@ -31637,6 +31637,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
||||||
@@ -31649,6 +31650,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class StrictMode.VmPolicy {
|
public static final class StrictMode.VmPolicy {
|
||||||
|
|||||||
@@ -29238,6 +29238,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeath();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDeathOnNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
method public android.os.StrictMode.ThreadPolicy.Builder penaltyDialog();
|
||||||
@@ -29250,6 +29251,7 @@ package android.os {
|
|||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
||||||
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
method public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
||||||
|
method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class StrictMode.VmPolicy {
|
public static final class StrictMode.VmPolicy {
|
||||||
|
|||||||
@@ -191,9 +191,14 @@ public final class StrictMode {
|
|||||||
*/
|
*/
|
||||||
public static final int DETECT_RESOURCE_MISMATCH = 0x10; // for ThreadPolicy
|
public static final int DETECT_RESOURCE_MISMATCH = 0x10; // for ThreadPolicy
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static final int DETECT_UNBUFFERED_IO = 0x20; // for ThreadPolicy
|
||||||
|
|
||||||
private static final int ALL_THREAD_DETECT_BITS =
|
private static final int ALL_THREAD_DETECT_BITS =
|
||||||
DETECT_DISK_WRITE | DETECT_DISK_READ | DETECT_NETWORK | DETECT_CUSTOM |
|
DETECT_DISK_WRITE | DETECT_DISK_READ | DETECT_NETWORK | DETECT_CUSTOM |
|
||||||
DETECT_RESOURCE_MISMATCH;
|
DETECT_RESOURCE_MISMATCH | DETECT_UNBUFFERED_IO;
|
||||||
|
|
||||||
// Byte 2: Process-policy
|
// Byte 2: Process-policy
|
||||||
|
|
||||||
@@ -464,6 +469,20 @@ public final class StrictMode {
|
|||||||
return disable(DETECT_RESOURCE_MISMATCH);
|
return disable(DETECT_RESOURCE_MISMATCH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect unbuffered input/output operations.
|
||||||
|
*/
|
||||||
|
public Builder detectUnbufferedIo() {
|
||||||
|
return enable(DETECT_UNBUFFERED_IO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect unbuffered input/output operations.
|
||||||
|
*/
|
||||||
|
public Builder permitUnbufferedIo() {
|
||||||
|
return disable(DETECT_UNBUFFERED_IO);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables detection of mismatches between defined resource types
|
* Enables detection of mismatches between defined resource types
|
||||||
* and getter calls.
|
* and getter calls.
|
||||||
@@ -973,6 +992,15 @@ public final class StrictMode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
private static class StrictModeUnbufferedIOViolation extends StrictModeViolation {
|
||||||
|
public StrictModeUnbufferedIOViolation(int policyMask) {
|
||||||
|
super(policyMask, DETECT_UNBUFFERED_IO, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the bitmask of the current thread's policy.
|
* Returns the bitmask of the current thread's policy.
|
||||||
*
|
*
|
||||||
@@ -1281,6 +1309,20 @@ public final class StrictMode {
|
|||||||
startHandlingViolationException(e);
|
startHandlingViolationException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Part of BlockGuard.Policy; just part of StrictMode:
|
||||||
|
public void onUnbufferedIO() {
|
||||||
|
if ((mPolicyMask & DETECT_UNBUFFERED_IO) == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tooManyViolationsThisLoop()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BlockGuard.BlockGuardPolicyException e =
|
||||||
|
new StrictModeUnbufferedIOViolation(mPolicyMask);
|
||||||
|
e.fillInStackTrace();
|
||||||
|
startHandlingViolationException(e);
|
||||||
|
}
|
||||||
|
|
||||||
// Part of BlockGuard.Policy interface:
|
// Part of BlockGuard.Policy interface:
|
||||||
public void onReadFromDisk() {
|
public void onReadFromDisk() {
|
||||||
if ((mPolicyMask & DETECT_DISK_READ) == 0) {
|
if ((mPolicyMask & DETECT_DISK_READ) == 0) {
|
||||||
@@ -2205,6 +2247,18 @@ public final class StrictMode {
|
|||||||
((AndroidBlockGuardPolicy) policy).onResourceMismatch(tag);
|
((AndroidBlockGuardPolicy) policy).onResourceMismatch(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static void noteUnbufferedIO() {
|
||||||
|
BlockGuard.Policy policy = BlockGuard.getThreadPolicy();
|
||||||
|
if (!(policy instanceof AndroidBlockGuardPolicy)) {
|
||||||
|
// StrictMode not enabled.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
((AndroidBlockGuardPolicy) policy).onUnbufferedIO();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user