From 1f476ecef077639a2407c34c2df974a4d2284c3c Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 4 Feb 2019 17:39:35 +0000 Subject: [PATCH] Add missing removeCallbacksAndMessages to RobolectricUtil. The Util class already handles removeMessages calls but so far ignored calls to removeCallbacksAndMessages. PiperOrigin-RevId: 232312458 --- .../exoplayer2/testutil/RobolectricUtil.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/RobolectricUtil.java b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/RobolectricUtil.java index dc7781fd90..1e7f09bacf 100644 --- a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/RobolectricUtil.java +++ b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/RobolectricUtil.java @@ -37,6 +37,7 @@ import org.robolectric.shadows.ShadowMessageQueue; public final class RobolectricUtil { private static final AtomicLong sequenceNumberGenerator = new AtomicLong(0); + private static final int ANY_MESSAGE = Integer.MIN_VALUE; private RobolectricUtil() {} @@ -110,7 +111,8 @@ public final class RobolectricUtil { boolean isRemoved = false; for (RemovedMessage removedMessage : removedMessages) { if (removedMessage.handler == target - && removedMessage.what == pendingMessage.message.what + && (removedMessage.what == ANY_MESSAGE + || removedMessage.what == pendingMessage.message.what) && (removedMessage.object == null || removedMessage.object == pendingMessage.message.obj) && pendingMessage.sequenceNumber < removedMessage.sequenceNumber) { @@ -179,6 +181,15 @@ public final class RobolectricUtil { ((CustomLooper) shadowOf(looper)).removeMessages(handler, what, object); } } + + @Implementation + public void removeCallbacksAndMessages(Handler handler, Object object) { + Looper looper = ShadowLooper.getLooperForThread(looperThread); + if (shadowOf(looper) instanceof CustomLooper + && shadowOf(looper) != ShadowLooper.getShadowMainLooper()) { + ((CustomLooper) shadowOf(looper)).removeMessages(handler, ANY_MESSAGE, object); + } + } } private static final class PendingMessage implements Comparable {