From 92cfa105f97b538eaca5f19bfbfd2c5ab9a5f89b Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 28 Apr 2010 11:00:44 -0700 Subject: [PATCH] Fix issue #2569139: Sapphire user cannot login to last.fm... ...after upgrade from Donut to FRF01B For realz this time. Change-Id: I92bd12451b19a6006cf487a9dfa0b7c696a21122 --- .../android/server/PackageManagerService.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index e9e83d9fb1d32..24d645d5a5daf 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -989,7 +989,7 @@ class PackageManagerService extends IPackageManager.Stub { + "; regranting permissions for internal storage"); mSettings.mInternalSdkPlatform = mSdkVersion; - updatePermissionsLP(null, null, true, regrantPermissions); + updatePermissionsLP(null, null, true, regrantPermissions, regrantPermissions); mSettings.writeLP(); @@ -3982,7 +3982,8 @@ class PackageManagerService extends IPackageManager.Stub { } private void updatePermissionsLP(String changingPkg, - PackageParser.Package pkgInfo, boolean grantPermissions, boolean replace) { + PackageParser.Package pkgInfo, boolean grantPermissions, + boolean replace, boolean replaceAll) { // Make sure there are no dangling permission trees. Iterator it = mSettings.mPermissionTrees .values().iterator(); @@ -4052,7 +4053,7 @@ class PackageManagerService extends IPackageManager.Stub { if (grantPermissions) { for (PackageParser.Package pkg : mPackages.values()) { if (pkg != pkgInfo) { - grantPermissionsLP(pkg, false); + grantPermissionsLP(pkg, replaceAll); } } } @@ -4668,7 +4669,7 @@ class PackageManagerService extends IPackageManager.Stub { if (p != null) { synchronized (mPackages) { updatePermissionsLP(p.packageName, p, - p.permissions.size() > 0, false); + p.permissions.size() > 0, false, false); } addedPackage = p.applicationInfo.packageName; addedUid = p.applicationInfo.uid; @@ -5705,7 +5706,7 @@ class PackageManagerService extends IPackageManager.Stub { // Restore of old package succeeded. Update permissions. synchronized (mPackages) { updatePermissionsLP(deletedPackage.packageName, deletedPackage, - true, false); + true, false, false); mSettings.writeLP(); } Slog.i(TAG, "Successfully restored package : " + pkgName + " after failed upgrade"); @@ -5822,7 +5823,7 @@ class PackageManagerService extends IPackageManager.Stub { } synchronized (mPackages) { updatePermissionsLP(newPackage.packageName, newPackage, - newPackage.permissions.size() > 0, true); + newPackage.permissions.size() > 0, true, false); res.name = pkgName; res.uid = newPackage.applicationInfo.uid; res.pkg = newPackage; @@ -6217,7 +6218,7 @@ class PackageManagerService extends IPackageManager.Stub { outInfo.removedUid = mSettings.removePackageLP(packageName); } if (deletedPs != null) { - updatePermissionsLP(deletedPs.name, null, false, false); + updatePermissionsLP(deletedPs.name, null, false, false, false); if (deletedPs.sharedUser != null) { // remove permissions associated with package mSettings.updateSharedUserPermsLP(deletedPs, mGlobalGids); @@ -6299,7 +6300,7 @@ class PackageManagerService extends IPackageManager.Stub { return false; } synchronized (mPackages) { - updatePermissionsLP(newPkg.packageName, newPkg, true, true); + updatePermissionsLP(newPkg.packageName, newPkg, true, true, false); mSettings.writeLP(); } return true; @@ -9686,7 +9687,7 @@ class PackageManagerService extends IPackageManager.Stub { // Make sure group IDs have been assigned, and any permission // changes in other apps are accounted for - updatePermissionsLP(null, null, true, regrantPermissions); + updatePermissionsLP(null, null, true, regrantPermissions, regrantPermissions); // Persist settings mSettings.writeLP(); }