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

Commit 9564d9c7 authored by Mark Fasheh's avatar Mark Fasheh
Browse files

MessageQueue: Deduplicate MessageCompare classes

Test: atest MessageQueueTest
Bug: 421623328
Flag: EXEMPT - refactor
Change-Id: I6fd7660e7b7ec802f079e5431f13f446ac0c3f78
parent eaed972f
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -12551,18 +12551,18 @@ HSPLandroid/os/MessageQueue$EnqueueOrder;-><init>()V
HSPLandroid/os/MessageQueue$EnqueueOrder;->compare(Landroid/os/Message;Landroid/os/Message;)I
HSPLandroid/os/MessageQueue$EnqueueOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
HSPLandroid/os/MessageQueue$FileDescriptorRecord;-><init>(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
HSPLandroid/os/MessageQueue$MatchAllFutureMessages;-><init>()V
HSPLandroid/os/MessageQueue$MatchAllMessages;-><init>()V
HSPLandroid/os/MessageQueue$MatchBarrierToken;-><init>(I)V
HSPLandroid/os/MessageQueue$MatchDeliverableMessages;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandler;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerAndObject;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerAndObjectEquals;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObject;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerRunnableAndObjectEquals;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObject;-><init>()V
HSPLandroid/os/MessageQueue$MatchHandlerWhatAndObjectEquals;-><init>()V
HSPLandroid/os/MessageQueue$MessageCompare;-><init>()V
HSPLandroid/os/Message$MatchAllFutureMessages;-><init>()V
HSPLandroid/os/Message$MatchAllMessages;-><init>()V
HSPLandroid/os/Message$MatchBarrierToken;-><init>(I)V
HSPLandroid/os/Message$MatchDeliverableMessages;-><init>()V
HSPLandroid/os/Message$MatchHandler;-><init>()V
HSPLandroid/os/Message$MatchHandlerAndObject;-><init>()V
HSPLandroid/os/Message$MatchHandlerAndObjectEquals;-><init>()V
HSPLandroid/os/Message$MatchHandlerRunnableAndObject;-><init>()V
HSPLandroid/os/Message$MatchHandlerRunnableAndObjectEquals;-><init>()V
HSPLandroid/os/Message$MatchHandlerWhatAndObject;-><init>()V
HSPLandroid/os/Message$MatchHandlerWhatAndObjectEquals;-><init>()V
HSPLandroid/os/Message$MessageCompare;-><init>()V
HSPLandroid/os/MessageQueue$MessageCounts;-><clinit>()V
HSPLandroid/os/MessageQueue$MessageCounts;-><init>()V
HSPLandroid/os/MessageQueue$MessageCounts;->clearCounts()V
+7 −148
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.os;

import static android.os.Message.*;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -313,16 +315,6 @@ public final class MessageQueue {
        return msg != null && msg.target == null;
    }

    static final class MatchDeliverableMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when <= when;
        }
    }
    private static final MatchDeliverableMessages sMatchDeliverableMessages =
            new MatchDeliverableMessages();

    private boolean isIdleConcurrent() {
        final long now = SystemClock.uptimeMillis();

@@ -1265,23 +1257,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchBarrierToken extends MessageCompare {
        int mBarrierToken;

        MatchBarrierToken(int token) {
            mBarrierToken = token;
        }

        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == null && m.arg1 == mBarrierToken) {
                return true;
            }
            return false;
        }
    }

    private void removeSyncBarrierConcurrent(int token) {
        boolean removed;
        final MatchBarrierToken matchBarrierToken = new MatchBarrierToken(token);
@@ -1556,26 +1531,8 @@ public final class MessageQueue {
        }
    }

    /**
     * Matches handler, what, and object if non-null.
     * @hide
     */
    public static final class MatchHandlerWhatAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerWhatAndObject sMatchHandlerWhatAndObject =
            new MatchHandlerWhatAndObject();

    private boolean hasMessagesConcurrent(Handler h, int what, Object object) {
        return findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObject,
                false);
        return findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObject, false);
    }

    private boolean hasMessagesLegacy(Handler h, int what, Object object) {
@@ -1602,18 +1559,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandlerWhatAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerWhatAndObjectEquals sMatchHandlerWhatAndObjectEquals =
            new MatchHandlerWhatAndObjectEquals();

    private boolean hasEqualMessagesConcurrent(Handler h, int what, Object object) {
        return findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObjectEquals,
@@ -1644,22 +1589,8 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandlerRunnableAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerRunnableAndObject sMatchHandlerRunnableAndObject =
            new MatchHandlerRunnableAndObject();

    private boolean hasMessagesConcurrent(Handler h, Runnable r, Object object) {
        return findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObject,
                false);
        return findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObject, false);
    }

    private boolean hasMessagesLegacy(Handler h, Runnable r, Object object) {
@@ -1687,15 +1618,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandler extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.target == h;
        }
    }
    private static final MatchHandler sMatchHandler = new MatchHandler();

    private boolean hasMessagesConcurrent(Handler h) {
        return findOrRemoveMessages(h, -1, null, null, 0, sMatchHandler, false);
    }
@@ -1785,7 +1707,8 @@ public final class MessageQueue {
    }

    private void removeEqualMessagesConcurrent(Handler h, int what, Object object) {
            findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObjectEquals, true);
            findOrRemoveMessages(h, what, object, null, 0, sMatchHandlerWhatAndObjectEquals,
                    true);
    }

    private void removeEqualMessagesLegacy(Handler h, int what, Object object) {
@@ -1906,19 +1829,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandlerRunnableAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerRunnableAndObjectEquals sMatchHandlerRunnableAndObjectEquals =
            new MatchHandlerRunnableAndObjectEquals();

    private void removeEqualMessagesConcurrent(Handler h, Runnable r, Object object) {
        findOrRemoveMessages(h, -1, object, r, 0, sMatchHandlerRunnableAndObjectEquals, true);
    }
@@ -1980,18 +1890,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandlerAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerAndObject sMatchHandlerAndObject = new MatchHandlerAndObject();

    private void removeCallbacksAndMessagesConcurrent(Handler h, Object object) {
            findOrRemoveMessages(h, -1, object, null, 0, sMatchHandlerAndObject, true);
    }
@@ -2052,19 +1950,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchHandlerAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerAndObjectEquals sMatchHandlerAndObjectEquals =
            new MatchHandlerAndObjectEquals();

    void removeCallbacksAndEqualMessagesConcurrent(Handler h, Object object) {
        findOrRemoveMessages(h, -1, object, null, 0, sMatchHandlerAndObjectEquals, true);
    }
@@ -2173,30 +2058,12 @@ public final class MessageQueue {
        }
    }

    static final class MatchAllMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return true;
        }
    }
    private static final MatchAllMessages sMatchAllMessages = new MatchAllMessages();
    private void removeAllMessages() {
        findOrRemoveMessages(null, -1, null, null, 0, sMatchAllMessages, true);
    }

    static final class MatchAllFutureMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when > when;
        }
    }
    private static final MatchAllFutureMessages sMatchAllFutureMessages =
            new MatchAllFutureMessages();
    private void removeAllFutureMessages(long now) {
        findOrRemoveMessages(null, -1, null, null, now,
                sMatchAllFutureMessages, true);
        findOrRemoveMessages(null, -1, null, null, now, sMatchAllFutureMessages, true);
    }

    @NeverCompile
@@ -2994,14 +2861,6 @@ public final class MessageQueue {
        }
    }

    /*
     * This class is used to find matches for hasMessages() and removeMessages()
     */
    abstract static class MessageCompare {
        public abstract boolean compareMessage(Message m, Handler h, int what, Object object,
                Runnable r, long when);
    }

    private boolean stackHasMessages(Handler h, int what, Object object, Runnable r, long when,
            MessageCompare compare, boolean removeMatches) {
        boolean found = false;
+6 −146
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.os;

import static android.os.Message.*;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -608,16 +610,6 @@ public final class MessageQueue {
        }
    }

    static final class MatchDeliverableMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when <= when;
        }
    }
    private static final MatchDeliverableMessages sMatchDeliverableMessages =
            new MatchDeliverableMessages();

    /**
     * Returns true if the looper has no pending messages which are due to be processed.
     *
@@ -729,20 +721,6 @@ public final class MessageQueue {
        return token;
    }

    static final class MatchBarrierToken extends MessageCompare {
        final int mBarrierToken;

        MatchBarrierToken(int token) {
            mBarrierToken = token;
        }

        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.target == null && m.arg1 == mBarrierToken;
        }
    }

    /**
     * Removes a synchronization barrier.
     *
@@ -827,34 +805,6 @@ public final class MessageQueue {
        throw new UnsupportedOperationException("Not implemented");
    }

    /*
     * This class is used to find matches for hasMessages() and removeMessages()
     *
     * TODO: Move these to be inner package-private classes of Message, and then share the code
     * with CombinedMessageQueue
     */
    abstract static class MessageCompare {
        public abstract boolean compareMessage(Message m, Handler h, int what, Object object,
                Runnable r, long when);
    }

    /**
     * Matches handler, what, and object if non-null.
     * @hide
     */
    public static final class MatchHandlerWhatAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerWhatAndObject sMatchHandlerWhatAndObject =
            new MatchHandlerWhatAndObject();

    boolean hasMessages(Handler h, int what, Object object) {
        if (h == null) {
            return false;
@@ -862,19 +812,6 @@ public final class MessageQueue {
        return mStack.hasMessages(sMatchHandlerWhatAndObject, h, what, object, null, 0);
    }

    static final class MatchHandlerWhatAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerWhatAndObjectEquals sMatchHandlerWhatAndObjectEquals =
            new MatchHandlerWhatAndObjectEquals();

    boolean hasEqualMessages(Handler h, int what, Object object) {
        if (h == null) {
            return false;
@@ -882,19 +819,6 @@ public final class MessageQueue {
        return mStack.hasMessages(sMatchHandlerWhatAndObjectEquals, h, what, object, null, 0);
    }

    static final class MatchHandlerRunnableAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerRunnableAndObject sMatchHandlerRunnableAndObject =
            new MatchHandlerRunnableAndObject();

    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
    boolean hasMessages(Handler h, Runnable r, Object object) {
        if (h == null) {
@@ -903,15 +827,6 @@ public final class MessageQueue {
        return mStack.hasMessages(sMatchHandlerRunnableAndObject, h, -1, object, r, 0);
    }

    static final class MatchHandler extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.target == h;
        }
    }
    private static final MatchHandler sMatchHandler = new MatchHandler();

    boolean hasMessages(Handler h) {
        if (h == null) {
            return false;
@@ -940,19 +855,6 @@ public final class MessageQueue {
        mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObject, h, -1, object, r, 0);
    }

    static final class MatchHandlerRunnableAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerRunnableAndObjectEquals sMatchHandlerRunnableAndObjectEquals =
            new MatchHandlerRunnableAndObjectEquals();

    void removeEqualMessages(Handler h, Runnable r, Object object) {
        if (h == null || r == null) {
            return;
@@ -960,18 +862,6 @@ public final class MessageQueue {
        mStack.moveMatchingToFreelist(sMatchHandlerRunnableAndObjectEquals, h, -1, object, r, 0);
    }

    static final class MatchHandlerAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerAndObject sMatchHandlerAndObject = new MatchHandlerAndObject();

    void removeCallbacksAndMessages(Handler h, Object object) {
        if (h == null) {
            return;
@@ -979,19 +869,6 @@ public final class MessageQueue {
        mStack.moveMatchingToFreelist(sMatchHandlerAndObject, h, -1, object, null, 0);
    }

    static final class MatchHandlerAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    private static final MatchHandlerAndObjectEquals sMatchHandlerAndObjectEquals =
            new MatchHandlerAndObjectEquals();

    void removeCallbacksAndEqualMessages(Handler h, Object object) {
        if (h == null) {
            return;
@@ -999,31 +876,14 @@ public final class MessageQueue {
        mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, h, -1, object, null, 0);
    }

    static final class MatchAllMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return true;
        }
    }
    private static final MatchAllMessages sMatchAllMessages = new MatchAllMessages();

    private void removeAllMessages() {
        mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, 0);
    }

    static final class MatchAllFutureMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when > when;
        }
        mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null,
                0);
    }
    private static final MatchAllFutureMessages sMatchAllFutureMessages =
            new MatchAllFutureMessages();

    private void removeAllFutureMessages(long when) {
        mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null, when);
        mStack.moveMatchingToFreelist(sMatchHandlerAndObjectEquals, null, -1, null, null,
                when);
    }

    /**
+175 −0
Original line number Diff line number Diff line
@@ -779,4 +779,179 @@ public final class Message implements Parcelable {
        sendingUid = source.readInt();
        workSourceUid = source.readInt();
    }

    /*
     * This class is used to find matches for MessageQueue.hasMessages() and
     * MessageQueue.removeMessages()
     */
    abstract static class MessageCompare {
        public abstract boolean compareMessage(Message m, Handler h, int what, Object object,
                Runnable r, long when);
    }

    /**
     * Matches handler, what, and object if non-null.
     *
     * @hide
     */
    public static final class MatchHandlerWhatAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    /** @hide */
    public static final MatchHandlerWhatAndObject sMatchHandlerWhatAndObject =
            new MatchHandlerWhatAndObject();

    /**
     * Matches handler, what, and object.equals() if non-null.
     */
    static final class MatchHandlerWhatAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.what == what && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }

    static final MatchHandlerWhatAndObjectEquals sMatchHandlerWhatAndObjectEquals =
            new MatchHandlerWhatAndObjectEquals();

    /**
     * Matches handler, runnable, and object if non-null.
     */
    static final class MatchHandlerRunnableAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    static final MatchHandlerRunnableAndObject sMatchHandlerRunnableAndObject =
            new MatchHandlerRunnableAndObject();

    /**
     * Matches handler.
     */
    static final class MatchHandler extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.target == h;
        }
    }
    static final MatchHandler sMatchHandler = new MatchHandler();

    /**
     * Matches handler, runnable, and object.equals() if non-null.
     */
    static final class MatchHandlerRunnableAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && m.callback == r && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    static final MatchHandlerRunnableAndObjectEquals sMatchHandlerRunnableAndObjectEquals =
            new MatchHandlerRunnableAndObjectEquals();

    /**
     * Matches handler, and object if non-null.
     */
    static final class MatchHandlerAndObject extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || m.obj == object)) {
                return true;
            }
            return false;
        }
    }
    static final MatchHandlerAndObject sMatchHandlerAndObject = new MatchHandlerAndObject();

    /**
     * Matches handler, and object.equals() if non-null.
     */
    static final class MatchHandlerAndObjectEquals extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            if (m.target == h && (object == null || object.equals(m.obj))) {
                return true;
            }
            return false;
        }
    }
    static final MatchHandlerAndObjectEquals sMatchHandlerAndObjectEquals =
            new MatchHandlerAndObjectEquals();

    /**
     * Matches all messages.
     */
    static final class MatchAllMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return true;
        }
    }
    static final MatchAllMessages sMatchAllMessages = new MatchAllMessages();

    /**
     * Matches all messages whose when is greater than the when parameter passed in.
     */
    static final class MatchAllFutureMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when > when;
        }
    }
    static final MatchAllFutureMessages sMatchAllFutureMessages =
            new MatchAllFutureMessages();

    /**
     * For use with removeSyncBarrier. Matches the barrier with passed token.
     */
    static final class MatchBarrierToken extends MessageCompare {
        final int mBarrierToken;

        MatchBarrierToken(int token) {
            mBarrierToken = token;
        }

        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.target == null && m.arg1 == mBarrierToken;
        }
    }

    /**
     * Matches any messages that come at or before when.
     */
    static final class MatchDeliverableMessages extends MessageCompare {
        @Override
        public boolean compareMessage(Message m, Handler h, int what, Object object, Runnable r,
                long when) {
            return m.when <= when;
        }
    }
    static final MatchDeliverableMessages sMatchDeliverableMessages =
            new MatchDeliverableMessages();
}
+3 −3

File changed.

Preview size limit exceeded, changes collapsed.

Loading