diff options
| author | 2020-10-07 02:14:13 +0000 | |
|---|---|---|
| committer | 2020-10-07 02:14:13 +0000 | |
| commit | d9f98db1acfc7b64100165b2755a240bafefc715 (patch) | |
| tree | f4377a320114ec914dea40174f2ec4a02b8d024c | |
| parent | 8633ffd2c564451c5f7befc03425023b0016a6c4 (diff) | |
| parent | fa0837d8dc5844c0342f8ef9a89d0f3da43347f3 (diff) | |
Merge "Dump known packages"
3 files changed, 85 insertions, 1 deletions
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index 0c56d46151c1..43c54b4a97b3 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -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, @@ -1016,6 +1017,51 @@ public abstract class PackageManagerInternal { @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. */ public abstract static class InstalledLoadingProgressCallback { diff --git a/services/core/java/com/android/server/pm/DumpState.java b/services/core/java/com/android/server/pm/DumpState.java index 99a109367afc..520871ff40c8 100644 --- a/services/core/java/com/android/server/pm/DumpState.java +++ b/services/core/java/com/android/server/pm/DumpState.java @@ -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; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 0f9a5cc331a0..29e4022fe820 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -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) |