Add hover event handling to new touch architecture
Test: atest SystemUITests:com.android.systemui.biometrics Bug: 260752272 Change-Id: Ie4f546320cf58feb7a640d9be2fef0f339a9322c
This commit is contained in:
@@ -54,9 +54,12 @@ class SinglePointerTouchProcessor @Inject constructor(val overlapDetector: Overl
|
||||
return when (event.actionMasked) {
|
||||
MotionEvent.ACTION_DOWN,
|
||||
MotionEvent.ACTION_POINTER_DOWN,
|
||||
MotionEvent.ACTION_MOVE -> processActionMove(preprocess())
|
||||
MotionEvent.ACTION_MOVE,
|
||||
MotionEvent.ACTION_HOVER_ENTER,
|
||||
MotionEvent.ACTION_HOVER_MOVE -> processActionMove(preprocess())
|
||||
MotionEvent.ACTION_UP,
|
||||
MotionEvent.ACTION_POINTER_UP ->
|
||||
MotionEvent.ACTION_POINTER_UP,
|
||||
MotionEvent.ACTION_HOVER_EXIT ->
|
||||
processActionUp(preprocess(), event.getPointerId(event.actionIndex))
|
||||
MotionEvent.ACTION_CANCEL -> processActionCancel(NormalizedTouchData())
|
||||
else ->
|
||||
|
||||
@@ -110,6 +110,28 @@ class SinglePointerTouchProcessorTest(val testCase: TestCase) : SysuiTestCase()
|
||||
expectedInteractionEvent = InteractionEvent.UP,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
// MotionEvent.ACTION_HOVER_ENTER
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_ENTER,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = true)),
|
||||
expectedInteractionEvent = InteractionEvent.DOWN,
|
||||
expectedPointerOnSensorId = POINTER_ID_1,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_ENTER,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = false)),
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_ENTER,
|
||||
previousPointerOnSensorId = POINTER_ID_1,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = false)),
|
||||
expectedInteractionEvent = InteractionEvent.UP,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
// MotionEvent.ACTION_MOVE
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_MOVE,
|
||||
@@ -161,6 +183,35 @@ class SinglePointerTouchProcessorTest(val testCase: TestCase) : SysuiTestCase()
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = POINTER_ID_2,
|
||||
),
|
||||
// MotionEvent.ACTION_HOVER_MOVE
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_MOVE,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = true)),
|
||||
expectedInteractionEvent = InteractionEvent.DOWN,
|
||||
expectedPointerOnSensorId = POINTER_ID_1,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_MOVE,
|
||||
previousPointerOnSensorId = POINTER_ID_1,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = true)),
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = POINTER_ID_1,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_MOVE,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = false)),
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_MOVE,
|
||||
previousPointerOnSensorId = POINTER_ID_1,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = false)),
|
||||
expectedInteractionEvent = InteractionEvent.UP,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
// MotionEvent.ACTION_UP
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_UP,
|
||||
@@ -183,6 +234,28 @@ class SinglePointerTouchProcessorTest(val testCase: TestCase) : SysuiTestCase()
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
// MotionEvent.ACTION_HOVER_EXIT
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_EXIT,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = true)),
|
||||
expectedInteractionEvent = InteractionEvent.UP,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_EXIT,
|
||||
previousPointerOnSensorId = POINTER_ID_1,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = true)),
|
||||
expectedInteractionEvent = InteractionEvent.UP,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_HOVER_EXIT,
|
||||
previousPointerOnSensorId = INVALID_POINTER_ID,
|
||||
currentPointers = listOf(TestPointer(id = POINTER_ID_1, onSensor = false)),
|
||||
expectedInteractionEvent = InteractionEvent.UNCHANGED,
|
||||
expectedPointerOnSensorId = INVALID_POINTER_ID,
|
||||
),
|
||||
// MotionEvent.ACTION_CANCEL
|
||||
genPositiveTestCases(
|
||||
motionEventAction = MotionEvent.ACTION_CANCEL,
|
||||
@@ -315,13 +388,7 @@ class SinglePointerTouchProcessorTest(val testCase: TestCase) : SysuiTestCase()
|
||||
expectedPointerOnSensorId = POINTER_ID_2
|
||||
)
|
||||
)
|
||||
.flatten() +
|
||||
listOf(
|
||||
genTestCasesForUnsupportedAction(MotionEvent.ACTION_HOVER_ENTER),
|
||||
genTestCasesForUnsupportedAction(MotionEvent.ACTION_HOVER_MOVE),
|
||||
genTestCasesForUnsupportedAction(MotionEvent.ACTION_HOVER_EXIT)
|
||||
)
|
||||
.flatten()
|
||||
.flatten()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user