Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c25935b authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Hadler USER_ALL when uninstalling static shared lib" into oc-dev

parents 721a3488 5ef1cefd
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -18017,22 +18017,30 @@ public class PackageManagerService extends IPackageManager.Stub
            // Static shared libs can be declared by any package, so let us not
            // allow removing a package if it provides a lib others depend on.
            pkg = mPackages.get(packageName);
            allUsers = sUserManager.getUserIds();
            if (pkg != null && pkg.staticSharedLibName != null) {
                SharedLibraryEntry libEntry = getSharedLibraryEntryLPr(pkg.staticSharedLibName,
                        pkg.staticSharedLibVersion);
                if (libEntry != null) {
                    for (int currUserId : allUsers) {
                        if (userId != UserHandle.USER_ALL && userId != currUserId) {
                            continue;
                        }
                        List<VersionedPackage> libClientPackages = getPackagesUsingSharedLibraryLPr(
                            libEntry.info, 0, userId);
                                libEntry.info, 0, currUserId);
                        if (!ArrayUtils.isEmpty(libClientPackages)) {
                            Slog.w(TAG, "Not removing package " + pkg.manifestPackageName
                                    + " hosting lib " + libEntry.info.getName() + " version "
                                + libEntry.info.getVersion()  + " used by " + libClientPackages);
                                    + libEntry.info.getVersion() + " used by " + libClientPackages
                                    + " for user " + currUserId);
                            return PackageManager.DELETE_FAILED_USED_SHARED_LIBRARY;
                        }
                    }
                }
            }
            allUsers = sUserManager.getUserIds();
            info.origUsers = uninstalledPs.queryInstalledUsers(allUsers, true);
        }