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

Commit f7d7df9d authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Simplify behavior of TestLooperManager#isBlockedOnSyncBarrier." into main

parents 84943159 d9640493
Loading
Loading
Loading
Loading
+2 −45
Original line number Diff line number Diff line
@@ -1474,55 +1474,12 @@ public final class MessageQueue {
            Iterator<MessageNode> queueIter = mPriorityQueue.iterator();
            MessageNode queueNode = iterateNext(queueIter);

            if (queueNode != null && queueNode.isBarrier()) {
                long now = SystemClock.uptimeMillis();

                /* Look for a deliverable async node. If one exists we are not blocked. */
                Iterator<MessageNode> asyncQueueIter = mAsyncPriorityQueue.iterator();
                MessageNode asyncNode = iterateNext(asyncQueueIter);
                if (asyncNode != null && now >= asyncNode.getWhen()) {
                    return false;
                }
                /*
                 * Look for a deliverable sync node. In this case, if one exists we are blocked
                 * since the barrier prevents delivery of the Message.
                 */
                while (queueNode != null && queueNode.isBarrier()) {
                    queueNode = iterateNext(queueIter);
                }
                if (queueNode != null && now >= queueNode.getWhen()) {
                    return true;
                }
            }
            return (queueNode != null && queueNode.isBarrier());
        } else {
            Message msg = mMessages;
            if (msg != null && msg.target == null) {
                Message iter = msg;
                /* Look for a deliverable async node */
                do {
                    iter = iter.next;
                } while (iter != null && !iter.isAsynchronous());

                long now = SystemClock.uptimeMillis();
                if (iter != null && now >= iter.when) {
                    return false;
                }
                /*
                 * Look for a deliverable sync node. In this case, if one exists we are blocked
                 * since the barrier prevents delivery of the Message.
                 */
                iter = msg;
                do {
                    iter = iter.next;
                } while (iter != null && (iter.target == null || iter.isAsynchronous()));

                if (iter != null && now >= iter.when) {
                    return true;
            return msg != null && msg.target == null;
        }
    }
        }
        return false;
    }

    private static final class MatchHandlerWhatAndObject extends MessageCompare {
        @Override
+1 −22
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.os;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1122,27 +1121,7 @@ public final class MessageQueue {
        Iterator<MessageNode> queueIter = mPriorityQueue.iterator();
        MessageNode queueNode = iterateNext(queueIter);

        if (queueNode != null && queueNode.isBarrier()) {
            long now = SystemClock.uptimeMillis();

            /* Look for a deliverable async node. If one exists we are not blocked. */
            Iterator<MessageNode> asyncQueueIter = mAsyncPriorityQueue.iterator();
            MessageNode asyncNode = iterateNext(asyncQueueIter);
            if (asyncNode != null && now >= asyncNode.getWhen()) {
                return false;
            }
            /*
             * Look for a deliverable sync node. In this case, if one exists we are blocked
             * since the barrier prevents delivery of the Message.
             */
            while (queueNode != null && queueNode.isBarrier()) {
                queueNode = iterateNext(queueIter);
            }
            if (queueNode != null && now >= queueNode.getWhen()) {
                return true;
            }
        }
        return false;
        return queueNode != null && queueNode.isBarrier();
    }

    private StateNode getStateNode(StackNode node) {
+3 −26
Original line number Diff line number Diff line
@@ -820,33 +820,10 @@ public final class MessageQueue {
     */
    boolean isBlockedOnSyncBarrier() {
        throwIfNotTest();
        synchronized (this) {
            Message msg = mMessages;
        if (msg != null && msg.target == null) {
            Message iter = msg;
            /* Look for a deliverable async node */
            do {
                iter = iter.next;
            } while (iter != null && !iter.isAsynchronous());

            long now = SystemClock.uptimeMillis();
            if (iter != null && now >= iter.when) {
                return false;
            return msg != null && msg.target == null;
        }
            /*
                * Look for a deliverable sync node. In this case, if one exists we are blocked
                * since the barrier prevents delivery of the Message.
                */
            iter = msg;
            do {
                iter = iter.next;
            } while (iter != null && (iter.target == null || iter.isAsynchronous()));

            if (iter != null && now >= iter.when) {
                return true;
            }
            return false;
        }
        return false;
    }

    boolean hasMessages(Handler h, int what, Object object) {
+0 −3
Original line number Diff line number Diff line
@@ -129,9 +129,6 @@ public class TestLooperManager {

    /**
     * Checks whether the Looper is currently blocked on a sync barrier.
     *
     * A Looper is blocked on a sync barrier if there is a Message in the Looper's
     * queue that is ready for execution but is behind a sync barrier
     */
    @FlaggedApi(Flags.FLAG_MESSAGE_QUEUE_TESTABILITY)
    public boolean isBlockedOnSyncBarrier() {