diff options
| author | 2022-03-04 17:36:54 +0000 | |
|---|---|---|
| committer | 2022-03-23 20:37:40 +0000 | |
| commit | df83af614fa159a7df519afcf8fac757d3852b07 (patch) | |
| tree | cefb2fc02b41f8fcd4ea4467a150bc85df8cae6d | |
| parent | c3cf521667ada2ad2f645155171fe79e63467047 (diff) | |
Cancel touches on the unlocked animation
On the lock screen, users are able to drag
their finger to the UDFPS location which can leave
the panel expansion in a transition state while
the device is being transioned to the home screen.
therefore, we need to:
* on unlock, instantCollapse notification panel if it's already in the
middle of being flung away so there aren't overriding animators.
* don't expand the bouncer if the device is unlocking
* cancel launch transition end runnables on going to sleep
in case the user presses the power button quickly after
unlocking, before the launch transition end runnable gets
to run. We don't end up in a bad state where we hide the
keyguard (due to the launchTransitionEndRunnable) when we
actually wanted to show it
* don't update the UNLOCKED scrim when the device is
updating the panel expansion during the unlock animation
Fixes: 222324260
Test: atest SystemUITests
Test: manually authenticate UDFPS from dragging finger
from diagonally above/right of UDFPS (and from below)
Change-Id: I8f0b50c01544c3cf206bb764b2c5e5554dcd256d
11 files changed, 139 insertions, 25 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 3e6f94c67e21..32d37d18f407 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -5026,6 +5026,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable .append(" qsExpandFraction=").append(mQsExpansionFraction) .append(" isCurrentUserSetup=").append(mIsCurrentUserSetup) .append(" hideAmount=").append(mAmbientState.getHideAmount()) + .append(" ambientStateSwipingUp=").append(mAmbientState.isSwipingUp()) .append("]"); pw.println(sb.toString()); DumpUtilsKt.withIncreasedIndent(pw, () -> { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java index c2c8bd3fad5e..1932680de2fa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java @@ -641,6 +641,7 @@ public class CentralSurfaces extends CoreStartable implements private boolean mWallpaperSupported; private Runnable mLaunchTransitionEndRunnable; + private Runnable mLaunchTransitionCancelRunnable; private boolean mLaunchCameraWhenFinishedWaking; private boolean mLaunchCameraOnFinishedGoingToSleep; private boolean mLaunchEmergencyActionWhenFinishedWaking; @@ -2967,12 +2968,15 @@ public class CentralSurfaces extends CoreStartable implements * * @param beforeFading the runnable to be run when the circle is fully expanded and the fading * starts - * @param endRunnable the runnable to be run when the transition is done + * @param endRunnable the runnable to be run when the transition is done. Will not run + * if the transition is cancelled, instead cancelRunnable will run + * @param cancelRunnable the runnable to be run if the transition is cancelled */ public void fadeKeyguardAfterLaunchTransition(final Runnable beforeFading, - Runnable endRunnable) { + Runnable endRunnable, Runnable cancelRunnable) { mMessageRouter.cancelMessages(MSG_LAUNCH_TRANSITION_TIMEOUT); mLaunchTransitionEndRunnable = endRunnable; + mLaunchTransitionCancelRunnable = cancelRunnable; Runnable hideRunnable = () -> { mKeyguardStateController.setLaunchTransitionFadingAway(true); if (beforeFading != null) { @@ -2994,6 +2998,15 @@ public class CentralSurfaces extends CoreStartable implements } } + private void cancelAfterLaunchTransitionRunnables() { + if (mLaunchTransitionCancelRunnable != null) { + mLaunchTransitionCancelRunnable.run(); + } + mLaunchTransitionEndRunnable = null; + mLaunchTransitionCancelRunnable = null; + mNotificationPanelViewController.setLaunchTransitionEndRunnable(null); + } + /** * Fades the content of the Keyguard while we are dozing and makes it invisible when finished * fading. @@ -3033,6 +3046,7 @@ public class CentralSurfaces extends CoreStartable implements } private void runLaunchTransitionEndRunnable() { + mLaunchTransitionCancelRunnable = null; if (mLaunchTransitionEndRunnable != null) { Runnable r = mLaunchTransitionEndRunnable; @@ -3524,6 +3538,10 @@ public class CentralSurfaces extends CoreStartable implements public void onStartedGoingToSleep() { String tag = "CentralSurfaces#onStartedGoingToSleep"; DejankUtils.startDetectingBlockingIpcs(tag); + + // cancel stale runnables that could put the device in the wrong state + cancelAfterLaunchTransitionRunnables(); + updateRevealEffect(false /* wakingUp */); updateNotificationPanelTouchState(); maybeEscalateHeadsUp(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index ebdd257a9fc5..7882fffe6b4c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -894,10 +894,17 @@ public class NotificationPanelViewController extends PanelViewController { mDepthController.setBlursDisabledForUnlock(mTracking); if (playingCannedAnimation && !isWakeAndUnlock) { - // Fling the panel away so it's not in the way or the surface behind the + // 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. - fling(0f, false, 0.7f, false); + if (isTracking() || isFlinging()) { + // Instant collpase the notification panel since the notification + // panel is already in the middle animating + onTrackingStopped(false); + instantCollapse(); + } else { + fling(0f, false, 0.7f, false); + } } } }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java index 101c86f6dac1..787c4c0324d6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java @@ -36,12 +36,14 @@ import com.android.keyguard.LockIconViewController; import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dock.DockManager; +import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.lowlightclock.LowLightClockController; import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SysuiStatusBarStateController; +import com.android.systemui.statusbar.notification.stack.AmbientState; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent; @@ -71,6 +73,8 @@ public class NotificationShadeWindowViewController { private final LockIconViewController mLockIconViewController; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final StatusBarWindowStateController mStatusBarWindowStateController; + private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + private final AmbientState mAmbientState; private GestureDetector mGestureDetector; private View mBrightnessMirror; @@ -109,7 +113,9 @@ public class NotificationShadeWindowViewController { LockIconViewController lockIconViewController, Optional<LowLightClockController> lowLightClockController, CentralSurfaces centralSurfaces, - NotificationShadeWindowController controller) { + NotificationShadeWindowController controller, + KeyguardUnlockAnimationController keyguardUnlockAnimationController, + AmbientState ambientState) { mLockscreenShadeTransitionController = transitionController; mFalsingCollector = falsingCollector; mTunerService = tunerService; @@ -126,6 +132,8 @@ public class NotificationShadeWindowViewController { mLowLightClockController = lowLightClockController; mService = centralSurfaces; mNotificationShadeWindowController = controller; + mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; + mAmbientState = ambientState; // This view is not part of the newly inflated expanded status bar. mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container); @@ -203,7 +211,6 @@ public class NotificationShadeWindowViewController { // Reset manual touch dispatch state here but make sure the UP/CANCEL event still // gets // delivered. - if (!isCancel && mService.shouldIgnoreTouch()) { return false; } @@ -219,6 +226,16 @@ public class NotificationShadeWindowViewController { return false; } + if (mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()) { + // If the user was sliding their finger across the lock screen, + // we may have been intercepting the touch and forwarding it to the + // UDFPS affordance via mStatusBarKeyguardViewManager.onTouch (see below). + // If this touch ended up unlocking the device, we want to cancel the touch + // immediately, so we don't cause swipe or expand animations afterwards. + cancelCurrentTouch(); + return true; + } + mFalsingCollector.onTouchEvent(ev); mGestureDetector.onTouchEvent(ev); mStatusBarKeyguardViewManager.onTouch(ev); @@ -430,6 +447,7 @@ public class NotificationShadeWindowViewController { event.recycle(); mTouchCancelled = true; } + mAmbientState.setSwipingUp(false); } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java index 78edc07c8544..9398fcd3fabc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java @@ -865,6 +865,10 @@ public abstract class PanelViewController { return mClosing || mIsLaunchAnimationRunning; } + public boolean isFlinging() { + return mIsFlinging; + } + public boolean isTracking() { return mTracking; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 029a7a5fcdd5..7a69dad92bfb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -52,6 +52,7 @@ import com.android.systemui.animation.ShadeInterpolation; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; +import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.scrim.ScrimView; import com.android.systemui.statusbar.notification.stack.ViewState; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; @@ -195,6 +196,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump private final Handler mHandler; private final Executor mMainExecutor; private final ScreenOffAnimationController mScreenOffAnimationController; + private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; private GradientColors mColors; private boolean mNeedsDrawableColorUpdate; @@ -211,6 +213,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump private float mPanelExpansionFraction = 1f; // Assume shade is expanded during initialization private float mQsExpansion; private boolean mQsBottomVisible; + private boolean mAnimatingPanelExpansionOnUnlock; // don't animate scrim private boolean mDarkenWhileDragging; private boolean mExpansionAffectsAlpha = true; @@ -255,7 +258,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager, ConfigurationController configurationController, @Main Executor mainExecutor, ScreenOffAnimationController screenOffAnimationController, - PanelExpansionStateManager panelExpansionStateManager) { + PanelExpansionStateManager panelExpansionStateManager, + KeyguardUnlockAnimationController keyguardUnlockAnimationController) { mScrimStateListener = lightBarController::setScrimState; mDefaultScrimAlpha = BUSY_SCRIM_ALPHA; @@ -273,6 +277,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump // to make sure that text on top of it is legible. mDozeParameters = dozeParameters; mDockManager = dockManager; + mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; keyguardStateController.addCallback(new KeyguardStateController.Callback() { @Override public void onKeyguardFadingAwayChanged() { @@ -497,6 +502,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump public void onTrackingStarted() { mTracking = true; mDarkenWhileDragging = !mKeyguardStateController.canDismissLockScreen(); + if (!mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()) { + mAnimatingPanelExpansionOnUnlock = false; + } } public void onExpandingFinished() { @@ -567,13 +575,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump } if (mPanelExpansionFraction != panelExpansionFraction) { + if (panelExpansionFraction != 0f + && mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()) { + mAnimatingPanelExpansionOnUnlock = true; + } else if (panelExpansionFraction == 0f) { + mAnimatingPanelExpansionOnUnlock = false; + } + mPanelExpansionFraction = panelExpansionFraction; boolean relevantState = (mState == ScrimState.UNLOCKED || mState == ScrimState.KEYGUARD || mState == ScrimState.SHADE_LOCKED || mState == ScrimState.PULSING); - if (!(relevantState && mExpansionAffectsAlpha)) { + if (!(relevantState && mExpansionAffectsAlpha) || mAnimatingPanelExpansionOnUnlock) { return; } applyAndDispatchState(); @@ -721,8 +736,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump if (mState == ScrimState.UNLOCKED) { // Darken scrim as you pull down the shade when unlocked, unless the shade is expanding - // because we're doing the screen off animation. - if (!mScreenOffAnimationController.shouldExpandNotifications()) { + // because we're doing the screen off animation OR the shade is collapsing because + // we're playing the unlock animation + if (!mScreenOffAnimationController.shouldExpandNotifications() + && !mAnimatingPanelExpansionOnUnlock) { float behindFraction = getInterpolatedFraction(); behindFraction = (float) Math.pow(behindFraction, 0.8f); if (mClipsQsScrim) { @@ -794,6 +811,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump mNotificationsTint = ScrimState.KEYGUARD.getNotifTint(); } } + if (mState != ScrimState.UNLOCKED) { + mAnimatingPanelExpansionOnUnlock = false; + } assertAlphasValid(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 23a1087edfd8..b8478855e8ff 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -19,6 +19,7 @@ package com.android.systemui.statusbar.phone; import static android.view.WindowInsets.Type.navigationBars; import static com.android.systemui.plugins.ActivityStarter.OnDismissAction; +import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_UNLOCK_COLLAPSING; import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_UNLOCK_FADING; import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK; import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING; @@ -360,7 +361,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } else if (bouncerNeedsScrimming()) { mBouncer.setExpansion(KeyguardBouncer.EXPANSION_VISIBLE); } else if (mShowing) { - if (!isWakeAndUnlocking() && !mCentralSurfaces.isInLaunchTransition()) { + if (!isWakeAndUnlocking() + && !mCentralSurfaces.isInLaunchTransition() + && !isUnlockCollapsing()) { mBouncer.setExpansion(fraction); } if (fraction != KeyguardBouncer.EXPANSION_HIDDEN && tracking @@ -528,6 +531,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb return mode == MODE_WAKE_AND_UNLOCK || mode == MODE_WAKE_AND_UNLOCK_PULSING; } + private boolean isUnlockCollapsing() { + int mode = mBiometricUnlockController.getMode(); + return mode == MODE_UNLOCK_COLLAPSING; + } + /** * Adds a {@param runnable} to be executed after Keyguard is gone. */ @@ -657,14 +665,17 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__OCCLUDED); if (mCentralSurfaces.isInLaunchTransition()) { setOccludedAndUpdateStates(true); - mCentralSurfaces.fadeKeyguardAfterLaunchTransition(null /* beforeFading */, - new Runnable() { - @Override - public void run() { - mNotificationShadeWindowController.setKeyguardOccluded(mOccluded); - reset(true /* hideBouncerWhenShowing */); - } - }); + final Runnable endRunnable = new Runnable() { + @Override + public void run() { + mNotificationShadeWindowController.setKeyguardOccluded(mOccluded); + reset(true /* hideBouncerWhenShowing */); + } + }; + mCentralSurfaces.fadeKeyguardAfterLaunchTransition( + null /* beforeFading */, + endRunnable, + endRunnable); return; } @@ -759,7 +770,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb hideBouncer(true /* destroyView */); updateStates(); } - }, new Runnable() { + }, /* endRunnable */ new Runnable() { @Override public void run() { mCentralSurfaces.hideKeyguard(); @@ -772,6 +783,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mViewMediatorCallback.keyguardGone(); executeAfterKeyguardGoneAction(); } + }, /* cancelRunnable */ new Runnable() { + @Override + public void run() { + mNotificationShadeWindowController.setKeyguardFadingAway(false); + if (wasFlingingToDismissKeyguard) { + mCentralSurfaces.finishKeyguardFadingAway(); + } + cancelPostAuthActions(); + } }); } else { executeAfterKeyguardGoneAction(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java index 978564fc81d0..189dca6c6e03 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java @@ -207,6 +207,8 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum private void setKeyguardFadingAway(boolean keyguardFadingAway) { if (mKeyguardFadingAway != keyguardFadingAway) { + Trace.traceCounter(Trace.TRACE_TAG_APP, "keyguardFadingAway", + keyguardFadingAway ? 1 : 0); mKeyguardFadingAway = keyguardFadingAway; ArrayList<Callback> callbacks = new ArrayList<>(mCallbacks); for (int i = 0; i < callbacks.size(); i++) { @@ -217,7 +219,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum @Override public void notifyKeyguardDoneFading() { - mKeyguardGoingAway = false; + notifyKeyguardGoingAway(false); setKeyguardFadingAway(false); } @@ -318,7 +320,11 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum @Override public void notifyKeyguardGoingAway(boolean keyguardGoingAway) { - mKeyguardGoingAway = keyguardGoingAway; + if (mKeyguardGoingAway != keyguardGoingAway) { + Trace.traceCounter(Trace.TRACE_TAG_APP, "keyguardGoingAway", + keyguardGoingAway ? 1 : 0); + mKeyguardGoingAway = keyguardGoingAway; + } } @Override @@ -368,6 +374,8 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum pw.println(" mTrusted: " + mTrusted); pw.println(" mDebugUnlocked: " + mDebugUnlocked); pw.println(" mFaceAuthEnabled: " + mFaceAuthEnabled); + pw.println(" isKeyguardFadingAway: " + isKeyguardFadingAway()); + pw.println(" isKeyguardGoingAway: " + isKeyguardGoingAway()); } private class UpdateMonitorCallback extends KeyguardUpdateMonitorCallback { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt index 093f92646115..7e245fcea22d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt @@ -24,11 +24,13 @@ import com.android.keyguard.LockIconViewController import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollectorFake import com.android.systemui.dock.DockManager +import com.android.systemui.keyguard.KeyguardUnlockAnimationController import com.android.systemui.lowlightclock.LowLightClockController import com.android.systemui.statusbar.LockscreenShadeTransitionController import com.android.systemui.statusbar.NotificationShadeDepthController import com.android.systemui.statusbar.NotificationShadeWindowController import com.android.systemui.statusbar.SysuiStatusBarStateController +import com.android.systemui.statusbar.notification.stack.AmbientState import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.NotificationShadeWindowView.InteractionEventHandler import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager @@ -71,6 +73,10 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { @Mock private lateinit var mNotificationShadeWindowController: NotificationShadeWindowController @Mock + private lateinit var mKeyguardUnlockAnimationController: KeyguardUnlockAnimationController + @Mock + private lateinit var mAmbientState: AmbientState + @Mock private lateinit var stackScrollLayoutController: NotificationStackScrollLayoutController @Mock private lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager @@ -109,7 +115,9 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { mLockIconViewController, Optional.of(mLowLightClockController), mCentralSurfaces, - mNotificationShadeWindowController + mNotificationShadeWindowController, + mKeyguardUnlockAnimationController, + mAmbientState ) mController.setupExpandedStatusBar() diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java index 62a1bcdc0184..1d86fb13a1f6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java @@ -37,12 +37,14 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.dock.DockManager; +import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.lowlightclock.LowLightClockController; import com.android.systemui.statusbar.DragDownHelper; import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SysuiStatusBarStateController; +import com.android.systemui.statusbar.notification.stack.AmbientState; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; @@ -83,6 +85,8 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase { @Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController; @Mock private LockIconViewController mLockIconViewController; @Mock private LowLightClockController mLowLightClockController; + @Mock private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + @Mock private AmbientState mAmbientState; @Captor private ArgumentCaptor<NotificationShadeWindowView.InteractionEventHandler> mInteractionEventHandlerCaptor; @@ -117,7 +121,9 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase { mLockIconViewController, Optional.of(mLowLightClockController), mCentralSurfaces, - mNotificationShadeWindowController); + mNotificationShadeWindowController, + mKeyguardUnlockAnimationController, + mAmbientState); mController.setupExpandedStatusBar(); mController.setDragDownHelper(mDragDownHelper); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 786a8586ea39..92c0e1a1ba67 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -53,6 +53,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.DejankUtils; import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; +import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.scrim.ScrimView; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -112,6 +113,8 @@ public class ScrimControllerTest extends SysuiTestCase { private ConfigurationController mConfigurationController; @Mock private ScreenOffAnimationController mScreenOffAnimationController; + @Mock + private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; // TODO(b/204991468): Use a real PanelExpansionStateManager object once this bug is fixed. (The // event-dispatch-on-registration pattern caused some of these unit tests to fail.) @Mock @@ -229,7 +232,8 @@ public class ScrimControllerTest extends SysuiTestCase { new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor, mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()), mScreenOffAnimationController, - mPanelExpansionStateManager); + mPanelExpansionStateManager, + mKeyguardUnlockAnimationController); mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible); mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront); mScrimController.setAnimatorListener(mAnimatorListener); |