Loading services/core/java/com/android/server/pm/DumpState.java +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public final class DumpState { public static final int DUMP_SERVICE_PERMISSIONS = 1 << 24; public static final int OPTION_SHOW_FILTERS = 1 << 0; public static final int OPTION_DUMP_ALL_COMPONENTS = 1 << 1; private int mTypes; Loading services/core/java/com/android/server/pm/PackageManagerService.java +4 −1 Original line number Diff line number Diff line Loading @@ -21330,10 +21330,11 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); // Right now we only know how to print all. } else if ("-h".equals(opt)) { pw.println("Package manager dump options:"); pw.println(" [-h] [-f] [--checkin] [cmd] ..."); pw.println(" [-h] [-f] [--checkin] [--all-components] [cmd] ..."); pw.println(" --checkin: dump for a checkin"); pw.println(" -f: print details of intent filters"); pw.println(" -h: print this help"); pw.println(" --all-components: include all component names in package dump"); pw.println(" cmd may be one of:"); pw.println(" l[ibraries]: list known shared libraries"); pw.println(" f[eatures]: list device features"); Loading Loading @@ -21361,6 +21362,8 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); return; } else if ("--checkin".equals(opt)) { checkin = true; } else if ("--all-components".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS); } else if ("-f".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_SHOW_FILTERS); } else if ("--proto".equals(opt)) { services/core/java/com/android/server/pm/Settings.java +32 −3 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.BackgroundThread; import com.android.internal.util.ArrayUtils; import com.android.internal.util.CollectionUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.JournaledFile; Loading Loading @@ -4471,7 +4472,7 @@ public final class Settings { void dumpPackageLPr(PrintWriter pw, String prefix, String checkinTag, ArraySet<String> permissionNames, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users, boolean dumpAll) { Date date, List<UserInfo> users, boolean dumpAll, boolean dumpAllComponents) { if (checkinTag != null) { pw.print(checkinTag); pw.print(","); Loading Loading @@ -4756,6 +4757,10 @@ public final class Settings { dumpInstallPermissionsLPr(pw, prefix + " ", permissionNames, permissionsState); } if (dumpAllComponents) { dumpComponents(pw, prefix + " ", ps); } for (UserInfo user : users) { pw.print(prefix); pw.print(" User "); pw.print(user.id); pw.print(": "); pw.print("ceDataInode="); Loading Loading @@ -4835,6 +4840,8 @@ public final class Settings { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); final Date date = new Date(); boolean printedSomething = false; final boolean dumpAllComponents = dumpState.isOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS); List<UserInfo> users = getAllUsers(UserManagerService.getInstance()); for (final PackageSetting ps : mPackages.values()) { if (packageName != null && !packageName.equals(ps.realName) Loading @@ -4857,7 +4864,7 @@ public final class Settings { printedSomething = true; } dumpPackageLPr(pw, " ", checkin ? "pkg" : null, permissionNames, ps, sdf, date, users, packageName != null); packageName != null, dumpAllComponents); } printedSomething = false; Loading Loading @@ -4898,7 +4905,7 @@ public final class Settings { printedSomething = true; } dumpPackageLPr(pw, " ", checkin ? "dis" : null, permissionNames, ps, sdf, date, users, packageName != null); users, packageName != null, dumpAllComponents); } } } Loading Loading @@ -5107,6 +5114,28 @@ public final class Settings { } } void dumpComponents(PrintWriter pw, String prefix, PackageSetting ps) { dumpComponents(pw, prefix, ps, "activities:", ps.pkg.activities); dumpComponents(pw, prefix, ps, "services:", ps.pkg.services); dumpComponents(pw, prefix, ps, "receivers:", ps.pkg.receivers); dumpComponents(pw, prefix, ps, "providers:", ps.pkg.providers); dumpComponents(pw, prefix, ps, "instrumentations:", ps.pkg.instrumentation); } void dumpComponents(PrintWriter pw, String prefix, PackageSetting ps, String label, List<? extends PackageParser.Component<?>> list) { final int size = CollectionUtils.size(list); if (size == 0) { return; } pw.print(prefix);pw.println(label); for (int i = 0; i < size; i++) { final PackageParser.Component<?> component = list.get(i); pw.print(prefix);pw.print(" "); pw.println(component.getComponentName().flattenToShortString()); } } public void writeRuntimePermissionsForUserLPr(int userId, boolean sync) { if (sync) { mRuntimePermissionsPersistence.writePermissionsForUserSyncLPr(userId); Loading Loading
services/core/java/com/android/server/pm/DumpState.java +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ public final class DumpState { public static final int DUMP_SERVICE_PERMISSIONS = 1 << 24; public static final int OPTION_SHOW_FILTERS = 1 << 0; public static final int OPTION_DUMP_ALL_COMPONENTS = 1 << 1; private int mTypes; Loading
services/core/java/com/android/server/pm/PackageManagerService.java +4 −1 Original line number Diff line number Diff line Loading @@ -21330,10 +21330,11 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); // Right now we only know how to print all. } else if ("-h".equals(opt)) { pw.println("Package manager dump options:"); pw.println(" [-h] [-f] [--checkin] [cmd] ..."); pw.println(" [-h] [-f] [--checkin] [--all-components] [cmd] ..."); pw.println(" --checkin: dump for a checkin"); pw.println(" -f: print details of intent filters"); pw.println(" -h: print this help"); pw.println(" --all-components: include all component names in package dump"); pw.println(" cmd may be one of:"); pw.println(" l[ibraries]: list known shared libraries"); pw.println(" f[eatures]: list device features"); Loading Loading @@ -21361,6 +21362,8 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); return; } else if ("--checkin".equals(opt)) { checkin = true; } else if ("--all-components".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS); } else if ("-f".equals(opt)) { dumpState.setOptionEnabled(DumpState.OPTION_SHOW_FILTERS); } else if ("--proto".equals(opt)) {
services/core/java/com/android/server/pm/Settings.java +32 −3 Original line number Diff line number Diff line Loading @@ -83,6 +83,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.os.BackgroundThread; import com.android.internal.util.ArrayUtils; import com.android.internal.util.CollectionUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.JournaledFile; Loading Loading @@ -4471,7 +4472,7 @@ public final class Settings { void dumpPackageLPr(PrintWriter pw, String prefix, String checkinTag, ArraySet<String> permissionNames, PackageSetting ps, SimpleDateFormat sdf, Date date, List<UserInfo> users, boolean dumpAll) { Date date, List<UserInfo> users, boolean dumpAll, boolean dumpAllComponents) { if (checkinTag != null) { pw.print(checkinTag); pw.print(","); Loading Loading @@ -4756,6 +4757,10 @@ public final class Settings { dumpInstallPermissionsLPr(pw, prefix + " ", permissionNames, permissionsState); } if (dumpAllComponents) { dumpComponents(pw, prefix + " ", ps); } for (UserInfo user : users) { pw.print(prefix); pw.print(" User "); pw.print(user.id); pw.print(": "); pw.print("ceDataInode="); Loading Loading @@ -4835,6 +4840,8 @@ public final class Settings { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); final Date date = new Date(); boolean printedSomething = false; final boolean dumpAllComponents = dumpState.isOptionEnabled(DumpState.OPTION_DUMP_ALL_COMPONENTS); List<UserInfo> users = getAllUsers(UserManagerService.getInstance()); for (final PackageSetting ps : mPackages.values()) { if (packageName != null && !packageName.equals(ps.realName) Loading @@ -4857,7 +4864,7 @@ public final class Settings { printedSomething = true; } dumpPackageLPr(pw, " ", checkin ? "pkg" : null, permissionNames, ps, sdf, date, users, packageName != null); packageName != null, dumpAllComponents); } printedSomething = false; Loading Loading @@ -4898,7 +4905,7 @@ public final class Settings { printedSomething = true; } dumpPackageLPr(pw, " ", checkin ? "dis" : null, permissionNames, ps, sdf, date, users, packageName != null); users, packageName != null, dumpAllComponents); } } } Loading Loading @@ -5107,6 +5114,28 @@ public final class Settings { } } void dumpComponents(PrintWriter pw, String prefix, PackageSetting ps) { dumpComponents(pw, prefix, ps, "activities:", ps.pkg.activities); dumpComponents(pw, prefix, ps, "services:", ps.pkg.services); dumpComponents(pw, prefix, ps, "receivers:", ps.pkg.receivers); dumpComponents(pw, prefix, ps, "providers:", ps.pkg.providers); dumpComponents(pw, prefix, ps, "instrumentations:", ps.pkg.instrumentation); } void dumpComponents(PrintWriter pw, String prefix, PackageSetting ps, String label, List<? extends PackageParser.Component<?>> list) { final int size = CollectionUtils.size(list); if (size == 0) { return; } pw.print(prefix);pw.println(label); for (int i = 0; i < size; i++) { final PackageParser.Component<?> component = list.get(i); pw.print(prefix);pw.print(" "); pw.println(component.getComponentName().flattenToShortString()); } } public void writeRuntimePermissionsForUserLPr(int userId, boolean sync) { if (sync) { mRuntimePermissionsPersistence.writePermissionsForUserSyncLPr(userId); Loading