diff options
author | 2017-12-15 22:25:33 +0000 | |
---|---|---|
committer | 2017-12-15 22:25:33 +0000 | |
commit | 41b745ca0d117c07419f9255485b8ca5094c653d (patch) | |
tree | b7f303c08c22eb19bc2b077e0b3dae05078bad4b | |
parent | 0da6e2ccf85a8400bb760b0af271f9c284ba3943 (diff) | |
parent | f35375b56c39006182d572791c80c4e79f6e24ee (diff) |
Merge "Dump services permissions on 'package' service."
-rw-r--r-- | services/core/java/com/android/server/pm/DumpState.java | 3 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 30 |
2 files changed, 31 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/DumpState.java b/services/core/java/com/android/server/pm/DumpState.java index 7ebef83a1a57..f4ee0ce7632a 100644 --- a/services/core/java/com/android/server/pm/DumpState.java +++ b/services/core/java/com/android/server/pm/DumpState.java @@ -40,6 +40,7 @@ public final class DumpState { public static final int DUMP_COMPILER_STATS = 1 << 21; public static final int DUMP_CHANGES = 1 << 22; public static final int DUMP_VOLUMES = 1 << 23; + public static final int DUMP_SERVICE_PERMISSIONS = 1 << 24; public static final int OPTION_SHOW_FILTERS = 1 << 0; @@ -92,4 +93,4 @@ public final class DumpState { public void setSharedUser(SharedUserSetting user) { mSharedUser = user; } -}
\ No newline at end of file +} diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3f56d30125d1..696d89575e2d 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -173,6 +173,7 @@ import android.content.pm.PackageParser.Package; import android.content.pm.PackageParser.PackageLite; import android.content.pm.PackageParser.PackageParserException; import android.content.pm.PackageParser.ParseFlags; +import android.content.pm.PackageParser.ServiceIntentInfo; import android.content.pm.PackageStats; import android.content.pm.PackageUserState; import android.content.pm.ParceledListSlice; @@ -12558,7 +12559,12 @@ public class PackageManagerService extends IPackageManager.Stub out.print(' '); filter.service.printComponentShortName(out); out.print(" filter "); - out.println(Integer.toHexString(System.identityHashCode(filter))); + out.print(Integer.toHexString(System.identityHashCode(filter))); + if (filter.service.info.permission != null) { + out.print(" permission "); out.println(filter.service.info.permission); + } else { + out.println(); + } } @Override @@ -20551,6 +20557,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); pw.println(" dexopt: dump dexopt state"); pw.println(" compiler-stats: dump compiler statistics"); pw.println(" enabled-overlays: dump list of enabled overlay packages"); + pw.println(" service-permissions: dump permissions required by services"); pw.println(" <package.name>: info about given package"); return; } else if ("--checkin".equals(opt)) { @@ -20686,6 +20693,8 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); dumpState.setDump(DumpState.DUMP_COMPILER_STATS); } else if ("changes".equals(cmd)) { dumpState.setDump(DumpState.DUMP_CHANGES); + } else if ("service-permissions".equals(cmd)) { + dumpState.setDump(DumpState.DUMP_SERVICE_PERMISSIONS); } else if ("write".equals(cmd)) { synchronized (mPackages) { mSettings.writeLPr(); @@ -21066,6 +21075,25 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); ipw.decreaseIndent(); } + if (!checkin && dumpState.isDumping(DumpState.DUMP_SERVICE_PERMISSIONS) + && packageName == null) { + if (dumpState.onTitlePrinted()) pw.println(); + pw.println("Service permissions:"); + + final Iterator<ServiceIntentInfo> filterIterator = mServices.filterIterator(); + while (filterIterator.hasNext()) { + final ServiceIntentInfo info = filterIterator.next(); + final ServiceInfo serviceInfo = info.service.info; + final String permission = serviceInfo.permission; + if (permission != null) { + pw.print(" "); + pw.print(serviceInfo.getComponentName().flattenToShortString()); + pw.print(": "); + pw.println(permission); + } + } + } + if (!checkin && dumpState.isDumping(DumpState.DUMP_DEXOPT)) { if (dumpState.onTitlePrinted()) pw.println(); dumpDexoptStateLPr(pw, packageName); |