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

Commit 5326366d authored by Rhed Jao's avatar Rhed Jao Committed by Automerger Merge Worker
Browse files

Merge "Reduce lock contention in the package manager dump" into sc-dev am: 891f69f4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13483025

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ic72400d11d0eb508f10192b6ff5579922c0f8962
parents f059edb2 891f69f4
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.concurrent.Executor;
import java.util.function.Function;

/**
 * The entity responsible for filtering visibility between apps based on declarations in their
@@ -1354,14 +1355,13 @@ public class AppsFilter implements Watchable, Snappable {
    }

    public void dumpQueries(
            PrintWriter pw, PackageManagerService pms, @Nullable Integer filteringAppId,
            DumpState dumpState,
            int[] users) {
            PrintWriter pw, @Nullable Integer filteringAppId, DumpState dumpState, int[] users,
            Function<Integer, String[]> getPackagesForUid) {
        final SparseArray<String> cache = new SparseArray<>();
        ToString<Integer> expandPackages = input -> {
            String cachedValue = cache.get(input);
            if (cachedValue == null) {
                final String[] packagesForUid = pms.getPackagesForUid(input);
                final String[] packagesForUid = getPackagesForUid.apply(input);
                if (packagesForUid == null) {
                    cachedValue = "[unknown app id " + input + "]";
                } else {
+19 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@ public final class DumpState {
    private int mOptions;

    private boolean mTitlePrinted;
    private boolean mFullPreferred;

    private String mTargetPackageName;

    private SharedUserSetting mSharedUser;

@@ -99,4 +102,20 @@ public final class DumpState {
    public void setSharedUser(SharedUserSetting user) {
        mSharedUser = user;
    }

    public String getTargetPackageName() {
        return mTargetPackageName;
    }

    public void setTargetPackageName(String packageName) {
        mTargetPackageName = packageName;
    }

    public boolean isFullPreferred() {
        return mFullPreferred;
    }

    public void setFullPreferred(boolean fullPreferred) {
        mFullPreferred = fullPreferred;
    }
}
+384 −291

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -4888,7 +4888,7 @@ public final class Settings implements Watchable, Snappable {
        }
    }

    void dumpPermissionsLPr(PrintWriter pw, String packageName, ArraySet<String> permissionNames,
    void dumpPermissions(PrintWriter pw, String packageName, ArraySet<String> permissionNames,
            DumpState dumpState) {
        LegacyPermissionSettings.dumpPermissions(pw, packageName, permissionNames,
                mPermissionDataProvider.getLegacyPermissions(),