summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-12-15 22:25:33 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-12-15 22:25:33 +0000
commit41b745ca0d117c07419f9255485b8ca5094c653d (patch)
treeb7f303c08c22eb19bc2b077e0b3dae05078bad4b
parent0da6e2ccf85a8400bb760b0af271f9c284ba3943 (diff)
parentf35375b56c39006182d572791c80c4e79f6e24ee (diff)
Merge "Dump services permissions on 'package' service."
-rw-r--r--services/core/java/com/android/server/pm/DumpState.java3
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java30
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);