Merge "Only platform defined permissions need a review." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0e9e5ea586
@@ -437,6 +437,8 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
*/
|
*/
|
||||||
private static final int DEFAULT_VERIFICATION_RESPONSE = PackageManager.VERIFICATION_ALLOW;
|
private static final int DEFAULT_VERIFICATION_RESPONSE = PackageManager.VERIFICATION_ALLOW;
|
||||||
|
|
||||||
|
static final String PLATFORM_PACKAGE_NAME = "android";
|
||||||
|
|
||||||
static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer";
|
static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer";
|
||||||
|
|
||||||
static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName(
|
static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName(
|
||||||
@@ -9725,7 +9727,9 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
switch (grant) {
|
switch (grant) {
|
||||||
case GRANT_INSTALL: {
|
case GRANT_INSTALL: {
|
||||||
// Revoke this as runtime permission to handle the case of
|
// Revoke this as runtime permission to handle the case of
|
||||||
// a runtime permission being downgraded to an install one. Also in permission review mode we keep dangerous permissions for legacy apps
|
// a runtime permission being downgraded to an install one.
|
||||||
|
// Also in permission review mode we keep dangerous permissions
|
||||||
|
// for legacy apps
|
||||||
for (int userId : UserManagerService.getInstance().getUserIds()) {
|
for (int userId : UserManagerService.getInstance().getUserIds()) {
|
||||||
if (origPermissions.getRuntimePermissionState(
|
if (origPermissions.getRuntimePermissionState(
|
||||||
bp.name, userId) != null) {
|
bp.name, userId) != null) {
|
||||||
@@ -9773,10 +9777,21 @@ public class PackageManagerService extends IPackageManager.Stub {
|
|||||||
&& !appSupportsRuntimePermissions) {
|
&& !appSupportsRuntimePermissions) {
|
||||||
// For legacy apps that need a permission review, every new
|
// For legacy apps that need a permission review, every new
|
||||||
// runtime permission is granted but it is pending a review.
|
// runtime permission is granted but it is pending a review.
|
||||||
if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) {
|
// We also need to review only platform defined runtime
|
||||||
permissionsState.grantRuntimePermission(bp, userId);
|
// permissions as these are the only ones the platform knows
|
||||||
flags |= FLAG_PERMISSION_REVIEW_REQUIRED;
|
// how to disable the API to simulate revocation as legacy
|
||||||
// We changed the permission and flags, hence have to write.
|
// apps don't expect to run with revoked permissions.
|
||||||
|
if (PLATFORM_PACKAGE_NAME.equals(bp.sourcePackage)) {
|
||||||
|
if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) {
|
||||||
|
flags |= FLAG_PERMISSION_REVIEW_REQUIRED;
|
||||||
|
// We changed the flags, hence have to write.
|
||||||
|
changedRuntimePermissionUserIds = ArrayUtils.appendInt(
|
||||||
|
changedRuntimePermissionUserIds, userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (permissionsState.grantRuntimePermission(bp, userId)
|
||||||
|
!= PermissionsState.PERMISSION_OPERATION_FAILURE) {
|
||||||
|
// We changed the permission, hence have to write.
|
||||||
changedRuntimePermissionUserIds = ArrayUtils.appendInt(
|
changedRuntimePermissionUserIds = ArrayUtils.appendInt(
|
||||||
changedRuntimePermissionUserIds, userId);
|
changedRuntimePermissionUserIds, userId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user