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

Commit c3815a56 authored by Amith Yamasani's avatar Amith Yamasani Committed by Android (Google) Code Review
Browse files

Merge "Fix PendingIntent caching for multiuser" into jb-mr1-dev

parents b5b2acec 4ea60693
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -4430,7 +4430,8 @@ public final class ActivityManagerService extends ActivityManagerNative
        PendingIntentRecord.Key key = new PendingIntentRecord.Key(
                type, packageName, activity, resultWho,
                requestCode, intents, resolvedTypes, flags, options);
                requestCode, intents, resolvedTypes, flags, options,
                UserHandle.getUserId(callingUid));
        WeakReference<PendingIntentRecord> ref;
        ref = mIntentSenderRecords.get(key);
        PendingIntentRecord rec = ref != null ? ref.get() : null;
+9 −3
Original line number Diff line number Diff line
@@ -54,11 +54,12 @@ class PendingIntentRecord extends IIntentSender.Stub {
        String[] allResolvedTypes;
        final int flags;
        final int hashCode;
        final int userId;
        
        private static final int ODD_PRIME_NUMBER = 37;
        
        Key(int _t, String _p, ActivityRecord _a, String _w,
                int _r, Intent[] _i, String[] _it, int _f, Bundle _o) {
                int _r, Intent[] _i, String[] _it, int _f, Bundle _o, int _userId) {
            type = _t;
            packageName = _p;
            activity = _a;
@@ -70,10 +71,12 @@ class PendingIntentRecord extends IIntentSender.Stub {
            allResolvedTypes = _it;
            flags = _f;
            options = _o;
            userId = _userId;

            int hash = 23;
            hash = (ODD_PRIME_NUMBER*hash) + _f;
            hash = (ODD_PRIME_NUMBER*hash) + _r;
            hash = (ODD_PRIME_NUMBER*hash) + _userId;
            if (_w != null) {
                hash = (ODD_PRIME_NUMBER*hash) + _w.hashCode();
            }
@@ -102,6 +105,9 @@ class PendingIntentRecord extends IIntentSender.Stub {
                if (type != other.type) {
                    return false;
                }
                if (userId != other.userId){
                    return false;
                }
                if (!packageName.equals(other.packageName)) {
                    return false;
                }
@@ -156,7 +162,7 @@ class PendingIntentRecord extends IIntentSender.Stub {
                + " intent="
                + (requestIntent != null
                        ? requestIntent.toShortString(false, true, false, false) : "<null>")
                + " flags=0x" + Integer.toHexString(flags) + "}";
                + " flags=0x" + Integer.toHexString(flags) + " u=" + userId + "}";
        }
        
        String typeName() {