Added some TestApi that are already used by CTS
Allows us to remove the use of private platform API from CTS.
Bug: 124134247
Test: builds
Change-Id: Iceb81ff7c9385e877d2612fbb7b506245d116928
diff --git a/api/test-current.txt b/api/test-current.txt
index 1981d68..ba497d4 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -17,6 +17,10 @@
field public static final String WRITE_OBB = "android.permission.WRITE_OBB";
}
+ public static final class R.bool {
+ field public static final int config_perDisplayFocusEnabled = 17891332; // 0x1110004
+ }
+
public static final class R.string {
field public static final int config_defaultAssistant = 17039393; // 0x1040021
field public static final int config_defaultDialer = 17039395; // 0x1040023
@@ -48,6 +52,7 @@
method public long getTotalRam();
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
+ method public static void resumeAppSwitches() throws android.os.RemoteException;
method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
}
@@ -94,6 +99,31 @@
field public static final int SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT = 0; // 0x0
}
+ public class ActivityView extends android.view.ViewGroup {
+ ctor public ActivityView(android.content.Context);
+ ctor public ActivityView(android.content.Context, android.util.AttributeSet);
+ ctor public ActivityView(android.content.Context, android.util.AttributeSet, int);
+ ctor public ActivityView(android.content.Context, android.util.AttributeSet, int, boolean);
+ method public void onLayout(boolean, int, int, int, int);
+ method public void onLocationChanged();
+ method public void performBackPress();
+ method public void release();
+ method public void setCallback(android.app.ActivityView.StateCallback);
+ method public void setForwardedInsets(android.graphics.Insets);
+ method public void startActivity(@NonNull android.content.Intent);
+ method public void startActivity(@NonNull android.content.Intent, android.os.UserHandle);
+ method public void startActivity(@NonNull android.app.PendingIntent);
+ }
+
+ public abstract static class ActivityView.StateCallback {
+ ctor public ActivityView.StateCallback();
+ method public abstract void onActivityViewDestroyed(android.app.ActivityView);
+ method public abstract void onActivityViewReady(android.app.ActivityView);
+ method public void onTaskCreated(int, android.content.ComponentName);
+ method public void onTaskMovedToFront(int);
+ method public void onTaskRemovalStarted(int);
+ }
+
public class AppDetailsActivity extends android.app.Activity {
ctor public AppDetailsActivity();
}
@@ -518,12 +548,17 @@
public abstract class Context {
method public android.content.Context createPackageContextAsUser(String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public abstract android.view.Display getDisplay();
method public android.os.UserHandle getUser();
method public int getUserId();
method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
}
+ public class ContextWrapper extends android.content.Context {
+ method public android.view.Display getDisplay();
+ }
+
}
package android.content.pm {
@@ -969,6 +1004,50 @@
}
+package android.metrics {
+
+ public class LogMaker {
+ ctor public LogMaker(int);
+ ctor public LogMaker(Object[]);
+ method public android.metrics.LogMaker addTaggedData(int, Object);
+ method public android.metrics.LogMaker clearCategory();
+ method public android.metrics.LogMaker clearPackageName();
+ method public android.metrics.LogMaker clearSubtype();
+ method public android.metrics.LogMaker clearTaggedData(int);
+ method public android.metrics.LogMaker clearType();
+ method public void deserialize(Object[]);
+ method public int getCategory();
+ method public long getCounterBucket();
+ method public String getCounterName();
+ method public int getCounterValue();
+ method public String getPackageName();
+ method public int getProcessId();
+ method public int getSubtype();
+ method public Object getTaggedData(int);
+ method public long getTimestamp();
+ method public int getType();
+ method public int getUid();
+ method public boolean isLongCounterBucket();
+ method public boolean isSubsetOf(android.metrics.LogMaker);
+ method public boolean isValidValue(Object);
+ method public Object[] serialize();
+ method public android.metrics.LogMaker setCategory(int);
+ method public android.metrics.LogMaker setPackageName(String);
+ method public android.metrics.LogMaker setSubtype(int);
+ method public android.metrics.LogMaker setType(int);
+ }
+
+ public class MetricsReader {
+ ctor public MetricsReader();
+ method public void checkpoint();
+ method public boolean hasNext();
+ method public android.metrics.LogMaker next();
+ method public void read(long);
+ method public void reset();
+ }
+
+}
+
package android.net {
public class CaptivePortal implements android.os.Parcelable {
@@ -1313,6 +1392,7 @@
public class Build {
method public static boolean is64BitAbi(String);
+ field public static final boolean IS_EMULATOR;
}
public static class Build.VERSION {
@@ -1893,6 +1973,7 @@
field public static final String LOCATION_GLOBAL_KILL_SWITCH = "location_global_kill_switch";
field public static final String LOW_POWER_MODE = "low_power";
field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
+ field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
field public static final String SMS_ACCESS_RESTRICTION_ENABLED = "sms_access_restriction_enabled";
field public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
}
@@ -1911,6 +1992,7 @@
field public static final String CONTENT_CAPTURE_ENABLED = "content_capture_enabled";
field public static final String DISABLED_PRINT_SERVICES = "disabled_print_services";
field @Deprecated public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages";
+ field public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
field public static final String NOTIFICATION_BADGING = "notification_badging";
@@ -2391,6 +2473,10 @@
method public E valueAtUnchecked(int);
}
+ public class TimeUtils {
+ method public static String formatDuration(long);
+ }
+
}
package android.util.proto {
@@ -2612,6 +2698,10 @@
field public static final int CALLBACK_ANIMATION = 1; // 0x1
}
+ public final class Display {
+ method public boolean supportsSystemDecorations();
+ }
+
public class FocusFinder {
method public static void sort(android.view.View[], int, int, android.view.ViewGroup, boolean);
}
diff --git a/config/hiddenapi-greylist.txt b/config/hiddenapi-greylist.txt
index 7f7972a..2abb631 100644
--- a/config/hiddenapi-greylist.txt
+++ b/config/hiddenapi-greylist.txt
@@ -688,7 +688,6 @@
Landroid/os/Build;->getLong(Ljava/lang/String;)J
Landroid/os/Build;->getString(Ljava/lang/String;)Ljava/lang/String;
Landroid/os/Build;->IS_DEBUGGABLE:Z
-Landroid/os/Build;->IS_EMULATOR:Z
Landroid/os/Bundle;->filterValues()Landroid/os/Bundle;
Landroid/os/Bundle;->forPair(Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
Landroid/os/Bundle;->getIBinder(Ljava/lang/String;)Landroid/os/IBinder;
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 5d4f988..ee7288f 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3925,6 +3925,14 @@
/**
* @hide
*/
+ @TestApi
+ public static void resumeAppSwitches() throws RemoteException {
+ getService().resumeAppSwitches();
+ }
+
+ /**
+ * @hide
+ */
public static void noteWakeupAlarm(PendingIntent ps, WorkSource workSource, int sourceUid,
String sourcePkg, String tag) {
try {
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index a4b763d..2ef0856 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -21,7 +21,7 @@
import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
import android.annotation.NonNull;
-import android.annotation.UnsupportedAppUsage;
+import android.annotation.TestApi;
import android.app.ActivityManager.StackInfo;
import android.content.ComponentName;
import android.content.Context;
@@ -59,6 +59,7 @@
* on VirtualDisplays.
* @hide
*/
+@TestApi
public class ActivityView extends ViewGroup {
private static final String DISPLAY_NAME = "ActivityViewVirtualDisplay";
@@ -92,7 +93,6 @@
private Insets mForwardedInsets;
- @UnsupportedAppUsage
public ActivityView(Context context) {
this(context, null /* attrs */);
}
@@ -151,7 +151,7 @@
* Called when a task is moved to the front of the stack inside the container.
* This is a filtered version of {@link TaskStackListener}
*/
- public void onTaskMovedToFront(ActivityManager.StackInfo stackInfo) { }
+ public void onTaskMovedToFront(int taskId) { }
/**
* Called when a task is about to be removed from the stack inside the container.
@@ -195,7 +195,6 @@
* @see StateCallback
* @see #startActivity(PendingIntent)
*/
- @UnsupportedAppUsage
public void startActivity(@NonNull Intent intent) {
final ActivityOptions options = prepareActivityOptions();
getContext().startActivity(intent, options.toBundle());
@@ -238,7 +237,6 @@
* @see StateCallback
* @see #startActivity(Intent)
*/
- @UnsupportedAppUsage
public void startActivity(@NonNull PendingIntent pendingIntent) {
final ActivityOptions options = prepareActivityOptions();
try {
@@ -272,7 +270,6 @@
*
* @see StateCallback
*/
- @UnsupportedAppUsage
public void release() {
if (mVirtualDisplay == null) {
throw new IllegalStateException(
@@ -556,7 +553,7 @@
// notifying the callback
if (stackInfo != null
&& taskInfo.taskId == stackInfo.taskIds[stackInfo.taskIds.length - 1]) {
- mActivityViewCallback.onTaskMovedToFront(stackInfo);
+ mActivityViewCallback.onTaskMovedToFront(taskInfo.taskId);
}
}
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index b792ad2..b607f9a 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -19,6 +19,7 @@
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.content.AutofillOptions;
import android.content.BroadcastReceiver;
@@ -2283,8 +2284,8 @@
return (mFlags & Context.CONTEXT_IGNORE_SECURITY) != 0;
}
+ @TestApi
@Override
- @UnsupportedAppUsage
public Display getDisplay() {
if (mDisplay == null) {
return mResourcesManager.getAdjustedDisplay(Display.DEFAULT_DISPLAY,
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 1f3a000..29added 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -5241,9 +5241,10 @@
public abstract DisplayAdjustments getDisplayAdjustments(int displayId);
/**
+ * @return Returns the {@link Display} object this context is associated with.
* @hide
*/
- @UnsupportedAppUsage
+ @TestApi
public abstract Display getDisplay();
/**
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index fac3266..40559d3 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -919,11 +919,9 @@
return mBase.getDisplayAdjustments(displayId);
}
- /**
- * @hide
- */
+ /** @hide */
+ @TestApi
@Override
- @UnsupportedAppUsage
public Display getDisplay() {
return mBase.getDisplay();
}
diff --git a/core/java/android/metrics/LogMaker.java b/core/java/android/metrics/LogMaker.java
index 19848ee..5496e17 100644
--- a/core/java/android/metrics/LogMaker.java
+++ b/core/java/android/metrics/LogMaker.java
@@ -16,6 +16,7 @@
package android.metrics;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.content.ComponentName;
import android.util.Log;
import android.util.SparseArray;
@@ -31,6 +32,7 @@
* @hide
*/
@SystemApi
+@TestApi
public class LogMaker {
private static final String TAG = "LogBuilder";
diff --git a/core/java/android/metrics/MetricsReader.java b/core/java/android/metrics/MetricsReader.java
index 5f356ca..27f9a5d 100644
--- a/core/java/android/metrics/MetricsReader.java
+++ b/core/java/android/metrics/MetricsReader.java
@@ -16,6 +16,7 @@
package android.metrics;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.util.EventLog;
import com.android.internal.annotations.VisibleForTesting;
@@ -35,6 +36,7 @@
* @hide
*/
@SystemApi
+@TestApi
public class MetricsReader {
private Queue<LogMaker> mPendingQueue = new LinkedList<>();
private Queue<LogMaker> mSeenQueue = new LinkedList<>();
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 83a7654..0425c62 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -107,6 +107,7 @@
* Whether this build was for an emulator device.
* @hide
*/
+ @TestApi
public static final boolean IS_EMULATOR = getString("ro.kernel.qemu").equals("1");
/**
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 77e896e..1530626 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -8131,6 +8131,7 @@
*
* @hide
*/
+ @TestApi
public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners";
private static final Validator ENABLED_VR_LISTENERS_VALIDATOR =
@@ -10780,6 +10781,7 @@
*
* @hide
*/
+ @TestApi
public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
/**
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index e4c8eeb..f8b38e9 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.SystemClock;
@@ -302,6 +303,7 @@
}
/** @hide Just for debugging; not internationalized. */
+ @TestApi
public static String formatDuration(long duration) {
synchronized (sFormatSync) {
int len = formatDurationLocked(duration, 0);
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index cb5100a..94a9a1c 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -21,6 +21,7 @@
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.app.KeyguardManager;
import android.content.res.CompatibilityInfo;
@@ -911,6 +912,7 @@
* @see #FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS
* @hide
*/
+ @TestApi
// TODO (b/114338689): Remove the method and use IWindowManager#shouldShowSystemDecors
public boolean supportsSystemDecorations() {
return (mDisplayInfo.flags & FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS) != 0;
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index e1ce2f6..5a3c536 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2998,6 +2998,8 @@
<public name="config_showDefaultEmergency" />
<!-- @hide @SystemApi -->
<public name="config_showDefaultHome" />
+ <!-- @hide @TestApi -->
+ <public name="config_perDisplayFocusEnabled" />
</public-group>
<public-group type="dimen" first-id="0x01050007">
diff --git a/proto/Android.bp b/proto/Android.bp
index 817a54d..7f826b3 100644
--- a/proto/Android.bp
+++ b/proto/Android.bp
@@ -6,6 +6,7 @@
},
srcs: ["src/**/*.proto"],
no_framework_libs: true,
+ sdk_version: "9",
// Pin java_version until jarjar is certified to support later versions. http://b/72703434
java_version: "1.8",
target: {
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
index 0cb8f22..6765316 100644
--- a/test-mock/api/test-current.txt
+++ b/test-mock/api/test-current.txt
@@ -1,6 +1,10 @@
// Signature format: 2.0
package android.test.mock {
+ public class MockContext extends android.content.Context {
+ method public android.view.Display getDisplay();
+ }
+
@Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
method public boolean arePermissionsIndividuallyControlled();
method public String getDefaultBrowserPackageNameAsUser(int);