diff options
| author | 2022-08-01 23:49:11 +0800 | |
|---|---|---|
| committer | 2022-08-01 17:46:25 +0000 | |
| commit | 5f84f0e106a81deb520b554b50e8b276b5dec075 (patch) | |
| tree | bd138293b2f3c1870199553499e48c4fa3efd727 | |
| parent | 7c85779ae9d2e26e8d87e5533c4e77308bd73f61 (diff) | |
Fix redundant move animation on Side-FPS indicator
There was a redundant move transition when showing
Side-FPS indicator overlayView on bouncer.
Set PRIVATE_FLAG_NO_MOVE_ANIMATION in Window LayoutParams
when adding overlayView to WindowManager to avoid move
transition.
Test: atest SidefpsControllerTest
Test: manual enable keyguard bouncer and check SFPS indicator
Fixes: 238354906
Bug: 226610828
Change-Id: Ic43ee09c39c0ffb33ea44f3b4baede9a21d4a347
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt | 4 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt | 40 |
2 files changed, 43 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt index bbffb73b7503..d03106b4e6bc 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt @@ -43,6 +43,8 @@ import android.view.View.AccessibilityDelegate import android.view.ViewPropertyAnimator import android.view.WindowInsets import android.view.WindowManager +import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION +import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY import android.view.accessibility.AccessibilityEvent import androidx.annotation.RawRes import com.airbnb.lottie.LottieAnimationView @@ -130,7 +132,7 @@ class SidefpsController @Inject constructor( fitInsetsTypes = 0 // overrides default, avoiding status bars during layout gravity = Gravity.TOP or Gravity.LEFT layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS - privateFlags = WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY + privateFlags = PRIVATE_FLAG_TRUSTED_OVERLAY or PRIVATE_FLAG_NO_MOVE_ANIMATION } init { diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt index 6157ccbd597a..8d969d0f1045 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt @@ -45,6 +45,8 @@ import android.view.View import android.view.ViewPropertyAnimator import android.view.WindowInsets import android.view.WindowManager +import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION +import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY import android.view.WindowMetrics import androidx.test.filters.SmallTest import com.airbnb.lottie.LottieAnimationView @@ -438,6 +440,44 @@ class SidefpsControllerTest : SysuiTestCase() { assertThat(fingerprintManager.hasSideFpsSensor()).isFalse() } + + @Test + fun testLayoutParams_hasNoMoveAnimationWindowFlag() = testWithDisplay( + deviceConfig = DeviceConfig.Y_ALIGNED_UNFOLDED + ) { + sideFpsController.overlayOffsets = sensorLocation + sideFpsController.updateOverlayParams( + windowManager.defaultDisplay, + indicatorBounds + ) + overlayController.show(SENSOR_ID, REASON_UNKNOWN) + executor.runAllReady() + + verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture()) + + val lpFlags = overlayViewParamsCaptor.value.privateFlags + + assertThat((lpFlags and PRIVATE_FLAG_NO_MOVE_ANIMATION) != 0).isTrue() + } + + @Test + fun testLayoutParams_hasTrustedOverlayWindowFlag() = testWithDisplay( + deviceConfig = DeviceConfig.Y_ALIGNED_UNFOLDED + ) { + sideFpsController.overlayOffsets = sensorLocation + sideFpsController.updateOverlayParams( + windowManager.defaultDisplay, + indicatorBounds + ) + overlayController.show(SENSOR_ID, REASON_UNKNOWN) + executor.runAllReady() + + verify(windowManager).updateViewLayout(any(), overlayViewParamsCaptor.capture()) + + val lpFlags = overlayViewParamsCaptor.value.privateFlags + + assertThat((lpFlags and PRIVATE_FLAG_TRUSTED_OVERLAY) != 0).isTrue() + } } private fun insetsForSmallNavbar() = insetsWithBottom(60) |