Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae498721 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Add debugging for issue #23190084: [APPComm][Dev Test] {Unable to share photo...

...from Camera360 to Hangouts }

In the short URI toString, include a small summary of the ClipData (instead
of just saying it has a clip data).  This makes it a lot easier to understand
what is happening when you look at the log of activity starts.

Also separate out the activity manager dump of URI permission grants from
its dump of providers, so it is easy to just look at that state.

Change-Id: I68093d9f279944e1aa9a29347075f237f4f55ed3
parent 0cd143ad
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -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;
+13 −7
Original line number Diff line number Diff line
@@ -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;
    }
+9 −4
Original line number Diff line number Diff line
@@ -7533,14 +7533,19 @@ public class Intent implements Parcelable, Cloneable {
            if (!first) {
                b.append(' ');
            }
            first = false;
            if (clip) {
            b.append("clip={");
            if (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) {
+22 −0
Original line number Diff line number Diff line
@@ -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;