Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1dbac8d0 authored by Manjeet Rulhania's avatar Manjeet Rulhania Committed by Android (Google) Code Review
Browse files

Merge "Support virtual device in permissions listener" into main

parents c9d81431 31207a9b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4116,6 +4116,7 @@ package android.content.pm {
  public static interface PackageManager.OnPermissionsChangedListener {
    method public void onPermissionsChanged(int);
    method @FlaggedApi("android.permission.flags.device_aware_permission_apis") public default void onPermissionsChanged(int, @NonNull String);
  }
  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKED}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
+23 −3
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.app.PackageInstallObserver;
import android.app.PropertyInvalidatedCache;
import android.app.admin.DevicePolicyManager;
import android.app.usage.StorageStatsManager;
import android.companion.virtual.VirtualDeviceManager;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
@@ -710,12 +711,31 @@ public abstract class PackageManager {
     */
    @SystemApi
    public interface OnPermissionsChangedListener {

        /**
         * Called when the permissions for a UID change.
         * Called when the permissions for a UID change for the default device.
         *
         * @param uid The UID with a change.
         * @see Context#DEVICE_ID_DEFAULT
         */
        void onPermissionsChanged(int uid);

        /**
         * Called when the permissions for a UID change for a device, including virtual devices.
         *
         * @param uid The UID of permission change event.
         * @param persistentDeviceId The persistent device ID of permission change event.
         *
         * @see VirtualDeviceManager.VirtualDevice#getPersistentDeviceId()
         * @see VirtualDeviceManager#PERSISTENT_DEVICE_ID_DEFAULT
         */
        public void onPermissionsChanged(int uid);
        @FlaggedApi(android.permission.flags.Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS)
        default void onPermissionsChanged(int uid, @NonNull String persistentDeviceId) {
            Objects.requireNonNull(persistentDeviceId);
            if (Objects.equals(persistentDeviceId,
                    VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT)) {
                onPermissionsChanged(uid);
            }
        }
    }

    /** @hide */
+1 −1
Original line number Diff line number Diff line
@@ -21,5 +21,5 @@ package android.permission;
 * {@hide}
 */
oneway interface IOnPermissionsChangeListener {
    void onPermissionsChanged(int uid);
    void onPermissionsChanged(int uid, String deviceId);
}
+5 −4
Original line number Diff line number Diff line
@@ -1738,8 +1738,8 @@ public final class PermissionManager {
        }

        @Override
        public void onPermissionsChanged(int uid) {
            mHandler.obtainMessage(MSG_PERMISSIONS_CHANGED, uid, 0).sendToTarget();
        public void onPermissionsChanged(int uid, String deviceId) {
            mHandler.obtainMessage(MSG_PERMISSIONS_CHANGED, uid, 0, deviceId).sendToTarget();
        }

        @Override
@@ -1747,7 +1747,8 @@ public final class PermissionManager {
            switch (msg.what) {
                case MSG_PERMISSIONS_CHANGED: {
                    final int uid = msg.arg1;
                    mListener.onPermissionsChanged(uid);
                    final String deviceId = msg.obj.toString();
                    mListener.onPermissionsChanged(uid, deviceId);
                    return true;
                }
                default:
+3 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.IActivityManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.companion.virtual.VirtualDeviceManager;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
import android.content.Context;
@@ -5327,7 +5328,8 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
                    IOnPermissionsChangeListener callback = mPermissionListeners
                            .getBroadcastItem(i);
                    try {
                        callback.onPermissionsChanged(uid);
                        callback.onPermissionsChanged(uid,
                                VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
                    } catch (RemoteException e) {
                        Log.e(TAG, "Permission listener is dead", e);
                    }
Loading