summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Pietal <mpietal@google.com> 2023-06-02 16:46:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-06-02 16:46:12 +0000
commit811aeb73933a70fee83122e8a03e116bcc338077 (patch)
tree0a625d3545db78802f19b983aa7f9b980928e739
parent2043d64d1ab1765154bc4ebad1b0802e56e3d24f (diff)
parent51341e5c27152ffbab647a7a79ec8f0037e7340e (diff)
Merge "Fix lockscreen anim not running on unlock with FPS" into udc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt42
3 files changed, 53 insertions, 6 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
index 57c7b09759a5..68e72c58972b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt
@@ -51,6 +51,7 @@ import com.android.systemui.shared.system.smartspace.SmartspaceState
import com.android.systemui.statusbar.NotificationShadeWindowController
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.phone.BiometricUnlockController
+import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_FROM_DREAM
import com.android.systemui.statusbar.policy.KeyguardStateController
import dagger.Lazy
import javax.inject.Inject
@@ -173,7 +174,7 @@ class KeyguardUnlockAnimationController @Inject constructor(
@JvmDefault
fun onUnlockAnimationStarted(
playingCannedAnimation: Boolean,
- fromWakeAndUnlock: Boolean,
+ isWakeAndUnlockNotFromDream: Boolean,
unlockAnimationStartDelay: Long,
unlockAnimationDuration: Long
) {}
@@ -590,10 +591,13 @@ class KeyguardUnlockAnimationController @Inject constructor(
playCannedUnlockAnimation()
}
+ // Notify if waking from AOD only
+ val isWakeAndUnlockNotFromDream = biometricUnlockControllerLazy.get().isWakeAndUnlock &&
+ biometricUnlockControllerLazy.get().mode != MODE_WAKE_AND_UNLOCK_FROM_DREAM
listeners.forEach {
it.onUnlockAnimationStarted(
playingCannedUnlockAnimation /* playingCannedAnimation */,
- biometricUnlockControllerLazy.get().isWakeAndUnlock /* isWakeAndUnlock */,
+ isWakeAndUnlockNotFromDream /* isWakeAndUnlockNotFromDream */,
CANNED_UNLOCK_START_DELAY /* unlockStartDelay */,
LAUNCHER_ICONS_ANIMATION_DURATION_MS /* unlockAnimationDuration */) }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index b2e7d8c58e49..17a887019541 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -935,10 +935,11 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
@Override
public void onUnlockAnimationStarted(
boolean playingCannedAnimation,
- boolean isWakeAndUnlock,
+ boolean isWakeAndUnlockNotFromDream,
long startDelay,
long unlockAnimationDuration) {
- unlockAnimationStarted(playingCannedAnimation, isWakeAndUnlock, startDelay);
+ unlockAnimationStarted(playingCannedAnimation, isWakeAndUnlockNotFromDream,
+ startDelay);
}
});
mAlternateBouncerInteractor = alternateBouncerInteractor;
@@ -953,7 +954,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private void unlockAnimationStarted(
boolean playingCannedAnimation,
- boolean isWakeAndUnlock,
+ boolean isWakeAndUnlockNotFromDream,
long unlockAnimationStartDelay) {
// Disable blurs while we're unlocking so that panel expansion does not
// cause blurring. This will eventually be re-enabled by the panel view on
@@ -961,7 +962,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
// unlock gesture, and we don't want that to cause blurring either.
mDepthController.setBlursDisabledForUnlock(mTracking);
- if (playingCannedAnimation && !isWakeAndUnlock) {
+ if (playingCannedAnimation && !isWakeAndUnlockNotFromDream) {
// Hide the panel so it's not in the way or the surface behind the
// keyguard, which will be appearing. If we're wake and unlocking, the
// lock screen is hidden instantly so should not be flung away.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
index 001f81af5c2b..22308414547a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardUnlockAnimationControllerTest.kt
@@ -22,6 +22,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController
import com.android.systemui.statusbar.SysuiStatusBarStateController
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.policy.KeyguardStateController
+import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.argThat
import com.android.systemui.util.mockito.whenever
import junit.framework.Assert.assertEquals
@@ -33,6 +34,7 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.atLeastOnce
+import org.mockito.Mockito.eq
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.times
@@ -177,6 +179,46 @@ class KeyguardUnlockAnimationControllerTest : SysuiTestCase() {
false /* cancelled */)
}
+ @Test
+ fun onWakeAndUnlock_notifiesListenerWithTrue() {
+ whenever(biometricUnlockController.isWakeAndUnlock).thenReturn(true)
+ whenever(biometricUnlockController.mode).thenReturn(
+ BiometricUnlockController.MODE_WAKE_AND_UNLOCK)
+
+ val listener = mock(
+ KeyguardUnlockAnimationController.KeyguardUnlockAnimationListener::class.java)
+ keyguardUnlockAnimationController.addKeyguardUnlockAnimationListener(listener)
+
+ keyguardUnlockAnimationController.notifyStartSurfaceBehindRemoteAnimation(
+ remoteAnimationTargets,
+ wallpaperTargets,
+ 0 /* startTime */,
+ false /* requestedShowSurfaceBehindKeyguard */
+ )
+
+ verify(listener).onUnlockAnimationStarted(any(), eq(true), any(), any())
+ }
+
+ @Test
+ fun onWakeAndUnlockFromDream_notifiesListenerWithFalse() {
+ whenever(biometricUnlockController.isWakeAndUnlock).thenReturn(true)
+ whenever(biometricUnlockController.mode).thenReturn(
+ BiometricUnlockController.MODE_WAKE_AND_UNLOCK_FROM_DREAM)
+
+ val listener = mock(
+ KeyguardUnlockAnimationController.KeyguardUnlockAnimationListener::class.java)
+ keyguardUnlockAnimationController.addKeyguardUnlockAnimationListener(listener)
+
+ keyguardUnlockAnimationController.notifyStartSurfaceBehindRemoteAnimation(
+ remoteAnimationTargets,
+ wallpaperTargets,
+ 0 /* startTime */,
+ false /* requestedShowSurfaceBehindKeyguard */
+ )
+
+ verify(listener).onUnlockAnimationStarted(any(), eq(false), any(), any())
+ }
+
/**
* If we requested that the surface behind be made visible, and we're not flinging away the
* keyguard, it means that we're swiping to unlock and want the surface visible so it can follow