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

Commit 8c054dd0 authored by Mark Fasheh's avatar Mark Fasheh
Browse files

Return messages in future in pollForTest.

Previously pollForTest only returns a value if when <= current time.

Flag: android.os.message_queue_testability
Bug: 112000181
Test: atest TestLooperManagerTest
Test: atest MessageQueueTest
Change-Id: I2d77740c19ae229ba0ccafaca0a2b2071cfd67dc
parent 324236e8
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -616,7 +616,7 @@ public final class MessageQueue {
    /* This is only read/written from the Looper thread. For use with Concurrent MQ */
    private int mNextPollTimeoutMillis;
    private boolean mMessageDirectlyQueued;
    private Message nextMessage(boolean peek) {
    private Message nextMessage(boolean peek, boolean returnEarliest) {
        int i = 0;

        while (true) {
@@ -693,7 +693,7 @@ public final class MessageQueue {
             * If we have a barrier we should return the async node (if it exists and is ready)
             */
            if (msgNode != null && msgNode.isBarrier()) {
                if (asyncMsgNode != null && now >= asyncMsgNode.getWhen()) {
                if (asyncMsgNode != null && (returnEarliest || now >= asyncMsgNode.getWhen())) {
                    found = asyncMsgNode;
                } else {
                    next = asyncMsgNode;
@@ -707,7 +707,7 @@ public final class MessageQueue {
                earliest = pickEarliestNode(msgNode, asyncMsgNode);

                if (earliest != null) {
                    if (now >= earliest.getWhen()) {
                    if (returnEarliest || now >= earliest.getWhen()) {
                        found = earliest;
                    } else {
                        next = earliest;
@@ -813,7 +813,7 @@ public final class MessageQueue {
            mMessageDirectlyQueued = false;
            nativePollOnce(ptr, mNextPollTimeoutMillis);

            Message msg = nextMessage(false);
            Message msg = nextMessage(false, false);
            if (msg != null) {
                msg.markInUse();
                return msg;
@@ -1397,6 +1397,7 @@ public final class MessageQueue {
                if (now >= msg.when) {
                    // Got a message.
                    mBlocked = false;
                }
                if (prevMsg != null) {
                    prevMsg.next = msg.next;
                    if (prevMsg.next == null) {
@@ -1419,7 +1420,6 @@ public final class MessageQueue {
                return msg;
            }
        }
        }
        return null;
    }

@@ -1434,7 +1434,7 @@ public final class MessageQueue {
        throwIfNotTest();
        Message ret;
        if (mUseConcurrent) {
            ret = nextMessage(true);
            ret = nextMessage(true, true);
        } else {
            ret = legacyPeekOrPoll(true);
        }
@@ -1452,7 +1452,7 @@ public final class MessageQueue {
    Message pollForTest() {
        throwIfNotTest();
        if (mUseConcurrent) {
            return nextMessage(false);
            return nextMessage(false, true);
        } else {
            return legacyPeekOrPoll(false);
        }
@@ -1469,7 +1469,7 @@ public final class MessageQueue {
        throwIfNotTest();
        if (mUseConcurrent) {
            // Call nextMessage to get the stack drained into our priority queues
            nextMessage(true);
            nextMessage(true, false);

            Iterator<MessageNode> queueIter = mPriorityQueue.iterator();
            MessageNode queueNode = iterateNext(queueIter);
+7 −7
Original line number Diff line number Diff line
@@ -589,7 +589,7 @@ public final class MessageQueue {
    private static final AtomicLong mMessagesDelivered = new AtomicLong();
    private boolean mMessageDirectlyQueued;

    private Message nextMessage(boolean peek) {
    private Message nextMessage(boolean peek, boolean returnEarliest) {
        int i = 0;

        while (true) {
@@ -666,7 +666,7 @@ public final class MessageQueue {
             * If we have a barrier we should return the async node (if it exists and is ready)
             */
            if (msgNode != null && msgNode.isBarrier()) {
                if (asyncMsgNode != null && now >= asyncMsgNode.getWhen()) {
                if (asyncMsgNode != null && (returnEarliest || now >= asyncMsgNode.getWhen())) {
                    found = asyncMsgNode;
                } else {
                    next = asyncMsgNode;
@@ -680,7 +680,7 @@ public final class MessageQueue {
                earliest = pickEarliestNode(msgNode, asyncMsgNode);

                if (earliest != null) {
                    if (now >= earliest.getWhen()) {
                    if (returnEarliest || now >= earliest.getWhen()) {
                        found = earliest;
                    } else {
                        next = earliest;
@@ -785,7 +785,7 @@ public final class MessageQueue {
            mMessageDirectlyQueued = false;
            nativePollOnce(ptr, mNextPollTimeoutMillis);

            Message msg = nextMessage(false);
            Message msg = nextMessage(false, false);
            if (msg != null) {
                msg.markInUse();
                return msg;
@@ -1090,7 +1090,7 @@ public final class MessageQueue {
     */
    Long peekWhenForTest() {
        throwIfNotTest();
        Message ret = nextMessage(true);
        Message ret = nextMessage(true, true);
        return ret != null ? ret.when : null;
    }

@@ -1103,7 +1103,7 @@ public final class MessageQueue {
    @Nullable
    Message pollForTest() {
        throwIfNotTest();
        return nextMessage(false);
        return nextMessage(false, true);
    }

    /**
@@ -1117,7 +1117,7 @@ public final class MessageQueue {
        throwIfNotTest();

        // Call nextMessage to get the stack drained into our priority queues
        nextMessage(true);
        nextMessage(true, false);

        Iterator<MessageNode> queueIter = mPriorityQueue.iterator();
        MessageNode queueNode = iterateNext(queueIter);
+18 −18
Original line number Diff line number Diff line
@@ -759,6 +759,7 @@ public final class MessageQueue {
                if (now >= msg.when) {
                    // Got a message.
                    mBlocked = false;
                }
                if (prevMsg != null) {
                    prevMsg.next = msg.next;
                    if (prevMsg.next == null) {
@@ -781,7 +782,6 @@ public final class MessageQueue {
                return msg;
            }
        }
        }
        return null;
    }