Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e806614 authored by Michał Brzeziński's avatar Michał Brzeziński Committed by Android (Google) Code Review
Browse files

Merge changes Ia49455ed,Ib0b8d038 into main

* changes:
  Simplifying TouchpadGestureMonitor interface
  Refactoring recent app gesture recognition logic
parents cd1fa934 42222465
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.InProgress
import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.NotStarted
import com.android.systemui.touchpad.tutorial.ui.gesture.MultiFingerGesture.Companion.SWIPE_DISTANCE
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

@@ -34,10 +35,12 @@ class BackGestureMonitorTest : SysuiTestCase() {

    private var gestureState: GestureState = NotStarted
    private val gestureMonitor =
        BackGestureMonitor(
            gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(),
            gestureStateChangedCallback = { gestureState = it },
        )
        BackGestureMonitor(gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt())

    @Before
    fun before() {
        gestureMonitor.addGestureStateCallback { gestureState = it }
    }

    @Test
    fun triggersGestureFinishedForThreeFingerGestureRight() {
@@ -82,7 +85,7 @@ class BackGestureMonitorTest : SysuiTestCase() {
    }

    private fun assertStateAfterEvents(events: List<MotionEvent>, expectedState: GestureState) {
        events.forEach { gestureMonitor.processTouchpadEvent(it) }
        events.forEach { gestureMonitor.accept(it) }
        assertThat(gestureState).isEqualTo(expectedState)
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -36,10 +36,7 @@ class EasterEggGestureTest : SysuiTestCase() {
    private var triggered = false
    private val handler =
        TouchpadGestureHandler(
            BackGestureMonitor(
                gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(),
                gestureStateChangedCallback = {},
            ),
            BackGestureMonitor(gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt()),
            EasterEggGestureMonitor(callback = { triggered = true }),
        )

+8 −5
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.InProgress
import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.NotStarted
import com.android.systemui.touchpad.tutorial.ui.gesture.MultiFingerGesture.Companion.SWIPE_DISTANCE
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

@@ -34,10 +35,12 @@ class HomeGestureMonitorTest : SysuiTestCase() {

    private var gestureState: GestureState = GestureState.NotStarted
    private val gestureMonitor =
        HomeGestureMonitor(
            gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(),
            gestureStateChangedCallback = { gestureState = it },
        )
        HomeGestureMonitor(gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt())

    @Before
    fun before() {
        gestureMonitor.addGestureStateCallback { gestureState = it }
    }

    @Test
    fun triggersGestureFinishedForThreeFingerGestureUp() {
@@ -78,7 +81,7 @@ class HomeGestureMonitorTest : SysuiTestCase() {
    }

    private fun assertStateAfterEvents(events: List<MotionEvent>, expectedState: GestureState) {
        events.forEach { gestureMonitor.processTouchpadEvent(it) }
        events.forEach { gestureMonitor.accept(it) }
        assertThat(gestureState).isEqualTo(expectedState)
    }
}
+10 −5
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.InProgress
import com.android.systemui.touchpad.tutorial.ui.gesture.GestureState.NotStarted
import com.android.systemui.touchpad.tutorial.ui.gesture.MultiFingerGesture.Companion.SWIPE_DISTANCE
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.doReturn
@@ -44,7 +45,7 @@ class RecentAppsGestureMonitorTest : SysuiTestCase() {
    }

    private var gestureState: GestureState = GestureState.NotStarted
    private val velocityTracker =
    private val velocityTracker1D =
        mock<VelocityTracker1D> {
            // by default return correct speed for the gesture - as if pointer is slowing down
            on { calculateVelocity() } doReturn SLOW
@@ -52,11 +53,15 @@ class RecentAppsGestureMonitorTest : SysuiTestCase() {
    private val gestureMonitor =
        RecentAppsGestureMonitor(
            gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(),
            gestureStateChangedCallback = { gestureState = it },
            velocityThresholdPxPerMs = THRESHOLD_VELOCITY_PX_PER_MS,
            velocityTracker = velocityTracker,
            velocityTracker = VerticalVelocityTracker(velocityTracker1D),
        )

    @Before
    fun before() {
        gestureMonitor.addGestureStateCallback { gestureState = it }
    }

    @Test
    fun triggersGestureFinishedForThreeFingerGestureUp() {
        assertStateAfterEvents(events = ThreeFingerGesture.swipeUp(), expectedState = Finished)
@@ -64,7 +69,7 @@ class RecentAppsGestureMonitorTest : SysuiTestCase() {

    @Test
    fun doesntTriggerGestureFinished_onGestureSpeedTooHigh() {
        whenever(velocityTracker.calculateVelocity()).thenReturn(FAST)
        whenever(velocityTracker1D.calculateVelocity()).thenReturn(FAST)
        assertStateAfterEvents(events = ThreeFingerGesture.swipeUp(), expectedState = NotStarted)
    }

@@ -102,7 +107,7 @@ class RecentAppsGestureMonitorTest : SysuiTestCase() {
    }

    private fun assertStateAfterEvents(events: List<MotionEvent>, expectedState: GestureState) {
        events.forEach { gestureMonitor.processTouchpadEvent(it) }
        events.forEach { gestureMonitor.accept(it) }
        assertThat(gestureState).isEqualTo(expectedState)
    }
}
+9 −8
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.touchpad.tutorial.ui.gesture.MultiFingerGesture.Companion.SWIPE_DISTANCE
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith

@@ -35,14 +36,14 @@ import org.junit.runner.RunWith
class TouchpadGestureHandlerTest : SysuiTestCase() {

    private var gestureState: GestureState = GestureState.NotStarted
    private val handler =
        TouchpadGestureHandler(
            BackGestureMonitor(
                gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt(),
                gestureStateChangedCallback = { gestureState = it },
            ),
            EasterEggGestureMonitor {},
        )
    private val gestureMonitor =
        BackGestureMonitor(gestureDistanceThresholdPx = SWIPE_DISTANCE.toInt())
    private val handler = TouchpadGestureHandler(gestureMonitor, EasterEggGestureMonitor {})

    @Before
    fun before() {
        gestureMonitor.addGestureStateCallback { gestureState = it }
    }

    @Test
    fun handlesEventsFromTouchpad() {
Loading