diff options
-rw-r--r-- | core/java/android/content/ClipData.java | 30 | ||||
-rw-r--r-- | core/java/android/content/ClipDescription.java | 20 | ||||
-rw-r--r-- | core/java/android/content/Intent.java | 13 | ||||
-rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 22 |
4 files changed, 74 insertions, 11 deletions
diff --git a/core/java/android/content/ClipData.java b/core/java/android/content/ClipData.java index 0cafff8..c934e8d 100644 --- a/core/java/android/content/ClipData.java +++ b/core/java/android/content/ClipData.java @@ -609,6 +609,23 @@ public class ClipData implements Parcelable { b.append("NULL"); } } + + /** @hide */ + public void toShortSummaryString(StringBuilder b) { + if (mHtmlText != null) { + b.append("HTML"); + } else if (mText != null) { + b.append("TEXT"); + } else if (mUri != null) { + b.append("U:"); + b.append(mUri); + } else if (mIntent != null) { + b.append("I:"); + mIntent.toShortString(b, true, true, true, true); + } else { + b.append("NULL"); + } + } } /** @@ -884,6 +901,19 @@ public class ClipData implements Parcelable { } } + /** @hide */ + public void toShortStringShortItems(StringBuilder b, boolean first) { + if (mItems.size() > 0) { + if (!first) { + b.append(' '); + } + mItems.get(0).toShortString(b); + if (mItems.size() > 1) { + b.append(" ..."); + } + } + } + @Override public int describeContents() { return 0; diff --git a/core/java/android/content/ClipDescription.java b/core/java/android/content/ClipDescription.java index be35f08..e988516 100644 --- a/core/java/android/content/ClipDescription.java +++ b/core/java/android/content/ClipDescription.java @@ -201,22 +201,28 @@ public class ClipDescription implements Parcelable { /** @hide */ public boolean toShortString(StringBuilder b) { - boolean first = true; - for (int i=0; i<mMimeTypes.length; i++) { + boolean first = !toShortStringTypesOnly(b); + if (mLabel != null) { if (!first) { b.append(' '); } first = false; - b.append(mMimeTypes[i]); + b.append('"'); + b.append(mLabel); + b.append('"'); } - if (mLabel != null) { + return !first; + } + + /** @hide */ + public boolean toShortStringTypesOnly(StringBuilder b) { + boolean first = true; + for (int i=0; i<mMimeTypes.length; i++) { if (!first) { b.append(' '); } first = false; - b.append('"'); - b.append(mLabel); - b.append('"'); + b.append(mMimeTypes[i]); } return !first; } diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index ec443cd..87d52e4 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -7533,14 +7533,19 @@ public class Intent implements Parcelable, Cloneable { if (!first) { b.append(' '); } - first = false; + b.append("clip={"); if (clip) { - b.append("clip={"); mClipData.toShortString(b); - b.append('}'); } else { - b.append("(has clip)"); + if (mClipData.getDescription() != null) { + first = !mClipData.getDescription().toShortStringTypesOnly(b); + } else { + first = true; + } + mClipData.toShortStringShortItems(b, first); } + first = false; + b.append('}'); } if (extras && mExtras != null) { if (!first) { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 3d523d9..113c9b6 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -12850,6 +12850,7 @@ public final class ActivityManagerService extends ActivityManagerNative pw.println(" i[ntents] [PACKAGE_NAME]: pending intent state"); pw.println(" p[rocesses] [PACKAGE_NAME]: process state"); pw.println(" o[om]: out of memory management"); + pw.println(" perm[issions]: URI permission grant state"); pw.println(" prov[iders] [COMP_SPEC ...]: content provider state"); pw.println(" provider [COMP_SPEC]: provider client-side state"); pw.println(" s[ervices] [COMP_SPEC ...]: service state"); @@ -12940,6 +12941,10 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized (this) { dumpOomLocked(fd, pw, args, opti, true); } + } else if ("permissions".equals(cmd) || "perm".equals(cmd)) { + synchronized (this) { + dumpPermissionsLocked(fd, pw, args, opti, true, null); + } } else if ("provider".equals(cmd)) { String[] newArgs; String name; @@ -13055,6 +13060,11 @@ public final class ActivityManagerService extends ActivityManagerNative if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } + dumpPermissionsLocked(fd, pw, args, opti, dumpAll, dumpPackage); + pw.println(); + if (dumpAll) { + pw.println("-------------------------------------------------------------------------------"); + } mServices.dumpServicesLocked(fd, pw, args, opti, dumpAll, dumpClient, dumpPackage); pw.println(); if (dumpAll) { @@ -14075,6 +14085,18 @@ public final class ActivityManagerService extends ActivityManagerNative } } + if (!printedAnything) { + pw.println(" (nothing)"); + } + } + + void dumpPermissionsLocked(FileDescriptor fd, PrintWriter pw, String[] args, + int opti, boolean dumpAll, String dumpPackage) { + boolean needSep = false; + boolean printedAnything = false; + + pw.println("ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions)"); + if (mGrantedUriPermissions.size() > 0) { boolean printed = false; int dumpUid = -2; |