diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-08-08 16:18:33 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-08-08 16:18:33 +0000 |
commit | a1bf282e43e20e5224b0d8c6f32ee76fcbee716f (patch) | |
tree | 0e9f5e49bd65389944a59960ea4dc80ed58f5513 | |
parent | 45855214b514d87a05c380893c487b0b953e8b30 (diff) | |
parent | cf9a4835c110b3b7c064e1dde97ffb38ef0424eb (diff) | |
download | base-a1bf282e43e20e5224b0d8c6f32ee76fcbee716f.tar.gz |
Merge "Cleans up sharedUser regardless of creation logic" into qt-dev
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 13 |
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 d60fa2e5c110..7469e0994210 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -320,7 +320,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; @@ -11033,14 +11032,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) { @@ -11050,6 +11050,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. |