Merge "Enable StrictMode checks for explicit garbageCollection from T." am: ace6c8c76e am: 0c6f92501a am: 54bbbedfd2
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2051241 Change-Id: I70672264411d6f518981849a2e73246c3d62f01a Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -32083,6 +32083,7 @@ package android.os {
|
|||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites();
|
||||||
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
|
||||||
@@ -32097,6 +32098,7 @@ package android.os {
|
|||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites();
|
||||||
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitExplicitGc();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches();
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
|
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
|
||||||
@@ -32650,6 +32652,9 @@ package android.os.strictmode {
|
|||||||
public final class DiskWriteViolation extends android.os.strictmode.Violation {
|
public final class DiskWriteViolation extends android.os.strictmode.Violation {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class ExplicitGcViolation extends android.os.strictmode.Violation {
|
||||||
|
}
|
||||||
|
|
||||||
public final class FileUriExposedViolation extends android.os.strictmode.Violation {
|
public final class FileUriExposedViolation extends android.os.strictmode.Violation {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1815,10 +1815,6 @@ package android.os {
|
|||||||
method public static void setViolationLogger(android.os.StrictMode.ViolationLogger);
|
method public static void setViolationLogger(android.os.StrictMode.ViolationLogger);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class StrictMode.ThreadPolicy.Builder {
|
|
||||||
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final class StrictMode.ViolationInfo implements android.os.Parcelable {
|
public static final class StrictMode.ViolationInfo implements android.os.Parcelable {
|
||||||
ctor public StrictMode.ViolationInfo(android.os.Parcel);
|
ctor public StrictMode.ViolationInfo(android.os.Parcel);
|
||||||
ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
|
ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
|
||||||
@@ -2055,13 +2051,6 @@ package android.os.storage {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
package android.os.strictmode {
|
|
||||||
|
|
||||||
public final class ExplicitGcViolation extends android.os.strictmode.Violation {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
package android.os.vibrator {
|
package android.os.vibrator {
|
||||||
|
|
||||||
public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment {
|
public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment {
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ import android.annotation.TestApi;
|
|||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityThread;
|
import android.app.ActivityThread;
|
||||||
import android.app.IActivityManager;
|
import android.app.IActivityManager;
|
||||||
|
import android.app.compat.CompatChanges;
|
||||||
|
import android.compat.annotation.ChangeId;
|
||||||
|
import android.compat.annotation.EnabledSince;
|
||||||
import android.compat.annotation.UnsupportedAppUsage;
|
import android.compat.annotation.UnsupportedAppUsage;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -345,6 +348,13 @@ public final class StrictMode {
|
|||||||
/** {@hide} */
|
/** {@hide} */
|
||||||
public static final int NETWORK_POLICY_REJECT = 2;
|
public static final int NETWORK_POLICY_REJECT = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detect explicit calls to {@link Runtime#gc()}.
|
||||||
|
*/
|
||||||
|
@ChangeId
|
||||||
|
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
|
||||||
|
static final long DETECT_EXPLICIT_GC = 3400644L;
|
||||||
|
|
||||||
// TODO: wrap in some ImmutableHashMap thing.
|
// TODO: wrap in some ImmutableHashMap thing.
|
||||||
// Note: must be before static initialization of sVmPolicy.
|
// Note: must be before static initialization of sVmPolicy.
|
||||||
private static final HashMap<Class, Integer> EMPTY_CLASS_LIMIT_MAP =
|
private static final HashMap<Class, Integer> EMPTY_CLASS_LIMIT_MAP =
|
||||||
@@ -496,6 +506,7 @@ public final class StrictMode {
|
|||||||
* <p>As of the Gingerbread release this includes network and disk operations but will
|
* <p>As of the Gingerbread release this includes network and disk operations but will
|
||||||
* likely expand in future releases.
|
* likely expand in future releases.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("AndroidFrameworkCompatChange")
|
||||||
public @NonNull Builder detectAll() {
|
public @NonNull Builder detectAll() {
|
||||||
detectDiskReads();
|
detectDiskReads();
|
||||||
detectDiskWrites();
|
detectDiskWrites();
|
||||||
@@ -511,6 +522,9 @@ public final class StrictMode {
|
|||||||
if (targetSdk >= Build.VERSION_CODES.O) {
|
if (targetSdk >= Build.VERSION_CODES.O) {
|
||||||
detectUnbufferedIo();
|
detectUnbufferedIo();
|
||||||
}
|
}
|
||||||
|
if (CompatChanges.isChangeEnabled(DETECT_EXPLICIT_GC)) {
|
||||||
|
detectExplicitGc();
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,26 +605,16 @@ public final class StrictMode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect explicit GC requests, i.e. calls to Runtime.gc().
|
* Detect calls to {@link Runtime#gc()}.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
@TestApi
|
|
||||||
public @NonNull Builder detectExplicitGc() {
|
public @NonNull Builder detectExplicitGc() {
|
||||||
// TODO(b/3400644): Un-hide this for next API update
|
|
||||||
// TODO(b/3400644): Un-hide ExplicitGcViolation for next API update
|
|
||||||
// TODO(b/3400644): Make DETECT_EXPLICIT_GC a @TestApi for next API update
|
|
||||||
// TODO(b/3400644): Call this from detectAll in next API update
|
|
||||||
return enable(DETECT_THREAD_EXPLICIT_GC);
|
return enable(DETECT_THREAD_EXPLICIT_GC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disable detection of explicit GC requests, i.e. calls to Runtime.gc().
|
* Disable detection of calls to {@link Runtime#gc()}.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder permitExplicitGc() {
|
public @NonNull Builder permitExplicitGc() {
|
||||||
// TODO(b/3400644): Un-hide this for next API update
|
|
||||||
return disable(DETECT_THREAD_EXPLICIT_GC);
|
return disable(DETECT_THREAD_EXPLICIT_GC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,7 @@ import android.annotation.TestApi;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}.
|
* See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
@TestApi
|
|
||||||
public final class ExplicitGcViolation extends Violation {
|
public final class ExplicitGcViolation extends Violation {
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public ExplicitGcViolation() {
|
public ExplicitGcViolation() {
|
||||||
|
|||||||
Reference in New Issue
Block a user