From 528811c980ec9c5f66dedadbb6c5b5c4710f1d1e Mon Sep 17 00:00:00 2001 From: Svet Ganov Date: Thu, 30 Jun 2016 13:41:02 -0700 Subject: Add Bluetooth toggle prompts - package installer If permission review is enabled toggling bluetoth on or off results in a user prompt to collect consent. This applies only to legacy apps, i.e. ones that don't support runtime permissions as they target SDK 22. Also added a configuration resource which controls whether permission review mode is enabled. By default it is not and an OEM can change this via an overlay. For now we also keep the old mechanism to toggle review mode via a build property which is still used and will be removed when clients have transitioned. bug:28715749 Change-Id: I3783fa99f3fca881a4b60ea1e7c0f68098302ae4 --- src/com/android/packageinstaller/permission/model/AppPermissions.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/com/android/packageinstaller/permission/model') diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java index e455ef13..38f35f96 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissions.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java @@ -83,7 +83,9 @@ public final class AppPermissions { } public boolean isReviewRequired() { - if (!Build.PERMISSIONS_REVIEW_REQUIRED) { + if (!mContext.getResources().getBoolean( + com.android.internal.R.bool.config_permissionReviewRequired) + && !Build.PERMISSIONS_REVIEW_REQUIRED) { return false; } final int groupCount = mGroups.size(); -- cgit v1.2.3 From b8e4193e57bcaca51b08a88f3a67ef1d0641b75a Mon Sep 17 00:00:00 2001 From: Shijian Li Date: Thu, 19 Jan 2017 14:34:42 +0000 Subject: Partial cherry-pick changes on permission model change. Meanwhile, aligned with handheld logic that revoking individually controlled permission is marked as user fixed. The original commit id I1d6cbc478c789e7680f41b92b9f3fa2504576ecd. Test: Manual test on a local build. Bug: 34440353 Change-Id: Ie3bb75225246eefef954926f94295181f4daebd0 --- .../permission/model/AppPermissionGroup.java | 14 +++---- .../permission/model/AppPermissions.java | 43 +++++++++------------- 2 files changed, 25 insertions(+), 32 deletions(-) (limited to 'src/com/android/packageinstaller/permission/model') diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index a6601165..5a1a9d64 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -353,7 +353,7 @@ public final class AppPermissionGroup implements Comparable // no longer has it fixed in a denied state. if (permission.isUserFixed() || permission.isUserSet()) { permission.setUserFixed(false); - permission.setUserSet(true); + permission.setUserSet(false); mPackageManager.updatePermissionFlags(permission.getName(), mPackageInfo.packageName, PackageManager.FLAG_PERMISSION_USER_FIXED @@ -538,11 +538,11 @@ public final class AppPermissionGroup implements Comparable final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { Permission permission = mPermissions.valueAt(i); - if (!permission.isUserFixed()) { - return false; + if (permission.isUserFixed()) { + return true; } } - return true; + return false; } public boolean isPolicyFixed() { @@ -560,11 +560,11 @@ public final class AppPermissionGroup implements Comparable final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { Permission permission = mPermissions.valueAt(i); - if (!permission.isUserSet()) { - return false; + if (permission.isUserSet()) { + return true; } } - return true; + return false; } public boolean isSystemFixed() { diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java index 38f35f96..099e5b07 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissions.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java @@ -48,11 +48,11 @@ public final class AppPermissions { private PackageInfo mPackageInfo; - public AppPermissions(Context context, PackageInfo packageInfo, String[] permissions, + public AppPermissions(Context context, PackageInfo packageInfo, String[] filterPermissions, boolean sortGroups, Runnable onErrorCallback) { mContext = context; mPackageInfo = packageInfo; - mFilterPermissions = permissions; + mFilterPermissions = filterPermissions; mAppLabel = BidiFormatter.getInstance().unicodeWrap( packageInfo.applicationInfo.loadSafeLabel( context.getPackageManager()).toString()); @@ -122,34 +122,13 @@ public final class AppPermissions { if (!filterPermission.equals(requestedPerm)) { continue; } - - if (hasGroupForPermission(requestedPerm)) { - break; - } - - AppPermissionGroup group = AppPermissionGroup.create(mContext, - mPackageInfo, requestedPerm); - if (group == null) { - break; - } - - mGroups.add(group); + addPermissionGroupIfNeeded(requestedPerm); break; } } } else { for (String requestedPerm : mPackageInfo.requestedPermissions) { - if (hasGroupForPermission(requestedPerm)) { - continue; - } - - AppPermissionGroup group = AppPermissionGroup.create(mContext, - mPackageInfo, requestedPerm); - if (group == null) { - continue; - } - - mGroups.add(group); + addPermissionGroupIfNeeded(requestedPerm); } } @@ -163,6 +142,20 @@ public final class AppPermissions { } } + private void addPermissionGroupIfNeeded(String permission) { + if (hasGroupForPermission(permission)) { + return; + } + + AppPermissionGroup group = AppPermissionGroup.create(mContext, + mPackageInfo, permission); + if (group == null) { + return; + } + + mGroups.add(group); + } + private boolean hasGroupForPermission(String permission) { for (AppPermissionGroup group : mGroups) { if (group.hasPermission(permission)) { -- cgit v1.2.3