summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Patrick Baumann <patb@google.com> 2019-08-08 10:16:53 -0700
committer android-build-merger <android-build-merger@google.com> 2019-08-08 10:16:53 -0700
commita568458bfb94837320cb43d5eee4378c2ba7b9a8 (patch)
tree1ca0cb179c51fd1261a2d00b8b3c49f54584bd1b
parenta9ba0f30ca0e2eb907125239fc6540c3f71766d9 (diff)
parenta3a7738c611ec220b7a0ef44a081f7baea27d31f (diff)
Merge "Cleans up sharedUser regardless of creation logic" into qt-dev am: a1bf282e43 am: da658b4a34
am: a3a7738c61 Change-Id: I0fb95f9c061d8c2a7c670b4d5f1ba1fe1f0add41
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index a3a636e0c805..86fb00d54858 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -319,7 +319,6 @@ import com.android.server.pm.permission.PermissionManagerServiceInternal;
import com.android.server.pm.permission.PermissionManagerServiceInternal.PermissionCallback;
import com.android.server.pm.permission.PermissionsState;
import com.android.server.policy.PermissionPolicyInternal;
-import com.android.server.policy.PermissionPolicyInternal.OnInitializedCallback;
import com.android.server.security.VerityUtils;
import com.android.server.storage.DeviceStorageMonitorInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -11034,14 +11033,15 @@ public class PackageManagerService extends IPackageManager.Stub
final String realPkgName = request.realPkgName;
final List<String> changedAbiCodePath = result.changedAbiCodePath;
final PackageSetting pkgSetting;
+ if (request.pkgSetting != null && request.pkgSetting.sharedUser != null
+ && request.pkgSetting.sharedUser != result.pkgSetting.sharedUser) {
+ // shared user changed, remove from old shared user
+ request.pkgSetting.sharedUser.removePackage(request.pkgSetting);
+ }
if (result.existingSettingCopied) {
pkgSetting = request.pkgSetting;
pkgSetting.updateFrom(result.pkgSetting);
pkg.mExtras = pkgSetting;
- if (pkgSetting.sharedUser != null
- && pkgSetting.sharedUser.removePackage(result.pkgSetting)) {
- pkgSetting.sharedUser.addPackage(pkgSetting);
- }
} else {
pkgSetting = result.pkgSetting;
if (originalPkgSetting != null) {
@@ -11051,6 +11051,9 @@ public class PackageManagerService extends IPackageManager.Stub
mTransferedPackages.add(originalPkgSetting.name);
}
}
+ if (pkgSetting.sharedUser != null) {
+ pkgSetting.sharedUser.addPackage(pkgSetting);
+ }
// TODO(toddke): Consider a method specifically for modifying the Package object
// post scan; or, moving this stuff out of the Package object since it has nothing
// to do with the package on disk.