summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/CombinedMessageQueue/MessageQueue.java47
-rw-r--r--core/java/android/os/ConcurrentMessageQueue/MessageQueue.java23
-rw-r--r--core/java/android/os/LegacyMessageQueue/MessageQueue.java29
-rw-r--r--core/java/android/os/TestLooperManager.java3
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() {