diff options
author | 2025-03-11 00:21:47 -0700 | |
---|---|---|
committer | 2025-03-11 00:21:47 -0700 | |
commit | db9f5e553fc8fc1bd683aac053be70c33eb7d273 (patch) | |
tree | 08ab4fe9fd3ec1ba7734e83bd1568d9e4a58a1ae /PermissionController | |
parent | c85d32e09875ec2e849c60ea881913915fa7a6c0 (diff) |
Exhaustive multi-device permission CTS
- Fix GrantPermissionsActivity for non-device-aware permissions.
Such requests should not be ignored, but should fallback to the
default device.
- Fix the permission check for passing grant results. When requesting
default device aware permission from virtual device, the call to
checkPermission uses the wrong context. It can simply use
mPackageManager, which is always associated with the target device.
Fix: 401540899
Test: atest
Relnote: n/a
Flag: EXEMPT bugfix
Change-Id: Ib5de5ce0cf09f6ad1e445b01ca2443bf102ab598
Diffstat (limited to 'PermissionController')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java index 7573b571d..0dd07ffd0 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/GrantPermissionsActivity.java @@ -311,10 +311,8 @@ public class GrantPermissionsActivity extends SettingsActivity PackageManager.EXTRA_REQUEST_PERMISSIONS_DEVICE_ID, ContextCompat.DEVICE_ID_DEFAULT); - if (mTargetDeviceId != ContextCompat.DEVICE_ID_DEFAULT) { - mPackageManager = ContextCompat.createDeviceContext(this, mTargetDeviceId) - .getPackageManager(); - } + mPackageManager = ContextCompat.createDeviceContext(this, mTargetDeviceId) + .getPackageManager(); // When the permission grant dialog is streamed to a virtual device, and when requested // permissions include both device-aware permissions and non-device aware permissions, @@ -337,21 +335,6 @@ public class GrantPermissionsActivity extends SettingsActivity new Intent(this, PermissionDialogStreamingBlockedActivity.class)); return; } - } else if (mTargetDeviceId != ContextCompat.DEVICE_ID_DEFAULT) { - // On the default device, when requested permissions are for a remote device, - // filter out non-device aware permissions. - for (int i = mRequestedPermissions.size() - 1; i >= 0; i--) { - if (!MultiDeviceUtils.isPermissionDeviceAware( - getApplicationContext(), - mTargetDeviceId, - mRequestedPermissions.get(i))) { - Log.e( - LOG_TAG, - "non-device aware permission is requested for a remote device: " - + mRequestedPermissions.get(i)); - mRequestedPermissions.remove(i); - } - } } } @@ -740,7 +723,7 @@ public class GrantPermissionsActivity extends SettingsActivity int dialogDisplayDeviceId = ContextCompat.getDeviceId(this); boolean isMessageDeviceAware = dialogDisplayDeviceId != ContextCompat.DEVICE_ID_DEFAULT - || dialogDisplayDeviceId != mTargetDeviceId; + || dialogDisplayDeviceId != info.getDeviceId(); int messageId = getMessageId(info.getGroupName(), info.getPrompt(), isMessageDeviceAware); CharSequence message = @@ -1132,17 +1115,9 @@ public class GrantPermissionsActivity extends SettingsActivity if ((mDelegated || (mViewModel != null && mViewModel.shouldReturnPermissionState())) && mTargetPackage != null) { - PackageManager defaultDevicePackageManager = SdkLevel.isAtLeastV() - && mTargetDeviceId != ContextCompat.DEVICE_ID_DEFAULT - ? createDeviceContext(ContextCompat.DEVICE_ID_DEFAULT).getPackageManager() - : mPackageManager; - PackageManager targetDevicePackageManager = mPackageManager; for (int i = 0; i < resultPermissions.length; i++) { String permission = resultPermissions[i]; - PackageManager pm = MultiDeviceUtils.isPermissionDeviceAware( - getApplicationContext(), mTargetDeviceId, permission) - ? targetDevicePackageManager : defaultDevicePackageManager; - grantResults[i] = pm.checkPermission(resultPermissions[i], mTargetPackage); + grantResults[i] = mPackageManager.checkPermission(permission, mTargetPackage); } } else { grantResults = new int[0]; |