Get android.os tests running against real APIs.
Combination of moving to existing public API, tagging things as
@TestApi, and bringing utility methods into tests.
Bug: 13282254
Test: atest cts/tests/tests/os/
Change-Id: Ifd24c0d048d200e8595e194890cc1dc53ddc2b3e
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 3120421..13b67fd 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -477,6 +477,7 @@
*
* {@hide}
*/
+ @TestApi
public static final int PRIVATE_FLAG_PRIVILEGED = 1<<3;
/**
@@ -649,6 +650,7 @@
* Private/hidden flags. See {@code PRIVATE_FLAG_...} constants.
* @hide
*/
+ @TestApi
public @ApplicationInfoPrivateFlags int privateFlags;
/**
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 721063a..a622af8 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2937,6 +2937,7 @@
*
* @hide
*/
+ @TestApi
public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
/**
@@ -2948,6 +2949,7 @@
*
* @hide
*/
+ @TestApi
public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
/**
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 80c534c..e71f4e9 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -165,6 +165,11 @@
public static final String[] SUPPORTED_64_BIT_ABIS =
getStringList("ro.product.cpu.abilist64", ",");
+ /** {@hide} */
+ @TestApi
+ public static boolean is64BitAbi(String abi) {
+ return VMRuntime.is64BitAbi(abi);
+ }
static {
/*
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 213260f..bdd6cfe 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -149,6 +149,7 @@
}
/** {@hide} */
+ @TestApi
public static File getStorageDirectory() {
return DIR_ANDROID_STORAGE;
}
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index b1c33c2..7c2ecc5 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -18,6 +18,7 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
+import android.annotation.TestApi;
import android.os.MessageQueueProto;
import android.util.Log;
import android.util.Printer;
@@ -458,6 +459,7 @@
*
* @hide
*/
+ @TestApi
public int postSyncBarrier() {
return postSyncBarrier(SystemClock.uptimeMillis());
}
@@ -501,6 +503,7 @@
*
* @hide
*/
+ @TestApi
public void removeSyncBarrier(int token) {
// Remove a sync barrier token from the queue.
// If the queue is no longer stalled by a barrier then wake it.
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 3d4ce61..8878260 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -1465,7 +1465,6 @@
* {@link #readParcelableList(List, ClassLoader)} if required.
*
* @see #readParcelableList(List, ClassLoader)
- * @hide
*/
public final <T extends Parcelable> void writeParcelableList(@Nullable List<T> val, int flags) {
if (val == null) {
@@ -2570,7 +2569,6 @@
* list was {@code null}, {@code list} is cleared.
*
* @see #writeParcelableList(List, int)
- * @hide
*/
@NonNull
public final <T extends Parcelable> List<T> readParcelableList(@NonNull List<T> list,
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 9c25848..463a6aa 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -961,7 +961,6 @@
*
* @hide Requires signature permission.
*/
- @TestApi
public void nap(long time) {
try {
mService.nap(time);
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java
index ea76c9a3..1ff8c68 100644
--- a/core/java/android/os/StrictMode.java
+++ b/core/java/android/os/StrictMode.java
@@ -577,6 +577,7 @@
*
* @hide
*/
+ @TestApi
public Builder detectExplicitGc() {
// TODO(b/3400644): Un-hide this for next API update
// TODO(b/3400644): Un-hide ExplicitGcViolation for next API update
@@ -1814,6 +1815,7 @@
}
/** @hide */
+ @TestApi
public static void conditionallyCheckInstanceCounts() {
VmPolicy policy = getVmPolicy();
int policySize = policy.classInstanceLimit.size();
@@ -2005,10 +2007,6 @@
}
/** @hide */
- public static final String CLEARTEXT_DETECTED_MSG =
- "Detected cleartext network traffic from UID ";
-
- /** @hide */
public static void onCleartextNetworkDetected(byte[] firstPacket) {
byte[] rawAddr = null;
if (firstPacket != null) {
@@ -2024,7 +2022,7 @@
}
final int uid = android.os.Process.myUid();
- String msg = CLEARTEXT_DETECTED_MSG + uid;
+ String msg = "Detected cleartext network traffic from UID " + uid;
if (rawAddr != null) {
try {
msg += " to " + InetAddress.getByAddress(rawAddr);
diff --git a/core/java/android/os/SystemProperties.java b/core/java/android/os/SystemProperties.java
index 7d3ba6a..fb34a52 100644
--- a/core/java/android/os/SystemProperties.java
+++ b/core/java/android/os/SystemProperties.java
@@ -96,6 +96,7 @@
*/
@NonNull
@SystemApi
+ @TestApi
public static String get(@NonNull String key) {
if (TRACK_KEY_ACCESS) onKeyAccess(key);
return native_get(key);
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 91c69fb..01d85c6 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -54,6 +54,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_CLICK = Effect.CLICK;
/**
@@ -62,6 +63,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_DOUBLE_CLICK = Effect.DOUBLE_CLICK;
/**
@@ -69,6 +71,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_TICK = Effect.TICK;
/**
@@ -76,6 +79,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_THUD = Effect.THUD;
/**
@@ -83,6 +87,7 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_POP = Effect.POP;
/**
@@ -90,8 +95,20 @@
* @see #get(int)
* @hide
*/
+ @TestApi
public static final int EFFECT_HEAVY_CLICK = Effect.HEAVY_CLICK;
+ /** {@hide} */
+ @TestApi
+ public static final int EFFECT_STRENGTH_LIGHT = EffectStrength.LIGHT;
+
+ /** {@hide} */
+ @TestApi
+ public static final int EFFECT_STRENGTH_MEDIUM = EffectStrength.MEDIUM;
+
+ /** {@hide} */
+ @TestApi
+ public static final int EFFECT_STRENGTH_STRONG = EffectStrength.STRONG;
/**
* Ringtone patterns. They may correspond with the device's ringtone audio, or may just be a
@@ -307,6 +324,7 @@
*
* @hide
*/
+ @TestApi
public abstract long getDuration();
/**
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index 3270719..2299ab2 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -2,6 +2,7 @@
import android.annotation.Nullable;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.content.Context;
import android.os.WorkSourceProto;
import android.provider.Settings;
@@ -83,6 +84,7 @@
}
/** @hide */
+ @TestApi
public WorkSource(int uid) {
mNum = 1;
mUids = new int[] { uid, 0 };
@@ -127,16 +129,19 @@
}
/** @hide */
+ @TestApi
public int size() {
return mNum;
}
/** @hide */
+ @TestApi
public int get(int index) {
return mUids[index];
}
/** @hide */
+ @TestApi
public String getName(int index) {
return mNames != null ? mNames[index] : null;
}
@@ -328,6 +333,7 @@
* to be aware of internal differences.
*/
@Deprecated
+ @TestApi
public WorkSource[] setReturningDiffs(WorkSource other) {
synchronized (sTmpWorkSource) {
sNewbWork = null;
@@ -379,6 +385,7 @@
* @deprecated meant for unit testing use only. Will be removed in a future API revision.
*/
@Deprecated
+ @TestApi
public WorkSource addReturningNewbs(WorkSource other) {
synchronized (sTmpWorkSource) {
sNewbWork = null;
@@ -388,6 +395,7 @@
}
/** @hide */
+ @TestApi
public boolean add(int uid) {
if (mNum <= 0) {
mNames = null;
@@ -407,6 +415,7 @@
}
/** @hide */
+ @TestApi
public boolean add(int uid, String name) {
if (mNum <= 0) {
insert(0, uid, name);
diff --git a/core/java/android/os/health/HealthKeys.java b/core/java/android/os/health/HealthKeys.java
index 842def3..5d60411 100644
--- a/core/java/android/os/health/HealthKeys.java
+++ b/core/java/android/os/health/HealthKeys.java
@@ -16,10 +16,8 @@
package android.os.health;
-import android.os.Parcel;
-import android.os.Parcelable;
+import android.annotation.TestApi;
-import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -32,6 +30,7 @@
*
* @hide
*/
+@TestApi
public class HealthKeys {
/**
@@ -81,6 +80,7 @@
*
* @hide
*/
+ @TestApi
public static class Constants {
private final String mDataType;
private final int[][] mKeys = new int[TYPE_COUNT][];
diff --git a/core/java/android/os/health/HealthStats.java b/core/java/android/os/health/HealthStats.java
index 90d89c5..74ce515 100644
--- a/core/java/android/os/health/HealthStats.java
+++ b/core/java/android/os/health/HealthStats.java
@@ -16,6 +16,7 @@
package android.os.health;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;
@@ -126,6 +127,7 @@
*
* @hide
*/
+ @TestApi
public HealthStats(Parcel in) {
int count;
diff --git a/core/java/android/os/health/HealthStatsParceler.java b/core/java/android/os/health/HealthStatsParceler.java
index 28b3694..d358a2e 100644
--- a/core/java/android/os/health/HealthStatsParceler.java
+++ b/core/java/android/os/health/HealthStatsParceler.java
@@ -16,6 +16,7 @@
package android.os.health;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;
@@ -35,6 +36,7 @@
* reuse them.
* @hide
*/
+@TestApi
public class HealthStatsParceler implements Parcelable {
private HealthStatsWriter mWriter;
private HealthStats mHealthStats;
diff --git a/core/java/android/os/health/HealthStatsWriter.java b/core/java/android/os/health/HealthStatsWriter.java
index 351836b..d4d10b0 100644
--- a/core/java/android/os/health/HealthStatsWriter.java
+++ b/core/java/android/os/health/HealthStatsWriter.java
@@ -16,6 +16,7 @@
package android.os.health;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;
@@ -31,6 +32,7 @@
*
* @hide
*/
+@TestApi
public class HealthStatsWriter {
private final HealthKeys.Constants mConstants;
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index fd5a22a..9880142 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -17,6 +17,7 @@
package android.os.storage;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -162,6 +163,7 @@
* @return the mount path
* @hide
*/
+ @TestApi
public String getPath() {
return mPath.toString();
}
diff --git a/core/java/android/os/strictmode/ExplicitGcViolation.java b/core/java/android/os/strictmode/ExplicitGcViolation.java
index c7480f9..583ed1a 100644
--- a/core/java/android/os/strictmode/ExplicitGcViolation.java
+++ b/core/java/android/os/strictmode/ExplicitGcViolation.java
@@ -15,11 +15,14 @@
*/
package android.os.strictmode;
+import android.annotation.TestApi;
+
/**
* See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}.
*
* @hide
*/
+@TestApi
public final class ExplicitGcViolation extends Violation {
/** @hide */
public ExplicitGcViolation() {
diff --git a/core/java/android/os/strictmode/ImplicitDirectBootViolation.java b/core/java/android/os/strictmode/ImplicitDirectBootViolation.java
index d7877ca..e52e212 100644
--- a/core/java/android/os/strictmode/ImplicitDirectBootViolation.java
+++ b/core/java/android/os/strictmode/ImplicitDirectBootViolation.java
@@ -26,12 +26,8 @@
*/
public final class ImplicitDirectBootViolation extends Violation {
/** @hide */
- public static final String MESSAGE =
- "Implicitly relying on automatic Direct Boot filtering; request explicit"
- + " filtering with PackageManager.MATCH_DIRECT_BOOT flags";
-
- /** @hide */
public ImplicitDirectBootViolation() {
- super(MESSAGE);
+ super("Implicitly relying on automatic Direct Boot filtering; request explicit"
+ + " filtering with PackageManager.MATCH_DIRECT_BOOT flags");
}
}
diff --git a/core/java/android/os/strictmode/UntaggedSocketViolation.java b/core/java/android/os/strictmode/UntaggedSocketViolation.java
index 836a8b9..3b1ef25 100644
--- a/core/java/android/os/strictmode/UntaggedSocketViolation.java
+++ b/core/java/android/os/strictmode/UntaggedSocketViolation.java
@@ -17,12 +17,8 @@
public final class UntaggedSocketViolation extends Violation {
/** @hide */
- public static final String MESSAGE =
- "Untagged socket detected; use"
- + " TrafficStats.setThreadSocketTag() to track all network usage";
-
- /** @hide */
public UntaggedSocketViolation() {
- super(MESSAGE);
+ super("Untagged socket detected; use TrafficStats.setThreadSocketTag() to "
+ + "track all network usage");
}
}