Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt +8 −33 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.graphics.Paint import android.graphics.Point import android.os.Handler import android.os.SystemClock import android.os.VibrationEffect import android.util.Log import android.util.MathUtils import android.view.Gravity Loading @@ -37,8 +36,6 @@ import androidx.core.view.isVisible import androidx.dynamicanimation.animation.DynamicAnimation import com.android.internal.util.LatencyTracker import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController Loading Loading @@ -78,12 +75,6 @@ private const val POP_ON_ENTRY_TO_ACTIVE_VELOCITY = 4.5f private const val POP_ON_INACTIVE_TO_ACTIVE_VELOCITY = 4.7f private const val POP_ON_INACTIVE_VELOCITY = -1.5f internal val VIBRATE_ACTIVATED_EFFECT = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK) internal val VIBRATE_DEACTIVATED_EFFECT = VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK) private const val DEBUG = false class BackPanelController Loading @@ -95,7 +86,6 @@ internal constructor( private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val featureFlags: FeatureFlags ) : ViewController<BackPanel>(BackPanel(context, latencyTracker)), NavigationEdgeBackPlugin { /** Loading @@ -113,7 +103,6 @@ internal constructor( private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val featureFlags: FeatureFlags ) { /** Construct a [BackPanelController]. */ fun create(context: Context): BackPanelController { Loading @@ -126,7 +115,6 @@ internal constructor( vibratorHelper, configurationController, latencyTracker, featureFlags ) backPanelController.init() return backPanelController Loading Loading @@ -992,35 +980,22 @@ internal constructor( val springForceOnCancelled = params.cancelledIndicator.arrowDimens.alphaSpring?.get(0f)?.value mView.popArrowAlpha(0f, springForceOnCancelled) if (!featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) mainHandler.postDelayed(10L) { vibratorHelper.cancel() } } } } private fun performDeactivatedHapticFeedback() { if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) { vibratorHelper.performHapticFeedback( mView, HapticFeedbackConstants.GESTURE_THRESHOLD_DEACTIVATE ) } else { vibratorHelper.vibrate(VIBRATE_DEACTIVATED_EFFECT) } } private fun performActivatedHapticFeedback() { if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) { vibratorHelper.performHapticFeedback( mView, HapticFeedbackConstants.GESTURE_THRESHOLD_ACTIVATE ) } else { vibratorHelper.cancel() mainHandler.postDelayed(10L) { vibratorHelper.vibrate(VIBRATE_ACTIVATED_EFFECT) } } } private fun convertVelocityToAnimationFactor( Loading packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt +0 −63 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ import android.view.WindowManager import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController Loading Loading @@ -63,7 +61,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Mock private lateinit var latencyTracker: LatencyTracker @Mock private lateinit var layoutParams: WindowManager.LayoutParams @Mock private lateinit var backCallback: NavigationEdgeBackPlugin.BackCallback private val featureFlags = FakeFeatureFlags() @Before fun setup() { Loading @@ -77,7 +74,6 @@ class BackPanelControllerTest : SysuiTestCase() { vibratorHelper, configurationController, latencyTracker, featureFlags ) mBackPanelController.setLayoutParams(layoutParams) mBackPanelController.setBackCallback(backCallback) Loading Loading @@ -106,32 +102,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Test fun handlesBackCommitted() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) // Move again to cross the back trigger threshold continueTouch(START_X + touchSlop + triggerThreshold + 1) // Wait threshold duration and hold touch past trigger threshold Thread.sleep((MAX_DURATION_ENTRY_BEFORE_ACTIVE_ANIMATION + 1).toLong()) continueTouch(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.ACTIVE) verify(backCallback).setTriggerBack(true) testableLooper.moveTimeForward(100) testableLooper.processAllMessages() verify(vibratorHelper).vibrate(VIBRATE_ACTIVATED_EFFECT) finishTouchActionUp(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.COMMITTED) verify(backCallback).triggerBack() } @Test fun handlesBackCommitted_withOneWayHapticsAPI() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, true) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) Loading @@ -148,7 +118,6 @@ class BackPanelControllerTest : SysuiTestCase() { testableLooper.processAllMessages() verify(vibratorHelper) .performHapticFeedback(any(), eq(HapticFeedbackConstants.GESTURE_THRESHOLD_ACTIVATE)) finishTouchActionUp(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.COMMITTED) Loading @@ -157,38 +126,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Test fun handlesBackCancelled() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) // Move again to cross the back trigger threshold continueTouch( START_X + touchSlop + triggerThreshold - mBackPanelController.params.deactivationTriggerThreshold ) // Wait threshold duration and hold touch before trigger threshold Thread.sleep((MAX_DURATION_ENTRY_BEFORE_ACTIVE_ANIMATION + 1).toLong()) continueTouch( START_X + touchSlop + triggerThreshold - mBackPanelController.params.deactivationTriggerThreshold ) clearInvocations(backCallback) Thread.sleep(MIN_DURATION_ACTIVE_BEFORE_INACTIVE_ANIMATION) // Move in the opposite direction to cross the deactivation threshold and cancel back continueTouch(START_X) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.INACTIVE) verify(backCallback).setTriggerBack(false) verify(vibratorHelper).vibrate(VIBRATE_DEACTIVATED_EFFECT) finishTouchActionUp(START_X) verify(backCallback).cancelBack() } @Test fun handlesBackCancelled_withOneWayHapticsAPI() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, true) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) Loading Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt +8 −33 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.graphics.Paint import android.graphics.Point import android.os.Handler import android.os.SystemClock import android.os.VibrationEffect import android.util.Log import android.util.MathUtils import android.view.Gravity Loading @@ -37,8 +36,6 @@ import androidx.core.view.isVisible import androidx.dynamicanimation.animation.DynamicAnimation import com.android.internal.util.LatencyTracker import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController Loading Loading @@ -78,12 +75,6 @@ private const val POP_ON_ENTRY_TO_ACTIVE_VELOCITY = 4.5f private const val POP_ON_INACTIVE_TO_ACTIVE_VELOCITY = 4.7f private const val POP_ON_INACTIVE_VELOCITY = -1.5f internal val VIBRATE_ACTIVATED_EFFECT = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK) internal val VIBRATE_DEACTIVATED_EFFECT = VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK) private const val DEBUG = false class BackPanelController Loading @@ -95,7 +86,6 @@ internal constructor( private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val featureFlags: FeatureFlags ) : ViewController<BackPanel>(BackPanel(context, latencyTracker)), NavigationEdgeBackPlugin { /** Loading @@ -113,7 +103,6 @@ internal constructor( private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val featureFlags: FeatureFlags ) { /** Construct a [BackPanelController]. */ fun create(context: Context): BackPanelController { Loading @@ -126,7 +115,6 @@ internal constructor( vibratorHelper, configurationController, latencyTracker, featureFlags ) backPanelController.init() return backPanelController Loading Loading @@ -992,35 +980,22 @@ internal constructor( val springForceOnCancelled = params.cancelledIndicator.arrowDimens.alphaSpring?.get(0f)?.value mView.popArrowAlpha(0f, springForceOnCancelled) if (!featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) mainHandler.postDelayed(10L) { vibratorHelper.cancel() } } } } private fun performDeactivatedHapticFeedback() { if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) { vibratorHelper.performHapticFeedback( mView, HapticFeedbackConstants.GESTURE_THRESHOLD_DEACTIVATE ) } else { vibratorHelper.vibrate(VIBRATE_DEACTIVATED_EFFECT) } } private fun performActivatedHapticFeedback() { if (featureFlags.isEnabled(ONE_WAY_HAPTICS_API_MIGRATION)) { vibratorHelper.performHapticFeedback( mView, HapticFeedbackConstants.GESTURE_THRESHOLD_ACTIVATE ) } else { vibratorHelper.cancel() mainHandler.postDelayed(10L) { vibratorHelper.vibrate(VIBRATE_ACTIVATED_EFFECT) } } } private fun convertVelocityToAnimationFactor( Loading
packages/SystemUI/tests/src/com/android/systemui/navigationbar/gestural/BackPanelControllerTest.kt +0 −63 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ import android.view.WindowManager import androidx.test.filters.SmallTest import com.android.internal.util.LatencyTracker import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags.ONE_WAY_HAPTICS_API_MIGRATION import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController Loading Loading @@ -63,7 +61,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Mock private lateinit var latencyTracker: LatencyTracker @Mock private lateinit var layoutParams: WindowManager.LayoutParams @Mock private lateinit var backCallback: NavigationEdgeBackPlugin.BackCallback private val featureFlags = FakeFeatureFlags() @Before fun setup() { Loading @@ -77,7 +74,6 @@ class BackPanelControllerTest : SysuiTestCase() { vibratorHelper, configurationController, latencyTracker, featureFlags ) mBackPanelController.setLayoutParams(layoutParams) mBackPanelController.setBackCallback(backCallback) Loading Loading @@ -106,32 +102,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Test fun handlesBackCommitted() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) // Move again to cross the back trigger threshold continueTouch(START_X + touchSlop + triggerThreshold + 1) // Wait threshold duration and hold touch past trigger threshold Thread.sleep((MAX_DURATION_ENTRY_BEFORE_ACTIVE_ANIMATION + 1).toLong()) continueTouch(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.ACTIVE) verify(backCallback).setTriggerBack(true) testableLooper.moveTimeForward(100) testableLooper.processAllMessages() verify(vibratorHelper).vibrate(VIBRATE_ACTIVATED_EFFECT) finishTouchActionUp(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.COMMITTED) verify(backCallback).triggerBack() } @Test fun handlesBackCommitted_withOneWayHapticsAPI() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, true) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) Loading @@ -148,7 +118,6 @@ class BackPanelControllerTest : SysuiTestCase() { testableLooper.processAllMessages() verify(vibratorHelper) .performHapticFeedback(any(), eq(HapticFeedbackConstants.GESTURE_THRESHOLD_ACTIVATE)) finishTouchActionUp(START_X + touchSlop + triggerThreshold + 1) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.COMMITTED) Loading @@ -157,38 +126,6 @@ class BackPanelControllerTest : SysuiTestCase() { @Test fun handlesBackCancelled() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, false) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) // Move again to cross the back trigger threshold continueTouch( START_X + touchSlop + triggerThreshold - mBackPanelController.params.deactivationTriggerThreshold ) // Wait threshold duration and hold touch before trigger threshold Thread.sleep((MAX_DURATION_ENTRY_BEFORE_ACTIVE_ANIMATION + 1).toLong()) continueTouch( START_X + touchSlop + triggerThreshold - mBackPanelController.params.deactivationTriggerThreshold ) clearInvocations(backCallback) Thread.sleep(MIN_DURATION_ACTIVE_BEFORE_INACTIVE_ANIMATION) // Move in the opposite direction to cross the deactivation threshold and cancel back continueTouch(START_X) assertThat(mBackPanelController.currentState) .isEqualTo(BackPanelController.GestureState.INACTIVE) verify(backCallback).setTriggerBack(false) verify(vibratorHelper).vibrate(VIBRATE_DEACTIVATED_EFFECT) finishTouchActionUp(START_X) verify(backCallback).cancelBack() } @Test fun handlesBackCancelled_withOneWayHapticsAPI() { featureFlags.set(ONE_WAY_HAPTICS_API_MIGRATION, true) startTouch() // Move once to cross the touch slop continueTouch(START_X + touchSlop.toFloat() + 1) Loading