am 515c20be: Merge "PackageManagerService: honor requestedPermissionsRequired" into jb-mr2-dev

* commit '515c20beb1cc291a4c4a63016c7bc7286e47670c':
  PackageManagerService: honor requestedPermissionsRequired
This commit is contained in:
Nick Kralevich
2013-03-19 15:47:39 +00:00
committed by Android Git Automerger

View File

@@ -5077,7 +5077,7 @@ public class PackageManagerService extends IPackageManager.Stub {
final int N = pkg.requestedPermissions.size();
for (int i=0; i<N; i++) {
final String name = pkg.requestedPermissions.get(i);
//final boolean required = pkg.requestedPermssionsRequired.get(i);
final boolean required = pkg.requestedPermissionsRequired.get(i);
final BasePermission bp = mSettings.mPermissions.get(name);
if (DEBUG_INSTALL) {
if (gp != ps) {
@@ -5091,7 +5091,9 @@ public class PackageManagerService extends IPackageManager.Stub {
final int level = bp.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE;
if (level == PermissionInfo.PROTECTION_NORMAL
|| level == PermissionInfo.PROTECTION_DANGEROUS) {
allowed = true;
// If the permission is required, or it's optional and was previously
// granted to the application, then allow it. Otherwise deny.
allowed = (required || origPermissions.contains(perm));
} else if (bp.packageSetting == null) {
// This permission is invalid; skip it.
allowed = false;
@@ -5141,11 +5143,7 @@ public class PackageManagerService extends IPackageManager.Stub {
& PermissionInfo.PROTECTION_FLAG_DEVELOPMENT) != 0) {
// For development permissions, a development permission
// is granted only if it was already granted.
if (origPermissions.contains(perm)) {
allowed = true;
} else {
allowed = false;
}
allowed = origPermissions.contains(perm);
}
if (allowed) {
allowedSig = true;