Merge "Enable StrictMode checks for explicit garbageCollection from T." am: ace6c8c76e am: 0c6f92501a am: 54bbbedfd2 am: 4856f61946 am: d1729b65c8

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2051241

Change-Id: I82b066a8fdf8b740854e7f88971046d0ae67bd1b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Miguel Aranda
2022-08-31 17:29:56 +00:00
committed by Automerger Merge Worker
4 changed files with 21 additions and 26 deletions

View File

@@ -32172,6 +32172,7 @@ package android.os {
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 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 detectResourceMismatches();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo();
@@ -32186,6 +32187,7 @@ package android.os {
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 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 permitResourceMismatches();
method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo();
@@ -32767,6 +32769,9 @@ package android.os.strictmode {
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 {
}

View File

@@ -1827,10 +1827,6 @@ package android.os {
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 {
ctor public StrictMode.ViolationInfo(android.os.Parcel);
ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean);
@@ -2039,13 +2035,6 @@ package android.os.storage {
}
package android.os.strictmode {
public final class ExplicitGcViolation extends android.os.strictmode.Violation {
}
}
package android.os.vibrator {
public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment {

View File

@@ -26,6 +26,9 @@ import android.annotation.TestApi;
import android.app.ActivityManager;
import android.app.ActivityThread;
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.content.BroadcastReceiver;
import android.content.Context;
@@ -344,6 +347,13 @@ public final class StrictMode {
public static final int NETWORK_POLICY_LOG = 1;
/** {@hide} */
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.
// Note: must be before static initialization of sVmPolicy.
@@ -496,6 +506,7 @@ public final class StrictMode {
* <p>As of the Gingerbread release this includes network and disk operations but will
* likely expand in future releases.
*/
@SuppressWarnings("AndroidFrameworkCompatChange")
public @NonNull Builder detectAll() {
detectDiskReads();
detectDiskWrites();
@@ -511,6 +522,9 @@ public final class StrictMode {
if (targetSdk >= Build.VERSION_CODES.O) {
detectUnbufferedIo();
}
if (CompatChanges.isChangeEnabled(DETECT_EXPLICIT_GC)) {
detectExplicitGc();
}
return this;
}
@@ -591,26 +605,16 @@ public final class StrictMode {
}
/**
* Detect explicit GC requests, i.e. calls to Runtime.gc().
*
* @hide
* Detect calls to {@link Runtime#gc()}.
*/
@TestApi
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);
}
/**
* Disable detection of explicit GC requests, i.e. calls to Runtime.gc().
*
* @hide
* Disable detection of calls to {@link Runtime#gc()}.
*/
public @NonNull Builder permitExplicitGc() {
// TODO(b/3400644): Un-hide this for next API update
return disable(DETECT_THREAD_EXPLICIT_GC);
}

View File

@@ -19,10 +19,7 @@ import android.annotation.TestApi;
/**
* See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}.
*
* @hide
*/
@TestApi
public final class ExplicitGcViolation extends Violation {
/** @hide */
public ExplicitGcViolation() {