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

Commit d9f98db1 authored by Jackal Guo's avatar Jackal Guo Committed by Android (Google) Code Review
Browse files

Merge "Dump known packages"

parents 8633ffd2 fa0837d8
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ public abstract class PackageManagerInternal {
    public static final int PACKAGE_COMPANION = 14;
    public static final int PACKAGE_RETAIL_DEMO = 15;
    public static final int PACKAGE_OVERLAY_CONFIG_SIGNATURE = 16;
    public static final int LAST_KNOWN_PACKAGE = PACKAGE_OVERLAY_CONFIG_SIGNATURE;

    @IntDef(flag = true, prefix = "RESOLVE_", value = {
            RESOLVE_NON_BROWSER_ONLY,
@@ -1015,6 +1016,51 @@ public abstract class PackageManagerInternal {
    public abstract boolean unregisterInstalledLoadingProgressCallback(@NonNull String packageName,
            @NonNull InstalledLoadingProgressCallback callback);

    /**
     * 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_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";
        }
        return "Unknown";
    }

    /**
     * Callback to listen for loading progress of a package installed on Incremental File System.
     */
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ public final class DumpState {
    public static final int DUMP_SERVICE_PERMISSIONS = 1 << 24;
    public static final int DUMP_APEX = 1 << 25;
    public static final int DUMP_QUERIES = 1 << 26;
    public static final int DUMP_KNOWN_PACKAGES = 1 << 27;

    public static final int OPTION_SHOW_FILTERS = 1 << 0;
    public static final int OPTION_DUMP_ALL_COMPONENTS = 1 << 1;
+38 −1
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.content.pm.PackageManager.RESTRICTION_NONE;
import static android.content.pm.PackageManager.UNINSTALL_REASON_UNKNOWN;
import static android.content.pm.PackageManagerInternal.LAST_KNOWN_PACKAGE;
import static android.content.pm.PackageParser.SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V4;
import static android.content.pm.PackageParser.isApkFile;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
@@ -686,6 +687,8 @@ public class PackageManagerService extends IPackageManager.Stub
    private static final String PACKAGE_SCHEME = "package";
    private static final String COMPANION_PACKAGE_NAME = "com.android.companiondevicemanager";
    /** Canonical intent used to identify what counts as a "web browser" app */
    private static final Intent sBrowserIntent;
    static {
@@ -22062,6 +22065,7 @@ public class PackageManagerService extends IPackageManager.Stub
                pw.println("    dexopt: dump dexopt state");
                pw.println("    compiler-stats: dump compiler statistics");
                pw.println("    service-permissions: dump permissions required by services");
                pw.println("    known-packages: dump known packages");
                pw.println("    <package.name>: info about given package");
                return;
            } else if ("--checkin".equals(opt)) {
@@ -22206,6 +22210,8 @@ public class PackageManagerService extends IPackageManager.Stub
                dumpState.setDump(DumpState.DUMP_CHANGES);
            } else if ("service-permissions".equals(cmd)) {
                dumpState.setDump(DumpState.DUMP_SERVICE_PERMISSIONS);
            } else if ("known-packages".equals(cmd)) {
                dumpState.setDump(DumpState.DUMP_KNOWN_PACKAGES);
            } else if ("write".equals(cmd)) {
                synchronized (mLock) {
                    writeSettingsLPrTEMP();
@@ -22230,6 +22236,37 @@ public class PackageManagerService extends IPackageManager.Stub
                }
            }
            if (!checkin
                    && dumpState.isDumping(DumpState.DUMP_KNOWN_PACKAGES)
                    && packageName == null) {
                if (dumpState.onTitlePrinted()) {
                    pw.println();
                }
                final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ", 120);
                ipw.println("Known Packages:");
                ipw.increaseIndent();
                for (int i = 0; i < LAST_KNOWN_PACKAGE; i++) {
                    final String knownPackage = mPmInternal.knownPackageToString(i);
                    if ("Unknown".equals(knownPackage)) {
                        continue;
                    }
                    ipw.print(knownPackage);
                    ipw.println(":");
                    final String[] pkgNames = mPmInternal.getKnownPackageNames(i,
                            UserHandle.USER_SYSTEM);
                    ipw.increaseIndent();
                    if (ArrayUtils.isEmpty(pkgNames)) {
                        ipw.println("none");
                    } else {
                        for (String name : pkgNames) {
                            ipw.println(name);
                        }
                    }
                    ipw.decreaseIndent();
                }
                ipw.decreaseIndent();
            }
            if (dumpState.isDumping(DumpState.DUMP_VERIFIERS) && packageName == null) {
                if (!checkin) {
                    if (dumpState.onTitlePrinted())
@@ -24719,7 +24756,7 @@ public class PackageManagerService extends IPackageManager.Stub
                case PackageManagerInternal.PACKAGE_APP_PREDICTOR:
                    return filterOnlySystemPackages(mAppPredictionServicePackage);
                case PackageManagerInternal.PACKAGE_COMPANION:
                    return filterOnlySystemPackages("com.android.companiondevicemanager");
                    return filterOnlySystemPackages(COMPANION_PACKAGE_NAME);
                case PackageManagerInternal.PACKAGE_RETAIL_DEMO:
                    return TextUtils.isEmpty(mRetailDemoPackage)
                            ? ArrayUtils.emptyArray(String.class)