Merge "Make PointerEventDispatcherTest faster" into main

This commit is contained in:
Treehugger Robot
2023-07-21 02:16:51 +00:00
committed by Android (Google) Code Review
3 changed files with 16 additions and 8 deletions

View File

@@ -113,13 +113,11 @@ class InputEventSenderAndReceiverTest {
val sent = SpyInputEventSender.Timeline(
inputEventId = 1, gpuCompletedTime = 3, presentTime = 2)
mReceiver.reportTimeline(sent.inputEventId, sent.gpuCompletedTime, sent.presentTime)
val received = mSender.getTimeline()
assertEquals(null, received)
mSender.assertNoEvents()
// Sender will no longer receive callbacks for this fd, even if receiver sends a valid
// timeline later
mReceiver.reportTimeline(2 /*inputEventId*/, 3 /*gpuCompletedTime*/, 4 /*presentTime*/)
val receivedSecondTimeline = mSender.getTimeline()
assertEquals(null, receivedSecondTimeline)
mSender.assertNoEvents()
}
/**

View File

@@ -25,7 +25,6 @@ import android.view.WindowManagerPolicyConstants.PointerEventListener
import com.android.server.UiThread
import com.android.server.wm.PointerEventDispatcher
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -86,8 +85,7 @@ class PointerEventDispatcherTest {
// Since the listener raises an exception during the event handling, the event should be
// marked as 'not handled'.
assertEquals(SpyInputEventSender.FinishedSignal(seq, handled = false), finishedSignal)
// Ensure that there aren't double finish calls. This would crash if there's a call
// to finish twice.
assertNull(mSender.getFinishedSignal())
// Ensure that there aren't double finish calls.
mSender.assertNoEvents()
}
}

View File

@@ -27,10 +27,17 @@ import android.view.MotionEvent
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.TimeUnit
import org.junit.Assert.assertNull
private fun <T> getEvent(queue: LinkedBlockingQueue<T>): T? {
return queue.poll(DEFAULT_DISPATCHING_TIMEOUT_MILLIS.toLong(), TimeUnit.MILLISECONDS)
}
private fun <T> assertNoEvents(queue: LinkedBlockingQueue<T>) {
// Poll the queue with a shorter timeout, to make the check faster.
assertNull(queue.poll(100L, TimeUnit.MILLISECONDS))
}
class SpyInputEventReceiver(channel: InputChannel, looper: Looper) :
InputEventReceiver(channel, looper) {
private val mInputEvents = LinkedBlockingQueue<InputEvent>()
@@ -72,4 +79,9 @@ class SpyInputEventSender(channel: InputChannel, looper: Looper) :
fun getTimeline(): Timeline? {
return getEvent(mTimelines)
}
fun assertNoEvents() {
assertNoEvents(mFinishedSignals)
assertNoEvents(mTimelines)
}
}