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

Commit 0b8ffd17 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 460 into donut

* changes:
  More optimization of dumpsys output.
parents 56137a25 1d442e0d
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -440,9 +440,13 @@ public final class PendingIntent implements Parcelable {

    @Override
    public String toString() {
        return "PendingIntent{"
                + Integer.toHexString(System.identityHashCode(this))
                + " target " + (mTarget != null ? mTarget.asBinder() : null) + "}";
        StringBuilder sb = new StringBuilder(128);
        sb.append("PendingIntent{");
        sb.append(Integer.toHexString(System.identityHashCode(this)));
        sb.append(": ");
        sb.append(mTarget != null ? mTarget.asBinder() : null);
        sb.append('}');
        return sb.toString();
    }
    
    public int describeContents() {
+65 −14
Original line number Diff line number Diff line
@@ -4390,12 +4390,35 @@ public class Intent implements Parcelable {

    @Override
    public String toString() {
        StringBuilder   b = new StringBuilder();
        StringBuilder   b = new StringBuilder(128);

        b.append("Intent { ");
        if (mAction != null) b.append(" action=").append(mAction);
        toShortString(b, true, true);
        b.append(" }");

        return b.toString();
    }

    /** @hide */
    public String toShortString(boolean comp, boolean extras) {
        StringBuilder   b = new StringBuilder(128);
        toShortString(b, comp, extras);
        return b.toString();
    }
    
    /** @hide */
    public void toShortString(StringBuilder b, boolean comp, boolean extras) {
        boolean first = true;
        if (mAction != null) {
            b.append("act=").append(mAction);
            first = false;
        }
        if (mCategories != null) {
            b.append(" categories={");
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("cat=[");
            Iterator<String> i = mCategories.iterator();
            boolean didone = false;
            while (i.hasNext()) {
@@ -4403,20 +4426,48 @@ public class Intent implements Parcelable {
                didone = true;
                b.append(i.next());
            }
            b.append("}");
            b.append("]");
        }
        if (mData != null) {
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("dat=").append(mData);
        }
        if (mType != null) {
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("typ=").append(mType);
        }
        if (mFlags != 0) {
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("flg=0x").append(Integer.toHexString(mFlags));
        }
        if (comp && mComponent != null) {
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("cmp=").append(mComponent.flattenToShortString());
        }
        if (extras && mExtras != null) {
            if (!first) {
                b.append(' ');
            }
            first = false;
            b.append("(has extras)");
        }
        if (mData != null) b.append(" data=").append(mData);
        if (mType != null) b.append(" type=").append(mType);
        if (mFlags != 0) b.append(" flags=0x").append(Integer.toHexString(mFlags));
        if (mComponent != null) b.append(" comp=").append(mComponent.toShortString());
        if (mExtras != null) b.append(" (has extras)");
        b.append(" }");

        return b.toString();
    }

    public String toURI() {
        StringBuilder uri = new StringBuilder(mData != null ? mData.toString() : "");
        StringBuilder uri = new StringBuilder(128);
        if (mData != null) uri.append(mData.toString());

        uri.append("#Intent;");

+33 −9
Original line number Diff line number Diff line
@@ -1254,47 +1254,71 @@ public class IntentFilter implements Parcelable {
    }

    public void dump(Printer du, String prefix) {
        StringBuilder sb = new StringBuilder(256);
        if (mActions.size() > 0) {
            Iterator<String> it = mActions.iterator();
            while (it.hasNext()) {
               du.println(prefix + "Action: \"" + it.next() + "\"");
                sb.setLength(0);
                sb.append(prefix); sb.append("Action: \"");
                        sb.append(it.next()); sb.append("\"");
                du.println(sb.toString());
            }
        }
        if (mCategories != null) {
            Iterator<String> it = mCategories.iterator();
            while (it.hasNext()) {
                du.println(prefix + "Category: \"" + it.next() + "\"");
                sb.setLength(0);
                sb.append(prefix); sb.append("Category: \"");
                        sb.append(it.next()); sb.append("\"");
                du.println(sb.toString());
            }
        }
        if (mDataSchemes != null) {
            Iterator<String> it = mDataSchemes.iterator();
            while (it.hasNext()) {
                du.println(prefix + "Data Scheme: \"" + it.next() + "\"");
                sb.setLength(0);
                sb.append(prefix); sb.append("Scheme: \"");
                        sb.append(it.next()); sb.append("\"");
                du.println(sb.toString());
            }
        }
        if (mDataAuthorities != null) {
            Iterator<AuthorityEntry> it = mDataAuthorities.iterator();
            while (it.hasNext()) {
                AuthorityEntry ae = it.next();
                du.println(prefix + "Data Authority: \"" + ae.mHost + "\":"
                        + ae.mPort + (ae.mWild ? " WILD" : ""));
                sb.setLength(0);
                sb.append(prefix); sb.append("Authority: \"");
                        sb.append(ae.mHost); sb.append("\": ");
                        sb.append(ae.mPort);
                if (ae.mWild) sb.append(" WILD");
                du.println(sb.toString());
            }
        }
        if (mDataPaths != null) {
            Iterator<PatternMatcher> it = mDataPaths.iterator();
            while (it.hasNext()) {
                PatternMatcher pe = it.next();
                du.println(prefix + "Data Path: \"" + pe + "\"");
                sb.setLength(0);
                sb.append(prefix); sb.append("Path: \"");
                        sb.append(pe); sb.append("\"");
                du.println(sb.toString());
            }
        }
        if (mDataTypes != null) {
            Iterator<String> it = mDataTypes.iterator();
            while (it.hasNext()) {
                du.println(prefix + "Data Type: \"" + it.next() + "\"");
                sb.setLength(0);
                sb.append(prefix); sb.append("Type: \"");
                        sb.append(it.next()); sb.append("\"");
                du.println(sb.toString());
            }
        }
        du.println(prefix + "mPriority=" + mPriority
                + ", mHasPartialTypes=" + mHasPartialTypes);
        if (mPriority != 0 || mHasPartialTypes) {
            sb.setLength(0);
            sb.append(prefix); sb.append("mPriority="); sb.append(mPriority);
                    sb.append(", mHasPartialTypes="); sb.append(mHasPartialTypes);
            du.println(sb.toString());
        }
    }

    public static final Parcelable.Creator<IntentFilter> CREATOR
+224 −97
Original line number Diff line number Diff line
@@ -64,6 +64,48 @@ public class PackageParser {
    private static final Object mSync = new Object();
    private static WeakReference<byte[]> mReadBuffer;

    static class ParsePackageItemArgs {
        final Package owner;
        final String[] outError;
        final int nameRes;
        final int labelRes;
        final int iconRes;
        
        String tag;
        TypedArray sa;
        
        ParsePackageItemArgs(Package _owner, String[] _outError,
                int _nameRes, int _labelRes, int _iconRes) {
            owner = _owner;
            outError = _outError;
            nameRes = _nameRes;
            labelRes = _labelRes;
            iconRes = _iconRes;
        }
    }
    
    static class ParseComponentArgs extends ParsePackageItemArgs {
        final String[] sepProcesses;
        final int processRes;
        final int enabledRes;
        int flags;
        
        ParseComponentArgs(Package _owner, String[] _outError,
                int _nameRes, int _labelRes, int _iconRes,
                String[] _sepProcesses, int _processRes,int _enabledRes) {
            super(_owner, _outError, _nameRes, _labelRes, _iconRes);
            sepProcesses = _sepProcesses;
            processRes = _processRes;
            enabledRes = _enabledRes;
        }
    }
    
    private ParsePackageItemArgs mParseInstrumentationArgs;
    private ParseComponentArgs mParseActivityArgs;
    private ParseComponentArgs mParseActivityAliasArgs;
    private ParseComponentArgs mParseServiceArgs;
    private ParseComponentArgs mParseProviderArgs;
    
    /** If set to true, we will only allow package files that exactly match
     *  the DTD.  Otherwise, we try to get as much from the package as we
     *  can without failing.  This should normally be set to false, to
@@ -557,6 +599,11 @@ public class PackageParser {
        throws XmlPullParserException, IOException {
        AttributeSet attrs = parser;

        mParseInstrumentationArgs = null;
        mParseActivityArgs = null;
        mParseServiceArgs = null;
        mParseProviderArgs = null;
        
        String pkgName = parsePackageName(parser, attrs, flags, outError);
        if (pkgName == null) {
            mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME;
@@ -593,8 +640,6 @@ public class PackageParser {
        }
        sa.recycle();

        final int innerDepth = parser.getDepth();

        int outerDepth = parser.getDepth();
        while ((type=parser.next()) != parser.END_DOCUMENT
               && (type != parser.END_TAG || parser.getDepth() > outerDepth)) {
@@ -950,20 +995,24 @@ public class PackageParser {
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestInstrumentation);

        Instrumentation a = new Instrumentation(owner);

        if (!parsePackageItemInfo(owner, a.info, outError, "<instrumentation>", sa,
        if (mParseInstrumentationArgs == null) {
            mParseInstrumentationArgs = new ParsePackageItemArgs(owner, outError,
                    com.android.internal.R.styleable.AndroidManifestInstrumentation_name,
                    com.android.internal.R.styleable.AndroidManifestInstrumentation_label,
                com.android.internal.R.styleable.AndroidManifestInstrumentation_icon)) {
                    com.android.internal.R.styleable.AndroidManifestInstrumentation_icon);
            mParseInstrumentationArgs.tag = "<instrumentation>";
        }
        
        mParseInstrumentationArgs.sa = sa;
        
        Instrumentation a = new Instrumentation(mParseInstrumentationArgs,
                new InstrumentationInfo());
        if (outError[0] != null) {
            sa.recycle();
            mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
            return null;
        }

        a.component = new ComponentName(owner.applicationInfo.packageName,
                a.info.name);

        String str;
        str = sa.getNonResourceString(
                com.android.internal.R.styleable.AndroidManifestInstrumentation_targetPackage);
@@ -1140,7 +1189,7 @@ public class PackageParser {
                owner.providers.add(p);

            } else if (tagName.equals("activity-alias")) {
                Activity a = parseActivityAlias(owner, res, parser, attrs, flags, outError, false);
                Activity a = parseActivityAlias(owner, res, parser, attrs, flags, outError);
                if (a == null) {
                    mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
                    return false;
@@ -1246,15 +1295,22 @@ public class PackageParser {
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestActivity);

        Activity a = new Activity(owner);

        if (!parseComponentInfo(owner, flags, a.info, outError,
                receiver ? "<receiver>" : "<activity>", sa,
        if (mParseActivityArgs == null) {
            mParseActivityArgs = new ParseComponentArgs(owner, outError,
                    com.android.internal.R.styleable.AndroidManifestActivity_name,
                    com.android.internal.R.styleable.AndroidManifestActivity_label,
                    com.android.internal.R.styleable.AndroidManifestActivity_icon,
                    mSeparateProcesses,
                    com.android.internal.R.styleable.AndroidManifestActivity_process,
                com.android.internal.R.styleable.AndroidManifestActivity_enabled)) {
                    com.android.internal.R.styleable.AndroidManifestActivity_enabled);
        }
        
        mParseActivityArgs.tag = receiver ? "<receiver>" : "<activity>";
        mParseActivityArgs.sa = sa;
        mParseActivityArgs.flags = flags;
        
        Activity a = new Activity(mParseActivityArgs, new ActivityInfo());
        if (outError[0] != null) {
            sa.recycle();
            return null;
        }
@@ -1266,9 +1322,6 @@ public class PackageParser {
                    com.android.internal.R.styleable.AndroidManifestActivity_exported, false);
        }

        a.component = new ComponentName(owner.applicationInfo.packageName,
                a.info.name);

        a.info.theme = sa.getResourceId(
                com.android.internal.R.styleable.AndroidManifestActivity_theme, 0);

@@ -1412,8 +1465,8 @@ public class PackageParser {
    }

    private Activity parseActivityAlias(Package owner, Resources res,
            XmlPullParser parser, AttributeSet attrs, int flags, String[] outError,
            boolean receiver) throws XmlPullParserException, IOException {
            XmlPullParser parser, AttributeSet attrs, int flags, String[] outError)
            throws XmlPullParserException, IOException {
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestActivityAlias);

@@ -1432,7 +1485,20 @@ public class PackageParser {
            return null;
        }

        Activity a = new Activity(owner);
        if (mParseActivityAliasArgs == null) {
            mParseActivityAliasArgs = new ParseComponentArgs(owner, outError,
                    com.android.internal.R.styleable.AndroidManifestActivityAlias_name,
                    com.android.internal.R.styleable.AndroidManifestActivityAlias_label,
                    com.android.internal.R.styleable.AndroidManifestActivityAlias_icon,
                    mSeparateProcesses,
                    0,
                    com.android.internal.R.styleable.AndroidManifestActivityAlias_enabled);
            mParseActivityAliasArgs.tag = "<activity-alias>";
        }
        
        mParseActivityAliasArgs.sa = sa;
        mParseActivityAliasArgs.flags = flags;
        
        Activity target = null;

        final int NA = owner.activities.size();
@@ -1451,26 +1517,21 @@ public class PackageParser {
            return null;
        }

        a.info.targetActivity = targetActivity;

        a.info.configChanges = target.info.configChanges;
        a.info.flags = target.info.flags;
        a.info.icon = target.info.icon;
        a.info.labelRes = target.info.labelRes;
        a.info.launchMode = target.info.launchMode;
        a.info.nonLocalizedLabel = target.info.nonLocalizedLabel;
        a.info.processName = target.info.processName;
        a.info.screenOrientation = target.info.screenOrientation;
        a.info.taskAffinity = target.info.taskAffinity;
        a.info.theme = target.info.theme;

        if (!parseComponentInfo(owner, flags, a.info, outError,
                receiver ? "<receiver>" : "<activity>", sa,
                com.android.internal.R.styleable.AndroidManifestActivityAlias_name,
                com.android.internal.R.styleable.AndroidManifestActivityAlias_label,
                com.android.internal.R.styleable.AndroidManifestActivityAlias_icon,
                0,
                com.android.internal.R.styleable.AndroidManifestActivityAlias_enabled)) {
        ActivityInfo info = new ActivityInfo();
        info.targetActivity = targetActivity;
        info.configChanges = target.info.configChanges;
        info.flags = target.info.flags;
        info.icon = target.info.icon;
        info.labelRes = target.info.labelRes;
        info.nonLocalizedLabel = target.info.nonLocalizedLabel;
        info.launchMode = target.info.launchMode;
        info.processName = target.info.processName;
        info.screenOrientation = target.info.screenOrientation;
        info.taskAffinity = target.info.taskAffinity;
        info.theme = target.info.theme;
        
        Activity a = new Activity(mParseActivityAliasArgs, info);
        if (outError[0] != null) {
            sa.recycle();
            return null;
        }
@@ -1482,9 +1543,6 @@ public class PackageParser {
                    com.android.internal.R.styleable.AndroidManifestActivityAlias_exported, false);
        }

        a.component = new ComponentName(owner.applicationInfo.packageName,
                a.info.name);

        String str;
        str = sa.getNonResourceString(
                com.android.internal.R.styleable.AndroidManifestActivityAlias_permission);
@@ -1548,14 +1606,22 @@ public class PackageParser {
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestProvider);

        Provider p = new Provider(owner);

        if (!parseComponentInfo(owner, flags, p.info, outError, "<provider>", sa,
        if (mParseProviderArgs == null) {
            mParseProviderArgs = new ParseComponentArgs(owner, outError,
                    com.android.internal.R.styleable.AndroidManifestProvider_name,
                    com.android.internal.R.styleable.AndroidManifestProvider_label,
                    com.android.internal.R.styleable.AndroidManifestProvider_icon,
                    mSeparateProcesses,
                    com.android.internal.R.styleable.AndroidManifestProvider_process,
                com.android.internal.R.styleable.AndroidManifestProvider_enabled)) {
                    com.android.internal.R.styleable.AndroidManifestProvider_enabled);
            mParseProviderArgs.tag = "<provider>";
        }
        
        mParseProviderArgs.sa = sa;
        mParseProviderArgs.flags = flags;
        
        Provider p = new Provider(mParseProviderArgs, new ProviderInfo());
        if (outError[0] != null) {
            sa.recycle();
            return null;
        }
@@ -1563,9 +1629,6 @@ public class PackageParser {
        p.info.exported = sa.getBoolean(
                com.android.internal.R.styleable.AndroidManifestProvider_exported, true);

        p.component = new ComponentName(owner.applicationInfo.packageName,
                p.info.name);

        String cpname = sa.getNonResourceString(
                com.android.internal.R.styleable.AndroidManifestProvider_authorities);

@@ -1706,14 +1769,22 @@ public class PackageParser {
        TypedArray sa = res.obtainAttributes(attrs,
                com.android.internal.R.styleable.AndroidManifestService);

        Service s = new Service(owner);

        if (!parseComponentInfo(owner, flags, s.info, outError, "<service>", sa,
        if (mParseServiceArgs == null) {
            mParseServiceArgs = new ParseComponentArgs(owner, outError,
                    com.android.internal.R.styleable.AndroidManifestService_name,
                    com.android.internal.R.styleable.AndroidManifestService_label,
                    com.android.internal.R.styleable.AndroidManifestService_icon,
                    mSeparateProcesses,
                    com.android.internal.R.styleable.AndroidManifestService_process,
                com.android.internal.R.styleable.AndroidManifestService_enabled)) {
                    com.android.internal.R.styleable.AndroidManifestService_enabled);
            mParseServiceArgs.tag = "<service>";
        }
        
        mParseServiceArgs.sa = sa;
        mParseServiceArgs.flags = flags;
        
        Service s = new Service(mParseServiceArgs, new ServiceInfo());
        if (outError[0] != null) {
            sa.recycle();
            return null;
        }
@@ -1725,9 +1796,6 @@ public class PackageParser {
                    com.android.internal.R.styleable.AndroidManifestService_exported, false);
        }

        s.component = new ComponentName(owner.applicationInfo.packageName,
                s.info.name);

        String str = sa.getNonResourceString(
                com.android.internal.R.styleable.AndroidManifestService_permission);
        if (str == null) {
@@ -2084,16 +2152,75 @@ public class PackageParser {

    public static class Component<II extends IntentInfo> {
        public final Package owner;
        public final ArrayList<II> intents = new ArrayList<II>(0);
        public ComponentName component;
        public final ArrayList<II> intents;
        public final ComponentName component;
        public final String componentShortName;
        public Bundle metaData;

        public Component(Package _owner) {
            owner = _owner;
            intents = null;
            component = null;
            componentShortName = null;
        }

        public Component(final ParsePackageItemArgs args, final PackageItemInfo outInfo) {
            owner = args.owner;
            intents = new ArrayList<II>(0);
            String name = args.sa.getNonResourceString(args.nameRes);
            if (name == null) {
                component = null;
                componentShortName = null;
                args.outError[0] = args.tag + " does not specify android:name";
                return;
            }

            outInfo.name
                = buildClassName(owner.applicationInfo.packageName, name, args.outError);
            if (outInfo.name == null) {
                component = null;
                componentShortName = null;
                args.outError[0] = args.tag + " does not have valid android:name";
                return;
            }

            component = new ComponentName(owner.applicationInfo.packageName,
                    outInfo.name);
            componentShortName = component.flattenToShortString();

            int iconVal = args.sa.getResourceId(args.iconRes, 0);
            if (iconVal != 0) {
                outInfo.icon = iconVal;
                outInfo.nonLocalizedLabel = null;
            }

            TypedValue v = args.sa.peekValue(args.labelRes);
            if (v != null && (outInfo.labelRes=v.resourceId) == 0) {
                outInfo.nonLocalizedLabel = v.coerceToString();
            }

            outInfo.packageName = owner.packageName;
        }

        public Component(final ParseComponentArgs args, final ComponentInfo outInfo) {
            this(args, (PackageItemInfo)outInfo);
            if (args.outError[0] != null) {
                return;
            }

            if (args.processRes != 0) {
                outInfo.processName = buildProcessName(owner.applicationInfo.packageName,
                        owner.applicationInfo.processName, args.sa.getNonResourceString(args.processRes),
                        args.flags, args.sepProcesses, args.outError);
            }
            outInfo.enabled = args.sa.getBoolean(args.enabledRes, true);
        }

        public Component(Component<II> clone) {
            owner = clone.owner;
            intents = clone.intents;
            component = clone.component;
            componentShortName = clone.componentShortName;
            metaData = clone.metaData;
        }
    }
@@ -2192,12 +2319,12 @@ public class PackageParser {
    }

    public final static class Activity extends Component<ActivityIntentInfo> {
        public final ActivityInfo info =
                new ActivityInfo();
        public final ActivityInfo info;

        public Activity(Package _owner) {
            super(_owner);
            info.applicationInfo = owner.applicationInfo;
        public Activity(final ParseComponentArgs args, final ActivityInfo _info) {
            super(args, _info);
            info = _info;
            info.applicationInfo = args.owner.applicationInfo;
        }
        
        public String toString() {
@@ -2221,12 +2348,12 @@ public class PackageParser {
    }

    public final static class Service extends Component<ServiceIntentInfo> {
        public final ServiceInfo info =
                new ServiceInfo();
        public final ServiceInfo info;

        public Service(Package _owner) {
            super(_owner);
            info.applicationInfo = owner.applicationInfo;
        public Service(final ParseComponentArgs args, final ServiceInfo _info) {
            super(args, _info);
            info = _info;
            info.applicationInfo = args.owner.applicationInfo;
        }
        
        public String toString() {
@@ -2252,10 +2379,10 @@ public class PackageParser {
        public final ProviderInfo info;
        public boolean syncable;

        public Provider(Package _owner) {
            super(_owner);
            info = new ProviderInfo();
            info.applicationInfo = owner.applicationInfo;
        public Provider(final ParseComponentArgs args, final ProviderInfo _info) {
            super(args, _info);
            info = _info;
            info.applicationInfo = args.owner.applicationInfo;
            syncable = false;
        }
        
@@ -2291,11 +2418,11 @@ public class PackageParser {
    }

    public final static class Instrumentation extends Component {
        public final InstrumentationInfo info =
                new InstrumentationInfo();
        public final InstrumentationInfo info;

        public Instrumentation(Package _owner) {
            super(_owner);
        public Instrumentation(final ParsePackageItemArgs args, final InstrumentationInfo _info) {
            super(args, _info);
            info = _info;
        }
        
        public String toString() {
+23 −5

File changed.

Preview size limit exceeded, changes collapsed.

Loading