summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt5
-rw-r--r--core/api/test-current.txt11
-rw-r--r--core/java/android/os/StrictMode.java28
-rw-r--r--core/java/android/os/strictmode/ExplicitGcViolation.java3
4 files changed, 21 insertions, 26 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 584c67f288c1..a85c69b6284c 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -32083,6 +32083,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();
@@ -32097,6 +32098,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();
@@ -32650,6 +32652,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 {
}
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 59aa48a12c1d..b59b9d05b642 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -1813,10 +1813,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);
@@ -2052,13 +2048,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 {
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index 412a33a1c124..113a64048796 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -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);
}
diff --git a/core/java/android/os/strictmode/ExplicitGcViolation.java b/core/java/android/os/strictmode/ExplicitGcViolation.java
index 583ed1ab4505..c4ae82ddbc05 100644
--- a/core/java/android/os/strictmode/ExplicitGcViolation.java
+++ b/core/java/android/os/strictmode/ExplicitGcViolation.java
@@ -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() {