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

Commit 046802ca authored by Winson Chiu's avatar Winson Chiu Committed by Android (Google) Code Review
Browse files

Merge "Remove some read only usages of PackageManagerService mLock"

parents 49cc0d20 190819a3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -663,6 +663,9 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP

    public abstract @Nullable PackageState getPackageState(@NonNull String packageName);

    @NonNull
    public abstract ArrayMap<String, ? extends PackageStateInternal> getPackageStates();

    /**
     * Returns a package for the given UID. If the UID is part of a shared user ID, one
     * of the packages will be chosen to be returned.
@@ -909,7 +912,7 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP
     *               functionality of the other forEach methods, for eventual migration.
     * @param action action to be performed
     */
    public abstract void forEachPackageState(boolean locked, Consumer<PackageState> action);
    public abstract void forEachPackageState(boolean locked, Consumer<PackageStateInternal> action);

    /**
     * Perform the given action for each installed package for a user.
+5 −4
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ import com.android.server.am.ActivityManagerService.ProcessChangeItem;
import com.android.server.compat.PlatformCompat;
import com.android.server.pm.dex.DexManager;
import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.pkg.PackageStateInternal;
import com.android.server.wm.ActivityServiceConnectionsHolder;
import com.android.server.wm.WindowManagerService;
import com.android.server.wm.WindowProcessController;
@@ -2296,13 +2297,13 @@ public final class ProcessList {
        Map<String, Pair<String, Long>> result = new ArrayMap<>(packages.length);
        int userId = UserHandle.getUserId(uid);
        for (String packageName : packages) {
            AndroidPackage androidPackage = pmInt.getPackage(packageName);
            if (androidPackage == null) {
            final PackageStateInternal packageState = pmInt.getPackageStateInternal(packageName);
            if (packageState == null) {
                Slog.w(TAG, "Unknown package:" + packageName);
                continue;
            }
            String volumeUuid = androidPackage.getVolumeUuid();
            long inode = pmInt.getCeDataInode(packageName, userId);
            String volumeUuid = packageState.getVolumeUuid();
            long inode = packageState.getUserStateOrDefault(userId).getCeDataInode();
            if (inode == 0) {
                Slog.w(TAG, packageName + " inode == 0 (b/152760674)");
                return null;
+10 −4
Original line number Diff line number Diff line
@@ -500,11 +500,17 @@ public class AppsFilter implements Watchable, Snappable {
                forcedQueryablePackageNames[i] = forcedQueryablePackageNames[i].intern();
            }
        }
        final StateProvider stateProvider = command -> {
            synchronized (injector.getLock()) {
                command.currentState(injector.getSettings().getPackagesLocked().untrackedStorage(),
        final StateProvider stateProvider = new StateProvider() {
            // TODO: This lock and its handling should be owned by AppsFilter
            private final Object mLock = new Object();

            @Override
            public void runWithState(CurrentStateCallback command) {
                synchronized (mLock) {
                    command.currentState(pms.getPackageStates(),
                            injector.getUserManagerInternal().getUserInfos());
                }
            }
        };
        AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig,
                forcedQueryablePackageNames, forceSystemAppsQueryable, null,
+350 −7

File changed.

Preview size limit exceeded, changes collapsed.

+2208 −48

File changed.

Preview size limit exceeded, changes collapsed.

Loading