Merge "AOD: Never show bouncer when dozing" into oc-dr1-dev

am: 81e3b48f9c

Change-Id: I21064a3c20f440fb0cf244cd4ab981761573ec43
This commit is contained in:
Adrian Roos
2017-08-07 13:02:18 +00:00
committed by android-build-merger

View File

@@ -102,6 +102,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
private final ArrayList<Runnable> mAfterKeyguardGoneRunnables = new ArrayList<>(); private final ArrayList<Runnable> mAfterKeyguardGoneRunnables = new ArrayList<>();
private boolean mDeferScrimFadeOut; private boolean mDeferScrimFadeOut;
// Dismiss action to be launched when we stop dozing or the keyguard is gone.
private PendingDismissActionRequest mPendingDismissAction;
private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback = private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
new KeyguardUpdateMonitorCallback() { new KeyguardUpdateMonitorCallback() {
@Override @Override
@@ -162,13 +165,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
} else { } else {
mStatusBar.showKeyguard(); mStatusBar.showKeyguard();
if (hideBouncerWhenShowing) { if (hideBouncerWhenShowing) {
mBouncer.hide(false /* destroyView */); hideBouncer(false /* destroyView */);
mBouncer.prepare(); mBouncer.prepare();
} }
} }
updateStates(); updateStates();
} }
private void hideBouncer(boolean destroyView) {
mBouncer.hide(destroyView);
cancelPendingDismissAction();
}
private void showBouncer() { private void showBouncer() {
if (mShowing) { if (mShowing) {
mBouncer.show(false /* resetSecuritySelection */); mBouncer.show(false /* resetSecuritySelection */);
@@ -179,6 +187,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public void dismissWithAction(OnDismissAction r, Runnable cancelAction, public void dismissWithAction(OnDismissAction r, Runnable cancelAction,
boolean afterKeyguardGone) { boolean afterKeyguardGone) {
if (mShowing) { if (mShowing) {
cancelPendingDismissAction();
// If we're dozing, this needs to be delayed until after we wake up - unless we're
// wake-and-unlocking, because there dozing will last until the end of the transition.
if (mDozing && !isWakeAndUnlocking()) {
mPendingDismissAction = new PendingDismissActionRequest(
r, cancelAction, afterKeyguardGone);
return;
}
if (!afterKeyguardGone) { if (!afterKeyguardGone) {
mBouncer.showWithDismissAction(r, cancelAction); mBouncer.showWithDismissAction(r, cancelAction);
} else { } else {
@@ -189,6 +206,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
updateStates(); updateStates();
} }
private boolean isWakeAndUnlocking() {
int mode = mFingerprintUnlockController.getMode();
return mode == MODE_WAKE_AND_UNLOCK || mode == MODE_WAKE_AND_UNLOCK_PULSING;
}
/** /**
* Adds a {@param runnable} to be executed after Keyguard is gone. * Adds a {@param runnable} to be executed after Keyguard is gone.
*/ */
@@ -204,7 +226,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
if (mOccluded && !mDozing) { if (mOccluded && !mDozing) {
mStatusBar.hideKeyguard(); mStatusBar.hideKeyguard();
mStatusBar.stopWaitingForKeyguardExit(); mStatusBar.stopWaitingForKeyguardExit();
mBouncer.hide(false /* destroyView */); hideBouncer(false /* destroyView */);
} else { } else {
showBouncerOrKeyguard(hideBouncerWhenShowing); showBouncerOrKeyguard(hideBouncerWhenShowing);
} }
@@ -254,6 +276,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
reset(dozing /* hideBouncerWhenShowing */); reset(dozing /* hideBouncerWhenShowing */);
} }
updateStates(); updateStates();
if (!dozing) {
launchPendingDismissAction();
}
} }
} }
@@ -329,6 +355,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
*/ */
public void hide(long startTime, long fadeoutDuration) { public void hide(long startTime, long fadeoutDuration) {
mShowing = false; mShowing = false;
launchPendingDismissAction();
if (KeyguardUpdateMonitor.getInstance(mContext).needsSlowUnlockTransition()) { if (KeyguardUpdateMonitor.getInstance(mContext).needsSlowUnlockTransition()) {
fadeoutDuration = KEYGUARD_DISMISS_DURATION_LOCKED; fadeoutDuration = KEYGUARD_DISMISS_DURATION_LOCKED;
@@ -342,7 +369,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public void run() { public void run() {
mStatusBarWindowManager.setKeyguardShowing(false); mStatusBarWindowManager.setKeyguardShowing(false);
mStatusBarWindowManager.setKeyguardFadingAway(true); mStatusBarWindowManager.setKeyguardFadingAway(true);
mBouncer.hide(true /* destroyView */); hideBouncer(true /* destroyView */);
updateStates(); updateStates();
mScrimController.animateKeyguardFadingOut( mScrimController.animateKeyguardFadingOut(
StatusBar.FADE_KEYGUARD_START_DELAY, StatusBar.FADE_KEYGUARD_START_DELAY,
@@ -368,7 +395,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
} }
mStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration); mStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
mFingerprintUnlockController.startKeyguardFadingAway(); mFingerprintUnlockController.startKeyguardFadingAway();
mBouncer.hide(true /* destroyView */); hideBouncer(true /* destroyView */);
if (wakeUnlockPulsing) { if (wakeUnlockPulsing) {
mStatusBarWindowManager.setKeyguardFadingAway(true); mStatusBarWindowManager.setKeyguardFadingAway(true);
mStatusBar.fadeKeyguardWhilePulsing(); mStatusBar.fadeKeyguardWhilePulsing();
@@ -411,11 +438,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
} }
public void onDensityOrFontScaleChanged() { public void onDensityOrFontScaleChanged() {
mBouncer.hide(true /* destroyView */); hideBouncer(true /* destroyView */);
} }
public void onOverlayChanged() { public void onOverlayChanged() {
mBouncer.hide(true /* destroyView */); hideBouncer(true /* destroyView */);
mBouncer.prepare(); mBouncer.prepare();
} }
@@ -655,4 +682,38 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public ViewRootImpl getViewRootImpl() { public ViewRootImpl getViewRootImpl() {
return mStatusBar.getStatusBarView().getViewRootImpl(); return mStatusBar.getStatusBarView().getViewRootImpl();
} }
public void launchPendingDismissAction() {
PendingDismissActionRequest request = mPendingDismissAction;
mPendingDismissAction = null;
if (request != null) {
if (mShowing) {
dismissWithAction(request.dismissAction, request.cancelAction,
request.afterKeyguardGone);
} else if (request.dismissAction != null) {
request.dismissAction.onDismiss();
}
}
}
public void cancelPendingDismissAction() {
PendingDismissActionRequest request = mPendingDismissAction;
mPendingDismissAction = null;
if (request != null && request.cancelAction != null) {
request.cancelAction.run();
}
}
private static class PendingDismissActionRequest {
final OnDismissAction dismissAction;
final Runnable cancelAction;
final boolean afterKeyguardGone;
PendingDismissActionRequest(OnDismissAction dismissAction, Runnable cancelAction,
boolean afterKeyguardGone) {
this.dismissAction = dismissAction;
this.cancelAction = cancelAction;
this.afterKeyguardGone = afterKeyguardGone;
}
}
} }