diff options
4 files changed, 6 insertions, 96 deletions
diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java index 3026609ed5cb..50b621c46778 100644 --- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java +++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java @@ -1474,54 +1474,11 @@ 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 { diff --git a/core/java/android/os/ConcurrentMessageQueue/MessageQueue.java b/core/java/android/os/ConcurrentMessageQueue/MessageQueue.java index d7d8e4199b33..80da487a1358 100644 --- a/core/java/android/os/ConcurrentMessageQueue/MessageQueue.java +++ b/core/java/android/os/ConcurrentMessageQueue/MessageQueue.java @@ -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) { diff --git a/core/java/android/os/LegacyMessageQueue/MessageQueue.java b/core/java/android/os/LegacyMessageQueue/MessageQueue.java index d12d99a71251..cde2ba56fcba 100644 --- a/core/java/android/os/LegacyMessageQueue/MessageQueue.java +++ b/core/java/android/os/LegacyMessageQueue/MessageQueue.java @@ -820,33 +820,10 @@ public final class MessageQueue { */ boolean isBlockedOnSyncBarrier() { throwIfNotTest(); - 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 false; + synchronized (this) { + Message msg = mMessages; + return msg != null && msg.target == null; } - return false; } boolean hasMessages(Handler h, int what, Object object) { diff --git a/core/java/android/os/TestLooperManager.java b/core/java/android/os/TestLooperManager.java index 289b98c9b1d4..d451109554fa 100644 --- a/core/java/android/os/TestLooperManager.java +++ b/core/java/android/os/TestLooperManager.java @@ -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() { |