Expose APIs used by CtsPermissionTestCases
Test: atest CtsPermissionTestCases
Bug: 77604428
Change-Id: Ib5e9b678e98aab86dac90610ed071eb89f14fce9
diff --git a/api/test-current.txt b/api/test-current.txt
index 50aaa0a..a80e720 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1,10 +1,13 @@
package android {
public static final class Manifest.permission {
+ field public static final java.lang.String ACCESS_NOTIFICATIONS = "android.permission.ACCESS_NOTIFICATIONS";
field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE";
+ field public static final java.lang.String CHANGE_APP_IDLE_STATE = "android.permission.CHANGE_APP_IDLE_STATE";
field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
+ field public static final java.lang.String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
}
}
@@ -61,9 +64,12 @@
public class AppOpsManager {
method public static java.lang.String[] getOpStrs();
method public boolean isOperationActive(int, int, java.lang.String);
+ method public static java.lang.String opToPermission(int);
+ method public static int permissionToOpCode(java.lang.String);
method public void setMode(int, int, java.lang.String, int);
method public void startWatchingActive(int[], android.app.AppOpsManager.OnOpActiveChangedListener);
method public void stopWatchingActive(android.app.AppOpsManager.OnOpActiveChangedListener);
+ method public static int strOpToOp(java.lang.String);
field public static final java.lang.String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
field public static final java.lang.String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
field public static final java.lang.String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
@@ -109,6 +115,7 @@
field public static final java.lang.String OPSTR_WRITE_WALLPAPER = "android:write_wallpaper";
field public static final int OP_RECORD_AUDIO = 27; // 0x1b
field public static final int OP_SYSTEM_ALERT_WINDOW = 24; // 0x18
+ field public static final int _NUM_OP = 77; // 0x4d
}
public static abstract interface AppOpsManager.OnOpActiveChangedListener {
@@ -222,11 +229,16 @@
}
public abstract class Context {
+ method public abstract java.lang.String getOpPackageName();
method public android.os.UserHandle getUser();
method public int getUserId();
method public void setAutofillCompatibilityEnabled(boolean);
}
+ public class ContextWrapper extends android.content.Context {
+ method public java.lang.String getOpPackageName();
+ }
+
}
package android.content.pm {
@@ -471,6 +483,10 @@
method public void setType(int);
}
+ public class Location implements android.os.Parcelable {
+ method public void makeComplete();
+ }
+
public class LocationManager {
method public java.lang.String[] getBackgroundThrottlingWhitelist();
}
@@ -667,6 +683,7 @@
public final class UserHandle implements android.os.Parcelable {
method public static int getAppId(int);
method public int getIdentifier();
+ method public static boolean isApp(int);
field public static final android.os.UserHandle SYSTEM;
}
@@ -737,6 +754,14 @@
package android.provider {
+ public static final class ContactsContract.CommonDataKinds.Phone implements android.provider.ContactsContract.CommonDataKinds.CommonColumns android.provider.ContactsContract.DataColumnsWithJoins {
+ field public static final android.net.Uri ENTERPRISE_CONTENT_URI;
+ }
+
+ public static final class ContactsContract.RawContactsEntity implements android.provider.BaseColumns android.provider.ContactsContract.DataColumns android.provider.ContactsContract.RawContactsColumns {
+ field public static final android.net.Uri CORP_CONTENT_URI;
+ }
+
public final class Settings {
field public static final java.lang.String ACTION_ENTERPRISE_PRIVACY_SETTINGS = "android.settings.ENTERPRISE_PRIVACY_SETTINGS";
}
@@ -965,6 +990,7 @@
method public void setCarrierTestOverride(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
field public static final int UNKNOWN_CARRIER_ID_LIST_VERSION = -1; // 0xffffffff
}
+
}
package android.telephony.mbms {
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt
index a1219ea..7fa3249 100644
--- a/config/hiddenapi-light-greylist.txt
+++ b/config/hiddenapi-light-greylist.txt
@@ -228,10 +228,8 @@
Landroid/app/AppOpsManager;->OP_WIFI_SCAN:I
Landroid/app/AppOpsManager;->OP_WRITE_CONTACTS:I
Landroid/app/AppOpsManager;->OP_WRITE_SMS:I
-Landroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I
Landroid/app/AppOpsManager;->setRestriction(III[Ljava/lang/String;)V
Landroid/app/AppOpsManager;->sOpPerms:[Ljava/lang/String;
-Landroid/app/AppOpsManager;->strOpToOp(Ljava/lang/String;)I
Landroid/app/backup/BackupDataInput$EntityHeader;->dataSize:I
Landroid/app/backup/BackupDataInput$EntityHeader;->key:Ljava/lang/String;
Landroid/app/backup/BackupDataInputStream;->dataSize:I
diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt
index 4f911ac..b5cce56 100644
--- a/config/hiddenapi-vendor-list.txt
+++ b/config/hiddenapi-vendor-list.txt
@@ -82,7 +82,6 @@
Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V
Landroid/content/ContentValues;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
Landroid/content/ContentValues;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
-Landroid/content/Context;->getOpPackageName()Ljava/lang/String;
Landroid/content/Context;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
Landroid/content/Context;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
Landroid/content/Context;->startServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/ComponentName;
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 7424862..b8cc665 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -317,6 +317,7 @@
/** @hide Any app start foreground service. */
public static final int OP_START_FOREGROUND = 76;
/** @hide */
+ @TestApi
public static final int _NUM_OP = 77;
/** Access to coarse location information. */
@@ -1376,6 +1377,7 @@
* Retrieve the permission associated with an operation, or null if there is not one.
* @hide
*/
+ @TestApi
public static String opToPermission(int op) {
return sOpPerms[op];
}
@@ -1394,6 +1396,7 @@
* to the corresponding app op.
* @hide
*/
+ @TestApi
public static int permissionToOpCode(String permission) {
Integer boxedOpCode = sPermToOp.get(permission);
return boxedOpCode != null ? boxedOpCode : OP_NONE;
@@ -1993,6 +1996,7 @@
/**
* {@hide}
*/
+ @TestApi
public static int strOpToOp(String op) {
Integer val = sOpStrToOp.get(op);
if (val == null) {
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index ede7ee4..64998a3 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -729,6 +729,7 @@
* cases where system components are loaded into other app processes, in which
* case this will be the name of the primary package in that process (so that app
* ops uid verification will work with the name). */
+ @TestApi
public abstract String getOpPackageName();
/** Return the full application info for this context's package. */
diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java
index 4d4f31d..66ebbdb 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -145,6 +145,7 @@
* "it's system", because of isolated UIDs. Use {@link #isCore} for that.
* @hide
*/
+ @TestApi
public static boolean isApp(int uid) {
if (uid > 0) {
final int appId = getAppId(uid);
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index c94da9a..f7409d0 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -20,6 +20,7 @@
import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -5050,6 +5051,7 @@
*
* @hide
*/
+ @TestApi
public static final Uri CORP_CONTENT_URI =
Uri.withAppendedPath(AUTHORITY_URI, "raw_contact_entities_corp");
@@ -6057,6 +6059,7 @@
*
* @hide
*/
+ @TestApi
public static final Uri ENTERPRISE_CONTENT_URI =
Uri.withAppendedPath(Data.ENTERPRISE_CONTENT_URI, "phones");
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index da494d4..637fff0 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -726,7 +726,7 @@
android:description="@string/permdesc_receiveMms"
android:protectionLevel="dangerous" />
- <!-- Allows an application to read previously received cell broadcast
+ <!-- @TestApi Allows an application to read previously received cell broadcast
messages and to register a content observer to get notifications when
a cell broadcast has been received and added to the database. For
emergency alerts, the database is updated immediately after the
@@ -3324,7 +3324,7 @@
<permission android:name="android.permission.OBSERVE_APP_USAGE"
android:protectionLevel="signature|privileged" />
- <!-- @hide @SystemApi Allows an application to change the app idle state of an app.
+ <!-- @hide @TestApi @SystemApi Allows an application to change the app idle state of an app.
<p>Not for use by third-party applications. -->
<permission android:name="android.permission.CHANGE_APP_IDLE_STATE"
android:protectionLevel="signature|privileged" />
@@ -3550,7 +3550,7 @@
<permission android:name="android.permission.UPDATE_LOCK"
android:protectionLevel="signature|privileged" />
- <!-- @SystemApi Allows an application to read the current set of notifications, including
+ <!-- @SystemApi @TestApi Allows an application to read the current set of notifications, including
any metadata and intents attached.
@hide -->
<permission android:name="android.permission.ACCESS_NOTIFICATIONS"
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index c9d2f7f..703f2dc 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -17,6 +17,7 @@
package android.location;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -999,6 +1000,7 @@
* @see #isComplete
* @hide
*/
+ @TestApi
@SystemApi
public void makeComplete() {
if (mProvider == null) mProvider = "?";