OSDN Git Service

grantPermissionsLPw: introduce isNewPlatformPermissionForPackage
authorNick Kralevich <nnk@google.com>
Mon, 1 Apr 2013 20:27:30 +0000 (13:27 -0700)
committerNick Kralevich <nnk@google.com>
Tue, 2 Apr 2013 16:38:00 +0000 (09:38 -0700)
Make grantPermissionsLPw by refactoring some code into a new
function, isNewPlatformPermissionForPackage.

No functional changes.

Change-Id: I467dacfe1fcf7e77cef4cb6df54536eeaafd9064

services/java/com/android/server/pm/PackageManagerService.java

index 80ff74e..4c566ce 100644 (file)
@@ -5152,22 +5152,10 @@ public class PackageManagerService extends IPackageManager.Stub {
                     // If this is an existing, non-system package, then
                     // we can't add any new permissions to it.
                     if (!allowedSig && !gp.grantedPermissions.contains(perm)) {
-                        allowed = false;
                         // Except...  if this is a permission that was added
                         // to the platform (note: need to only do this when
                         // updating the platform).
-                        final int NP = PackageParser.NEW_PERMISSIONS.length;
-                        for (int ip=0; ip<NP; ip++) {
-                            final PackageParser.NewPermissionInfo npi
-                                    = PackageParser.NEW_PERMISSIONS[ip];
-                            if (npi.name.equals(perm)
-                                    && pkg.applicationInfo.targetSdkVersion < npi.sdkVersion) {
-                                allowed = true;
-                                Log.i(TAG, "Auto-granting " + perm + " to old pkg "
-                                        + pkg.packageName);
-                                break;
-                            }
-                        }
+                        allowed = isNewPlatformPermissionForPackage(perm, pkg);
                     }
                 }
                 if (allowed) {
@@ -5213,6 +5201,23 @@ public class PackageManagerService extends IPackageManager.Stub {
         ps.haveGids = true;
     }
 
+    private boolean isNewPlatformPermissionForPackage(String perm, PackageParser.Package pkg) {
+        boolean allowed = false;
+        final int NP = PackageParser.NEW_PERMISSIONS.length;
+        for (int ip=0; ip<NP; ip++) {
+            final PackageParser.NewPermissionInfo npi
+                    = PackageParser.NEW_PERMISSIONS[ip];
+            if (npi.name.equals(perm)
+                    && pkg.applicationInfo.targetSdkVersion < npi.sdkVersion) {
+                allowed = true;
+                Log.i(TAG, "Auto-granting " + perm + " to old pkg "
+                        + pkg.packageName);
+                break;
+            }
+        }
+        return allowed;
+    }
+
     private boolean doSignaturePermission(String perm, PackageParser.Package pkg,
                                           BasePermission bp, HashSet<String> origPermissions) {
         boolean allowed;