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

Commit cd1f7f6c authored by Songchun Fan's avatar Songchun Fan Committed by Automerger Merge Worker
Browse files

Merge "[pm] remove mPm reference from DumpHelper" into tm-dev am: cca1088b

parents 68481de4 cca1088b
Loading
Loading
Loading
Loading
+2 −96
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import android.util.ArraySet;
import android.util.SparseArray;

import com.android.internal.util.function.pooled.PooledLambda;
import com.android.server.pm.KnownPackages;
import com.android.server.pm.PackageList;
import com.android.server.pm.PackageSetting;
import com.android.server.pm.dex.DynamicCodeLogger;
@@ -68,51 +69,6 @@ import java.util.function.Consumer;
 * @hide Only for use within the system server.
 */
public abstract class PackageManagerInternal {

    @IntDef(prefix = "PACKAGE_", value = {
            PACKAGE_SYSTEM,
            PACKAGE_SETUP_WIZARD,
            PACKAGE_INSTALLER,
            PACKAGE_UNINSTALLER,
            PACKAGE_VERIFIER,
            PACKAGE_BROWSER,
            PACKAGE_SYSTEM_TEXT_CLASSIFIER,
            PACKAGE_PERMISSION_CONTROLLER,
            PACKAGE_CONFIGURATOR,
            PACKAGE_INCIDENT_REPORT_APPROVER,
            PACKAGE_APP_PREDICTOR,
            PACKAGE_OVERLAY_CONFIG_SIGNATURE,
            PACKAGE_WIFI,
            PACKAGE_COMPANION,
            PACKAGE_RETAIL_DEMO,
            PACKAGE_RECENTS,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface KnownPackage {}

    public static final int PACKAGE_SYSTEM = 0;
    public static final int PACKAGE_SETUP_WIZARD = 1;
    public static final int PACKAGE_INSTALLER = 2;
    public static final int PACKAGE_UNINSTALLER = 3;
    public static final int PACKAGE_VERIFIER = 4;
    public static final int PACKAGE_BROWSER = 5;
    public static final int PACKAGE_SYSTEM_TEXT_CLASSIFIER = 6;
    public static final int PACKAGE_PERMISSION_CONTROLLER = 7;
    public static final int PACKAGE_WELLBEING = 8;
    public static final int PACKAGE_DOCUMENTER = 9;
    public static final int PACKAGE_CONFIGURATOR = 10;
    public static final int PACKAGE_INCIDENT_REPORT_APPROVER = 11;
    public static final int PACKAGE_APP_PREDICTOR = 12;
    public static final int PACKAGE_OVERLAY_CONFIG_SIGNATURE = 13;
    public static final int PACKAGE_WIFI = 14;
    public static final int PACKAGE_COMPANION = 15;
    public static final int PACKAGE_RETAIL_DEMO = 16;
    public static final int PACKAGE_RECENTS = 17;
    public static final int PACKAGE_AMBIENT_CONTEXT_DETECTION = 18;
    // Integer value of the last known package ID. Increases as new ID is added to KnownPackage.
    // Please note the numbers should be continuous.
    public static final int LAST_KNOWN_PACKAGE = PACKAGE_AMBIENT_CONTEXT_DETECTION;

    @LongDef(flag = true, prefix = "RESOLVE_", value = {
            RESOLVE_NON_BROWSER_ONLY,
            RESOLVE_NON_RESOLVER_ONLY
@@ -754,12 +710,11 @@ public abstract class PackageManagerInternal {
     */
    public abstract boolean isResolveActivityComponent(@NonNull ComponentInfo component);


    /**
     * Returns a list of package names for a known package
     */
    public abstract @NonNull String[] getKnownPackageNames(
            @KnownPackage int knownPackage, int userId);
            @KnownPackages.KnownPackage int knownPackage, int userId);

    /**
     * Returns whether the package is an instant app.
@@ -1142,55 +1097,6 @@ public abstract class PackageManagerInternal {
    public abstract boolean registerInstalledLoadingProgressCallback(@NonNull String packageName,
            @NonNull InstalledLoadingProgressCallback callback, int userId);

    /**
     * Returns the string representation of a known package. For example,
     * {@link #PACKAGE_SETUP_WIZARD} is represented by the string Setup Wizard.
     *
     * @param knownPackage The known package.
     * @return The string representation.
     */
    public static @NonNull String knownPackageToString(@KnownPackage int knownPackage) {
        switch (knownPackage) {
            case PACKAGE_SYSTEM:
                return "System";
            case PACKAGE_SETUP_WIZARD:
                return "Setup Wizard";
            case PACKAGE_INSTALLER:
                return "Installer";
            case PACKAGE_UNINSTALLER:
                return "Uninstaller";
            case PACKAGE_VERIFIER:
                return "Verifier";
            case PACKAGE_BROWSER:
                return "Browser";
            case PACKAGE_SYSTEM_TEXT_CLASSIFIER:
                return "System Text Classifier";
            case PACKAGE_PERMISSION_CONTROLLER:
                return "Permission Controller";
            case PACKAGE_WELLBEING:
                return "Wellbeing";
            case PACKAGE_DOCUMENTER:
                return "Documenter";
            case PACKAGE_CONFIGURATOR:
                return "Configurator";
            case PACKAGE_INCIDENT_REPORT_APPROVER:
                return "Incident Report Approver";
            case PACKAGE_APP_PREDICTOR:
                return "App Predictor";
            case PACKAGE_WIFI:
                return "Wi-Fi";
            case PACKAGE_COMPANION:
                return "Companion";
            case PACKAGE_RETAIL_DEMO:
                return "Retail Demo";
            case PACKAGE_OVERLAY_CONFIG_SIGNATURE:
                return "Overlay Config Signature";
            case PACKAGE_RECENTS:
                return "Recents";
        }
        return "Unknown";
    }

    /**
     * Callback to listen for loading progress of a package installed on Incremental File System.
     */
+2 −1
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.infra.AbstractMasterSystemService;
import com.android.server.infra.FrameworkResourcesServiceNameResolver;
import com.android.server.pm.KnownPackages;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -117,7 +118,7 @@ public class AmbientContextManagerService extends
    public static boolean isDetectionServiceConfigured() {
        final PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
        final String[] packageNames = pmi.getKnownPackageNames(
                PackageManagerInternal.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM);
                KnownPackages.PACKAGE_AMBIENT_CONTEXT_DETECTION, UserHandle.USER_SYSTEM);
        boolean isServiceConfigured = (packageNames.length != 0);
        Slog.i(TAG, "Detection service configured: " + isServiceConfigured);
        return isServiceConfigured;
+2 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemConfig;
import com.android.server.SystemService;
import com.android.server.pm.KnownPackages;
import com.android.server.pm.UserManagerService;
import com.android.server.pm.parsing.pkg.AndroidPackage;

@@ -1264,7 +1265,7 @@ public final class OverlayManagerService extends SystemService {
        @Override
        public String getConfigSignaturePackage() {
            final String[] pkgs = mPackageManagerInternal.getKnownPackageNames(
                    PackageManagerInternal.PACKAGE_OVERLAY_CONFIG_SIGNATURE,
                    KnownPackages.PACKAGE_OVERLAY_CONFIG_SIGNATURE,
                    UserHandle.USER_SYSTEM);
            return (pkgs.length == 0) ? null : pkgs[0];
        }
+26 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Pair;
import android.util.SparseArray;
import android.util.proto.ProtoOutputStream;

import com.android.internal.annotations.VisibleForTesting;
import com.android.server.pm.parsing.pkg.AndroidPackage;
@@ -571,6 +572,31 @@ public interface Computer extends PackageDataSnapshot {
    @NonNull
    WatchedArrayMap<String, Integer> getFrozenPackages();

    /**
     * Verify that given package is currently frozen.
     */
    void checkPackageFrozen(@NonNull String packageName);

    @Nullable
    ComponentName getInstantAppInstallerComponent();

    void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState);

    void dumpPackages(PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState,
            boolean checkin);

    void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull DumpState dumpState);

    void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames,
            @NonNull DumpState dumpState, boolean checkin);

    void dumpSharedUsersProto(@NonNull ProtoOutputStream proto);

    void dumpPackagesProto(@NonNull ProtoOutputStream proto);

    void dumpSharedLibrariesProto(@NonNull ProtoOutputStream protoOutputStream);
}
+108 −0
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.TypedXmlSerializer;
import android.util.Xml;
import android.util.proto.ProtoOutputStream;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
@@ -322,6 +323,37 @@ public class ComputerEngine implements Computer {
            }
            return res;
        }

        public void dumpPackagesProto(ProtoOutputStream proto) {
            mSettings.dumpPackagesProto(proto);
        }

        public void dumpPermissions(PrintWriter pw, String packageName,
                ArraySet<String> permissionNames, DumpState dumpState) {
            mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState);
        }

        public void dumpPackages(PrintWriter pw, String packageName,
                ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) {
            mSettings.dumpPackagesLPr(pw, packageName, permissionNames, dumpState, checkin);
        }

        public void dumpKeySet(PrintWriter pw, String packageName, DumpState dumpState) {
            mSettings.getKeySetManagerService().dumpLPr(pw, packageName, dumpState);
        }

        public void dumpSharedUsers(PrintWriter pw, String packageName,
                ArraySet<String> permissionNames, DumpState dumpState, boolean checkin) {
            mSettings.dumpSharedUsersLPr(pw, packageName, permissionNames, dumpState, checkin);
        }

        public void dumpReadMessages(PrintWriter pw, DumpState dumpState) {
            mSettings.dumpReadMessages(pw, dumpState);
        }

        public void dumpSharedUsersProto(ProtoOutputStream proto) {
            mSettings.dumpSharedUsersProto(proto);
        }
    }

    private static final Comparator<ProviderInfo> sProviderInitOrderSorter = (p1, p2) -> {
@@ -3211,6 +3243,34 @@ public class ComputerEngine implements Computer {
                }
                break;
            }

            case DumpState.DUMP_MESSAGES: {
                mSettings.dumpReadMessages(pw, dumpState);
                break;
            }

            case DumpState.DUMP_FROZEN: {
                // XXX should handle packageName != null by dumping only install data that
                // the given package is involved with.
                if (dumpState.onTitlePrinted()) {
                    pw.println();
                }
                final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
                ipw.println();
                ipw.println("Frozen packages:");
                ipw.increaseIndent();
                if (mFrozenPackages.size() == 0) {
                    ipw.println("(none)");
                } else {
                    for (int i = 0; i < mFrozenPackages.size(); i++) {
                        ipw.print("package=");
                        ipw.print(mFrozenPackages.keyAt(i));
                        ipw.print(", refCounts=");
                        ipw.println(mFrozenPackages.valueAt(i));
                    }
                }
                ipw.decreaseIndent();
            }
        } // switch
    }

@@ -5698,10 +5758,58 @@ public class ComputerEngine implements Computer {
        return mFrozenPackages;
    }

    @Override
    public void checkPackageFrozen(@NonNull String packageName) {
        if (!mFrozenPackages.containsKey(packageName)) {
            Slog.wtf(TAG, "Expected " + packageName + " to be frozen!", new Throwable());
        }
    }

    @Nullable
    @Override
    public ComponentName getInstantAppInstallerComponent() {
        return mLocalInstantAppInstallerActivity == null
                ? null : mLocalInstantAppInstallerActivity.getComponentName();
    }

    @Override
    public void dumpPermissions(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState) {
        mSettings.dumpPermissions(pw, packageName, permissionNames, dumpState);
    }

    @Override
    public void dumpPackages(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState,
            boolean checkin) {
        mSettings.dumpPackages(pw, packageName, permissionNames, dumpState, checkin);
    }

    @Override
    public void dumpKeySet(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull DumpState dumpState) {
        mSettings.dumpKeySet(pw, packageName, dumpState);
    }

    @Override
    public void dumpSharedUsers(@NonNull PrintWriter pw, @NonNull String packageName,
            @NonNull ArraySet<String> permissionNames, @NonNull DumpState dumpState,
            boolean checkin) {
        mSettings.dumpSharedUsers(pw, packageName, permissionNames, dumpState, checkin);
    }

    @Override
    public void dumpSharedUsersProto(@NonNull ProtoOutputStream proto) {
        mSettings.dumpSharedUsersProto(proto);
    }

    @Override
    public void dumpPackagesProto(@NonNull ProtoOutputStream proto) {
        mSettings.dumpPackagesProto(proto);
    }

    @Override
    public void dumpSharedLibrariesProto(@NonNull ProtoOutputStream proto) {
        mSharedLibraries.dumpProto(proto);
    }
}
Loading