Merge "Cancel touches on the unlocked animation" into tm-dev
This commit is contained in:
@@ -5026,6 +5026,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
|
|||||||
.append(" qsExpandFraction=").append(mQsExpansionFraction)
|
.append(" qsExpandFraction=").append(mQsExpansionFraction)
|
||||||
.append(" isCurrentUserSetup=").append(mIsCurrentUserSetup)
|
.append(" isCurrentUserSetup=").append(mIsCurrentUserSetup)
|
||||||
.append(" hideAmount=").append(mAmbientState.getHideAmount())
|
.append(" hideAmount=").append(mAmbientState.getHideAmount())
|
||||||
|
.append(" ambientStateSwipingUp=").append(mAmbientState.isSwipingUp())
|
||||||
.append("]");
|
.append("]");
|
||||||
pw.println(sb.toString());
|
pw.println(sb.toString());
|
||||||
DumpUtilsKt.withIncreasedIndent(pw, () -> {
|
DumpUtilsKt.withIncreasedIndent(pw, () -> {
|
||||||
|
|||||||
@@ -641,6 +641,7 @@ public class CentralSurfaces extends CoreStartable implements
|
|||||||
private boolean mWallpaperSupported;
|
private boolean mWallpaperSupported;
|
||||||
|
|
||||||
private Runnable mLaunchTransitionEndRunnable;
|
private Runnable mLaunchTransitionEndRunnable;
|
||||||
|
private Runnable mLaunchTransitionCancelRunnable;
|
||||||
private boolean mLaunchCameraWhenFinishedWaking;
|
private boolean mLaunchCameraWhenFinishedWaking;
|
||||||
private boolean mLaunchCameraOnFinishedGoingToSleep;
|
private boolean mLaunchCameraOnFinishedGoingToSleep;
|
||||||
private boolean mLaunchEmergencyActionWhenFinishedWaking;
|
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
|
* @param beforeFading the runnable to be run when the circle is fully expanded and the fading
|
||||||
* starts
|
* 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,
|
public void fadeKeyguardAfterLaunchTransition(final Runnable beforeFading,
|
||||||
Runnable endRunnable) {
|
Runnable endRunnable, Runnable cancelRunnable) {
|
||||||
mMessageRouter.cancelMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
|
mMessageRouter.cancelMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
|
||||||
mLaunchTransitionEndRunnable = endRunnable;
|
mLaunchTransitionEndRunnable = endRunnable;
|
||||||
|
mLaunchTransitionCancelRunnable = cancelRunnable;
|
||||||
Runnable hideRunnable = () -> {
|
Runnable hideRunnable = () -> {
|
||||||
mKeyguardStateController.setLaunchTransitionFadingAway(true);
|
mKeyguardStateController.setLaunchTransitionFadingAway(true);
|
||||||
if (beforeFading != null) {
|
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
|
* Fades the content of the Keyguard while we are dozing and makes it invisible when finished
|
||||||
* fading.
|
* fading.
|
||||||
@@ -3033,6 +3046,7 @@ public class CentralSurfaces extends CoreStartable implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void runLaunchTransitionEndRunnable() {
|
private void runLaunchTransitionEndRunnable() {
|
||||||
|
mLaunchTransitionCancelRunnable = null;
|
||||||
if (mLaunchTransitionEndRunnable != null) {
|
if (mLaunchTransitionEndRunnable != null) {
|
||||||
Runnable r = mLaunchTransitionEndRunnable;
|
Runnable r = mLaunchTransitionEndRunnable;
|
||||||
|
|
||||||
@@ -3524,6 +3538,10 @@ public class CentralSurfaces extends CoreStartable implements
|
|||||||
public void onStartedGoingToSleep() {
|
public void onStartedGoingToSleep() {
|
||||||
String tag = "CentralSurfaces#onStartedGoingToSleep";
|
String tag = "CentralSurfaces#onStartedGoingToSleep";
|
||||||
DejankUtils.startDetectingBlockingIpcs(tag);
|
DejankUtils.startDetectingBlockingIpcs(tag);
|
||||||
|
|
||||||
|
// cancel stale runnables that could put the device in the wrong state
|
||||||
|
cancelAfterLaunchTransitionRunnables();
|
||||||
|
|
||||||
updateRevealEffect(false /* wakingUp */);
|
updateRevealEffect(false /* wakingUp */);
|
||||||
updateNotificationPanelTouchState();
|
updateNotificationPanelTouchState();
|
||||||
maybeEscalateHeadsUp();
|
maybeEscalateHeadsUp();
|
||||||
|
|||||||
@@ -894,10 +894,17 @@ public class NotificationPanelViewController extends PanelViewController {
|
|||||||
mDepthController.setBlursDisabledForUnlock(mTracking);
|
mDepthController.setBlursDisabledForUnlock(mTracking);
|
||||||
|
|
||||||
if (playingCannedAnimation && !isWakeAndUnlock) {
|
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
|
// keyguard, which will be appearing. If we're wake and unlocking, the
|
||||||
// lock screen is hidden instantly so should not be flung away.
|
// 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -36,12 +36,14 @@ import com.android.keyguard.LockIconViewController;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.classifier.FalsingCollector;
|
import com.android.systemui.classifier.FalsingCollector;
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
|
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||||
import com.android.systemui.lowlightclock.LowLightClockController;
|
import com.android.systemui.lowlightclock.LowLightClockController;
|
||||||
import com.android.systemui.statusbar.DragDownHelper;
|
import com.android.systemui.statusbar.DragDownHelper;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
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.NotificationStackScrollLayout;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
||||||
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
|
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent;
|
||||||
@@ -71,6 +73,8 @@ public class NotificationShadeWindowViewController {
|
|||||||
private final LockIconViewController mLockIconViewController;
|
private final LockIconViewController mLockIconViewController;
|
||||||
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
||||||
private final StatusBarWindowStateController mStatusBarWindowStateController;
|
private final StatusBarWindowStateController mStatusBarWindowStateController;
|
||||||
|
private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
|
||||||
|
private final AmbientState mAmbientState;
|
||||||
|
|
||||||
private GestureDetector mGestureDetector;
|
private GestureDetector mGestureDetector;
|
||||||
private View mBrightnessMirror;
|
private View mBrightnessMirror;
|
||||||
@@ -109,7 +113,9 @@ public class NotificationShadeWindowViewController {
|
|||||||
LockIconViewController lockIconViewController,
|
LockIconViewController lockIconViewController,
|
||||||
Optional<LowLightClockController> lowLightClockController,
|
Optional<LowLightClockController> lowLightClockController,
|
||||||
CentralSurfaces centralSurfaces,
|
CentralSurfaces centralSurfaces,
|
||||||
NotificationShadeWindowController controller) {
|
NotificationShadeWindowController controller,
|
||||||
|
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
|
||||||
|
AmbientState ambientState) {
|
||||||
mLockscreenShadeTransitionController = transitionController;
|
mLockscreenShadeTransitionController = transitionController;
|
||||||
mFalsingCollector = falsingCollector;
|
mFalsingCollector = falsingCollector;
|
||||||
mTunerService = tunerService;
|
mTunerService = tunerService;
|
||||||
@@ -126,6 +132,8 @@ public class NotificationShadeWindowViewController {
|
|||||||
mLowLightClockController = lowLightClockController;
|
mLowLightClockController = lowLightClockController;
|
||||||
mService = centralSurfaces;
|
mService = centralSurfaces;
|
||||||
mNotificationShadeWindowController = controller;
|
mNotificationShadeWindowController = controller;
|
||||||
|
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
|
||||||
|
mAmbientState = ambientState;
|
||||||
|
|
||||||
// This view is not part of the newly inflated expanded status bar.
|
// This view is not part of the newly inflated expanded status bar.
|
||||||
mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container);
|
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
|
// Reset manual touch dispatch state here but make sure the UP/CANCEL event still
|
||||||
// gets
|
// gets
|
||||||
// delivered.
|
// delivered.
|
||||||
|
|
||||||
if (!isCancel && mService.shouldIgnoreTouch()) {
|
if (!isCancel && mService.shouldIgnoreTouch()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -219,6 +226,16 @@ public class NotificationShadeWindowViewController {
|
|||||||
return false;
|
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);
|
mFalsingCollector.onTouchEvent(ev);
|
||||||
mGestureDetector.onTouchEvent(ev);
|
mGestureDetector.onTouchEvent(ev);
|
||||||
mStatusBarKeyguardViewManager.onTouch(ev);
|
mStatusBarKeyguardViewManager.onTouch(ev);
|
||||||
@@ -430,6 +447,7 @@ public class NotificationShadeWindowViewController {
|
|||||||
event.recycle();
|
event.recycle();
|
||||||
mTouchCancelled = true;
|
mTouchCancelled = true;
|
||||||
}
|
}
|
||||||
|
mAmbientState.setSwipingUp(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||||
|
|||||||
@@ -865,6 +865,10 @@ public abstract class PanelViewController {
|
|||||||
return mClosing || mIsLaunchAnimationRunning;
|
return mClosing || mIsLaunchAnimationRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isFlinging() {
|
||||||
|
return mIsFlinging;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isTracking() {
|
public boolean isTracking() {
|
||||||
return mTracking;
|
return mTracking;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import com.android.systemui.animation.ShadeInterpolation;
|
|||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
|
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||||
import com.android.systemui.scrim.ScrimView;
|
import com.android.systemui.scrim.ScrimView;
|
||||||
import com.android.systemui.statusbar.notification.stack.ViewState;
|
import com.android.systemui.statusbar.notification.stack.ViewState;
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
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 Handler mHandler;
|
||||||
private final Executor mMainExecutor;
|
private final Executor mMainExecutor;
|
||||||
private final ScreenOffAnimationController mScreenOffAnimationController;
|
private final ScreenOffAnimationController mScreenOffAnimationController;
|
||||||
|
private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
|
||||||
|
|
||||||
private GradientColors mColors;
|
private GradientColors mColors;
|
||||||
private boolean mNeedsDrawableColorUpdate;
|
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 mPanelExpansionFraction = 1f; // Assume shade is expanded during initialization
|
||||||
private float mQsExpansion;
|
private float mQsExpansion;
|
||||||
private boolean mQsBottomVisible;
|
private boolean mQsBottomVisible;
|
||||||
|
private boolean mAnimatingPanelExpansionOnUnlock; // don't animate scrim
|
||||||
|
|
||||||
private boolean mDarkenWhileDragging;
|
private boolean mDarkenWhileDragging;
|
||||||
private boolean mExpansionAffectsAlpha = true;
|
private boolean mExpansionAffectsAlpha = true;
|
||||||
@@ -255,7 +258,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager,
|
KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager,
|
||||||
ConfigurationController configurationController, @Main Executor mainExecutor,
|
ConfigurationController configurationController, @Main Executor mainExecutor,
|
||||||
ScreenOffAnimationController screenOffAnimationController,
|
ScreenOffAnimationController screenOffAnimationController,
|
||||||
PanelExpansionStateManager panelExpansionStateManager) {
|
PanelExpansionStateManager panelExpansionStateManager,
|
||||||
|
KeyguardUnlockAnimationController keyguardUnlockAnimationController) {
|
||||||
mScrimStateListener = lightBarController::setScrimState;
|
mScrimStateListener = lightBarController::setScrimState;
|
||||||
mDefaultScrimAlpha = BUSY_SCRIM_ALPHA;
|
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.
|
// to make sure that text on top of it is legible.
|
||||||
mDozeParameters = dozeParameters;
|
mDozeParameters = dozeParameters;
|
||||||
mDockManager = dockManager;
|
mDockManager = dockManager;
|
||||||
|
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
|
||||||
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
|
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void onKeyguardFadingAwayChanged() {
|
public void onKeyguardFadingAwayChanged() {
|
||||||
@@ -497,6 +502,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
public void onTrackingStarted() {
|
public void onTrackingStarted() {
|
||||||
mTracking = true;
|
mTracking = true;
|
||||||
mDarkenWhileDragging = !mKeyguardStateController.canDismissLockScreen();
|
mDarkenWhileDragging = !mKeyguardStateController.canDismissLockScreen();
|
||||||
|
if (!mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()) {
|
||||||
|
mAnimatingPanelExpansionOnUnlock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onExpandingFinished() {
|
public void onExpandingFinished() {
|
||||||
@@ -567,13 +575,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mPanelExpansionFraction != panelExpansionFraction) {
|
if (mPanelExpansionFraction != panelExpansionFraction) {
|
||||||
|
if (panelExpansionFraction != 0f
|
||||||
|
&& mKeyguardUnlockAnimationController.isPlayingCannedUnlockAnimation()) {
|
||||||
|
mAnimatingPanelExpansionOnUnlock = true;
|
||||||
|
} else if (panelExpansionFraction == 0f) {
|
||||||
|
mAnimatingPanelExpansionOnUnlock = false;
|
||||||
|
}
|
||||||
|
|
||||||
mPanelExpansionFraction = panelExpansionFraction;
|
mPanelExpansionFraction = panelExpansionFraction;
|
||||||
|
|
||||||
boolean relevantState = (mState == ScrimState.UNLOCKED
|
boolean relevantState = (mState == ScrimState.UNLOCKED
|
||||||
|| mState == ScrimState.KEYGUARD
|
|| mState == ScrimState.KEYGUARD
|
||||||
|| mState == ScrimState.SHADE_LOCKED
|
|| mState == ScrimState.SHADE_LOCKED
|
||||||
|| mState == ScrimState.PULSING);
|
|| mState == ScrimState.PULSING);
|
||||||
if (!(relevantState && mExpansionAffectsAlpha)) {
|
if (!(relevantState && mExpansionAffectsAlpha) || mAnimatingPanelExpansionOnUnlock) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
applyAndDispatchState();
|
applyAndDispatchState();
|
||||||
@@ -721,8 +736,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
|
|
||||||
if (mState == ScrimState.UNLOCKED) {
|
if (mState == ScrimState.UNLOCKED) {
|
||||||
// Darken scrim as you pull down the shade when unlocked, unless the shade is expanding
|
// Darken scrim as you pull down the shade when unlocked, unless the shade is expanding
|
||||||
// because we're doing the screen off animation.
|
// because we're doing the screen off animation OR the shade is collapsing because
|
||||||
if (!mScreenOffAnimationController.shouldExpandNotifications()) {
|
// we're playing the unlock animation
|
||||||
|
if (!mScreenOffAnimationController.shouldExpandNotifications()
|
||||||
|
&& !mAnimatingPanelExpansionOnUnlock) {
|
||||||
float behindFraction = getInterpolatedFraction();
|
float behindFraction = getInterpolatedFraction();
|
||||||
behindFraction = (float) Math.pow(behindFraction, 0.8f);
|
behindFraction = (float) Math.pow(behindFraction, 0.8f);
|
||||||
if (mClipsQsScrim) {
|
if (mClipsQsScrim) {
|
||||||
@@ -794,6 +811,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
|||||||
mNotificationsTint = ScrimState.KEYGUARD.getNotifTint();
|
mNotificationsTint = ScrimState.KEYGUARD.getNotifTint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mState != ScrimState.UNLOCKED) {
|
||||||
|
mAnimatingPanelExpansionOnUnlock = false;
|
||||||
|
}
|
||||||
|
|
||||||
assertAlphasValid();
|
assertAlphasValid();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.phone;
|
|||||||
import static android.view.WindowInsets.Type.navigationBars;
|
import static android.view.WindowInsets.Type.navigationBars;
|
||||||
|
|
||||||
import static com.android.systemui.plugins.ActivityStarter.OnDismissAction;
|
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_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;
|
||||||
import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
|
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()) {
|
} else if (bouncerNeedsScrimming()) {
|
||||||
mBouncer.setExpansion(KeyguardBouncer.EXPANSION_VISIBLE);
|
mBouncer.setExpansion(KeyguardBouncer.EXPANSION_VISIBLE);
|
||||||
} else if (mShowing) {
|
} else if (mShowing) {
|
||||||
if (!isWakeAndUnlocking() && !mCentralSurfaces.isInLaunchTransition()) {
|
if (!isWakeAndUnlocking()
|
||||||
|
&& !mCentralSurfaces.isInLaunchTransition()
|
||||||
|
&& !isUnlockCollapsing()) {
|
||||||
mBouncer.setExpansion(fraction);
|
mBouncer.setExpansion(fraction);
|
||||||
}
|
}
|
||||||
if (fraction != KeyguardBouncer.EXPANSION_HIDDEN && tracking
|
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;
|
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.
|
* 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);
|
SysUiStatsLog.KEYGUARD_STATE_CHANGED__STATE__OCCLUDED);
|
||||||
if (mCentralSurfaces.isInLaunchTransition()) {
|
if (mCentralSurfaces.isInLaunchTransition()) {
|
||||||
setOccludedAndUpdateStates(true);
|
setOccludedAndUpdateStates(true);
|
||||||
mCentralSurfaces.fadeKeyguardAfterLaunchTransition(null /* beforeFading */,
|
final Runnable endRunnable = new Runnable() {
|
||||||
new Runnable() {
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run() {
|
mNotificationShadeWindowController.setKeyguardOccluded(mOccluded);
|
||||||
mNotificationShadeWindowController.setKeyguardOccluded(mOccluded);
|
reset(true /* hideBouncerWhenShowing */);
|
||||||
reset(true /* hideBouncerWhenShowing */);
|
}
|
||||||
}
|
};
|
||||||
});
|
mCentralSurfaces.fadeKeyguardAfterLaunchTransition(
|
||||||
|
null /* beforeFading */,
|
||||||
|
endRunnable,
|
||||||
|
endRunnable);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -759,7 +770,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
hideBouncer(true /* destroyView */);
|
hideBouncer(true /* destroyView */);
|
||||||
updateStates();
|
updateStates();
|
||||||
}
|
}
|
||||||
}, new Runnable() {
|
}, /* endRunnable */ new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
mCentralSurfaces.hideKeyguard();
|
mCentralSurfaces.hideKeyguard();
|
||||||
@@ -772,6 +783,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
|||||||
mViewMediatorCallback.keyguardGone();
|
mViewMediatorCallback.keyguardGone();
|
||||||
executeAfterKeyguardGoneAction();
|
executeAfterKeyguardGoneAction();
|
||||||
}
|
}
|
||||||
|
}, /* cancelRunnable */ new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mNotificationShadeWindowController.setKeyguardFadingAway(false);
|
||||||
|
if (wasFlingingToDismissKeyguard) {
|
||||||
|
mCentralSurfaces.finishKeyguardFadingAway();
|
||||||
|
}
|
||||||
|
cancelPostAuthActions();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
executeAfterKeyguardGoneAction();
|
executeAfterKeyguardGoneAction();
|
||||||
|
|||||||
@@ -207,6 +207,8 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
|
|||||||
|
|
||||||
private void setKeyguardFadingAway(boolean keyguardFadingAway) {
|
private void setKeyguardFadingAway(boolean keyguardFadingAway) {
|
||||||
if (mKeyguardFadingAway != keyguardFadingAway) {
|
if (mKeyguardFadingAway != keyguardFadingAway) {
|
||||||
|
Trace.traceCounter(Trace.TRACE_TAG_APP, "keyguardFadingAway",
|
||||||
|
keyguardFadingAway ? 1 : 0);
|
||||||
mKeyguardFadingAway = keyguardFadingAway;
|
mKeyguardFadingAway = keyguardFadingAway;
|
||||||
ArrayList<Callback> callbacks = new ArrayList<>(mCallbacks);
|
ArrayList<Callback> callbacks = new ArrayList<>(mCallbacks);
|
||||||
for (int i = 0; i < callbacks.size(); i++) {
|
for (int i = 0; i < callbacks.size(); i++) {
|
||||||
@@ -217,7 +219,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyKeyguardDoneFading() {
|
public void notifyKeyguardDoneFading() {
|
||||||
mKeyguardGoingAway = false;
|
notifyKeyguardGoingAway(false);
|
||||||
setKeyguardFadingAway(false);
|
setKeyguardFadingAway(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,7 +320,11 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void notifyKeyguardGoingAway(boolean keyguardGoingAway) {
|
public void notifyKeyguardGoingAway(boolean keyguardGoingAway) {
|
||||||
mKeyguardGoingAway = keyguardGoingAway;
|
if (mKeyguardGoingAway != keyguardGoingAway) {
|
||||||
|
Trace.traceCounter(Trace.TRACE_TAG_APP, "keyguardGoingAway",
|
||||||
|
keyguardGoingAway ? 1 : 0);
|
||||||
|
mKeyguardGoingAway = keyguardGoingAway;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -368,6 +374,8 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
|
|||||||
pw.println(" mTrusted: " + mTrusted);
|
pw.println(" mTrusted: " + mTrusted);
|
||||||
pw.println(" mDebugUnlocked: " + mDebugUnlocked);
|
pw.println(" mDebugUnlocked: " + mDebugUnlocked);
|
||||||
pw.println(" mFaceAuthEnabled: " + mFaceAuthEnabled);
|
pw.println(" mFaceAuthEnabled: " + mFaceAuthEnabled);
|
||||||
|
pw.println(" isKeyguardFadingAway: " + isKeyguardFadingAway());
|
||||||
|
pw.println(" isKeyguardGoingAway: " + isKeyguardGoingAway());
|
||||||
}
|
}
|
||||||
|
|
||||||
private class UpdateMonitorCallback extends KeyguardUpdateMonitorCallback {
|
private class UpdateMonitorCallback extends KeyguardUpdateMonitorCallback {
|
||||||
|
|||||||
@@ -24,11 +24,13 @@ import com.android.keyguard.LockIconViewController
|
|||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.classifier.FalsingCollectorFake
|
import com.android.systemui.classifier.FalsingCollectorFake
|
||||||
import com.android.systemui.dock.DockManager
|
import com.android.systemui.dock.DockManager
|
||||||
|
import com.android.systemui.keyguard.KeyguardUnlockAnimationController
|
||||||
import com.android.systemui.lowlightclock.LowLightClockController
|
import com.android.systemui.lowlightclock.LowLightClockController
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController
|
import com.android.systemui.statusbar.NotificationShadeDepthController
|
||||||
import com.android.systemui.statusbar.NotificationShadeWindowController
|
import com.android.systemui.statusbar.NotificationShadeWindowController
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
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.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowView.InteractionEventHandler
|
import com.android.systemui.statusbar.phone.NotificationShadeWindowView.InteractionEventHandler
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
||||||
@@ -71,6 +73,10 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
|
|||||||
@Mock
|
@Mock
|
||||||
private lateinit var mNotificationShadeWindowController: NotificationShadeWindowController
|
private lateinit var mNotificationShadeWindowController: NotificationShadeWindowController
|
||||||
@Mock
|
@Mock
|
||||||
|
private lateinit var mKeyguardUnlockAnimationController: KeyguardUnlockAnimationController
|
||||||
|
@Mock
|
||||||
|
private lateinit var mAmbientState: AmbientState
|
||||||
|
@Mock
|
||||||
private lateinit var stackScrollLayoutController: NotificationStackScrollLayoutController
|
private lateinit var stackScrollLayoutController: NotificationStackScrollLayoutController
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager
|
private lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager
|
||||||
@@ -109,7 +115,9 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
|
|||||||
mLockIconViewController,
|
mLockIconViewController,
|
||||||
Optional.of(mLowLightClockController),
|
Optional.of(mLowLightClockController),
|
||||||
mCentralSurfaces,
|
mCentralSurfaces,
|
||||||
mNotificationShadeWindowController
|
mNotificationShadeWindowController,
|
||||||
|
mKeyguardUnlockAnimationController,
|
||||||
|
mAmbientState
|
||||||
)
|
)
|
||||||
mController.setupExpandedStatusBar()
|
mController.setupExpandedStatusBar()
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,14 @@ import com.android.systemui.R;
|
|||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.classifier.FalsingCollectorFake;
|
import com.android.systemui.classifier.FalsingCollectorFake;
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
|
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||||
import com.android.systemui.lowlightclock.LowLightClockController;
|
import com.android.systemui.lowlightclock.LowLightClockController;
|
||||||
import com.android.systemui.statusbar.DragDownHelper;
|
import com.android.systemui.statusbar.DragDownHelper;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
import com.android.systemui.statusbar.NotificationShadeDepthController;
|
||||||
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
import com.android.systemui.statusbar.NotificationShadeWindowController;
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
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.NotificationStackScrollLayout;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
||||||
@@ -83,6 +85,8 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
|
|||||||
@Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
|
@Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController;
|
||||||
@Mock private LockIconViewController mLockIconViewController;
|
@Mock private LockIconViewController mLockIconViewController;
|
||||||
@Mock private LowLightClockController mLowLightClockController;
|
@Mock private LowLightClockController mLowLightClockController;
|
||||||
|
@Mock private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
|
||||||
|
@Mock private AmbientState mAmbientState;
|
||||||
|
|
||||||
@Captor private ArgumentCaptor<NotificationShadeWindowView.InteractionEventHandler>
|
@Captor private ArgumentCaptor<NotificationShadeWindowView.InteractionEventHandler>
|
||||||
mInteractionEventHandlerCaptor;
|
mInteractionEventHandlerCaptor;
|
||||||
@@ -117,7 +121,9 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
|
|||||||
mLockIconViewController,
|
mLockIconViewController,
|
||||||
Optional.of(mLowLightClockController),
|
Optional.of(mLowLightClockController),
|
||||||
mCentralSurfaces,
|
mCentralSurfaces,
|
||||||
mNotificationShadeWindowController);
|
mNotificationShadeWindowController,
|
||||||
|
mKeyguardUnlockAnimationController,
|
||||||
|
mAmbientState);
|
||||||
mController.setupExpandedStatusBar();
|
mController.setupExpandedStatusBar();
|
||||||
mController.setDragDownHelper(mDragDownHelper);
|
mController.setDragDownHelper(mDragDownHelper);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
|
|||||||
import com.android.systemui.DejankUtils;
|
import com.android.systemui.DejankUtils;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
|
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
|
||||||
import com.android.systemui.scrim.ScrimView;
|
import com.android.systemui.scrim.ScrimView;
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
@@ -112,6 +113,8 @@ public class ScrimControllerTest extends SysuiTestCase {
|
|||||||
private ConfigurationController mConfigurationController;
|
private ConfigurationController mConfigurationController;
|
||||||
@Mock
|
@Mock
|
||||||
private ScreenOffAnimationController mScreenOffAnimationController;
|
private ScreenOffAnimationController mScreenOffAnimationController;
|
||||||
|
@Mock
|
||||||
|
private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
|
||||||
// TODO(b/204991468): Use a real PanelExpansionStateManager object once this bug is fixed. (The
|
// 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.)
|
// event-dispatch-on-registration pattern caused some of these unit tests to fail.)
|
||||||
@Mock
|
@Mock
|
||||||
@@ -229,7 +232,8 @@ public class ScrimControllerTest extends SysuiTestCase {
|
|||||||
new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor,
|
new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor,
|
||||||
mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()),
|
mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()),
|
||||||
mScreenOffAnimationController,
|
mScreenOffAnimationController,
|
||||||
mPanelExpansionStateManager);
|
mPanelExpansionStateManager,
|
||||||
|
mKeyguardUnlockAnimationController);
|
||||||
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
|
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
|
||||||
mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront);
|
mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront);
|
||||||
mScrimController.setAnimatorListener(mAnimatorListener);
|
mScrimController.setAnimatorListener(mAnimatorListener);
|
||||||
|
|||||||
Reference in New Issue
Block a user