diff options
| -rw-r--r-- | packages/Shell/AndroidManifest.xml | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 8 |
2 files changed, 8 insertions, 3 deletions
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index 4771c4139a5b..8f05e78555f3 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -291,6 +291,9 @@ <uses-permission android:name="android.permission.ACCESS_TV_TUNER" /> <uses-permission android:name="android.permission.TUNER_RESOURCE_ACCESS" /> + <!-- Permissions required for CTS test - AutoRevokeTest --> + <uses-permission android:name="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS" /> + <application android:label="@string/app_label" android:theme="@android:style/Theme.DeviceDefault.DayNight" android:defaultToDeviceProtectedStorage="true" diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index a967f3d7c4f9..a1cc44adc704 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1289,6 +1289,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName); final int callingUid = Binder.getCallingUid(); + final int packageUid = UserHandle.getUid(userId, pkg.getUid()); if (!checkAutoRevokeAccess(pkg, callingUid)) { return false; @@ -1296,7 +1297,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mAppOpsManager .checkOpNoThrow(AppOpsManager.OP_AUTO_REVOKE_MANAGED_BY_INSTALLER, - callingUid, packageName) + packageUid, packageName) != MODE_ALLOWED) { // Whitelist user set - don't override return false; @@ -1305,7 +1306,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { final long identity = Binder.clearCallingIdentity(); try { mAppOpsManager.setMode(AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, - callingUid, packageName, + packageUid, packageName, whitelisted ? MODE_IGNORED : MODE_ALLOWED); } finally { Binder.restoreCallingIdentity(identity); @@ -1338,6 +1339,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { final AndroidPackage pkg = mPackageManagerInt.getPackage(packageName); final int callingUid = Binder.getCallingUid(); + final int packageUid = UserHandle.getUid(userId, pkg.getUid()); if (!checkAutoRevokeAccess(pkg, callingUid)) { return false; @@ -1346,7 +1348,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { final long identity = Binder.clearCallingIdentity(); try { return mAppOpsManager.checkOpNoThrow( - AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, callingUid, packageName) + AppOpsManager.OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, packageUid, packageName) == MODE_IGNORED; } finally { Binder.restoreCallingIdentity(identity); |