Merge "AOD: Never show bouncer when dozing" into oc-dr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
81e3b48f9c
@@ -102,6 +102,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
private final ArrayList<Runnable> mAfterKeyguardGoneRunnables = new ArrayList<>();
|
||||
private boolean mDeferScrimFadeOut;
|
||||
|
||||
// Dismiss action to be launched when we stop dozing or the keyguard is gone.
|
||||
private PendingDismissActionRequest mPendingDismissAction;
|
||||
|
||||
private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
@@ -162,13 +165,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
} else {
|
||||
mStatusBar.showKeyguard();
|
||||
if (hideBouncerWhenShowing) {
|
||||
mBouncer.hide(false /* destroyView */);
|
||||
hideBouncer(false /* destroyView */);
|
||||
mBouncer.prepare();
|
||||
}
|
||||
}
|
||||
updateStates();
|
||||
}
|
||||
|
||||
private void hideBouncer(boolean destroyView) {
|
||||
mBouncer.hide(destroyView);
|
||||
cancelPendingDismissAction();
|
||||
}
|
||||
|
||||
private void showBouncer() {
|
||||
if (mShowing) {
|
||||
mBouncer.show(false /* resetSecuritySelection */);
|
||||
@@ -179,6 +187,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
public void dismissWithAction(OnDismissAction r, Runnable cancelAction,
|
||||
boolean afterKeyguardGone) {
|
||||
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) {
|
||||
mBouncer.showWithDismissAction(r, cancelAction);
|
||||
} else {
|
||||
@@ -189,6 +206,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
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.
|
||||
*/
|
||||
@@ -204,7 +226,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
if (mOccluded && !mDozing) {
|
||||
mStatusBar.hideKeyguard();
|
||||
mStatusBar.stopWaitingForKeyguardExit();
|
||||
mBouncer.hide(false /* destroyView */);
|
||||
hideBouncer(false /* destroyView */);
|
||||
} else {
|
||||
showBouncerOrKeyguard(hideBouncerWhenShowing);
|
||||
}
|
||||
@@ -254,6 +276,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
reset(dozing /* hideBouncerWhenShowing */);
|
||||
}
|
||||
updateStates();
|
||||
|
||||
if (!dozing) {
|
||||
launchPendingDismissAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,6 +355,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
*/
|
||||
public void hide(long startTime, long fadeoutDuration) {
|
||||
mShowing = false;
|
||||
launchPendingDismissAction();
|
||||
|
||||
if (KeyguardUpdateMonitor.getInstance(mContext).needsSlowUnlockTransition()) {
|
||||
fadeoutDuration = KEYGUARD_DISMISS_DURATION_LOCKED;
|
||||
@@ -342,7 +369,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
public void run() {
|
||||
mStatusBarWindowManager.setKeyguardShowing(false);
|
||||
mStatusBarWindowManager.setKeyguardFadingAway(true);
|
||||
mBouncer.hide(true /* destroyView */);
|
||||
hideBouncer(true /* destroyView */);
|
||||
updateStates();
|
||||
mScrimController.animateKeyguardFadingOut(
|
||||
StatusBar.FADE_KEYGUARD_START_DELAY,
|
||||
@@ -368,7 +395,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
}
|
||||
mStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
|
||||
mFingerprintUnlockController.startKeyguardFadingAway();
|
||||
mBouncer.hide(true /* destroyView */);
|
||||
hideBouncer(true /* destroyView */);
|
||||
if (wakeUnlockPulsing) {
|
||||
mStatusBarWindowManager.setKeyguardFadingAway(true);
|
||||
mStatusBar.fadeKeyguardWhilePulsing();
|
||||
@@ -411,11 +438,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
}
|
||||
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
mBouncer.hide(true /* destroyView */);
|
||||
hideBouncer(true /* destroyView */);
|
||||
}
|
||||
|
||||
public void onOverlayChanged() {
|
||||
mBouncer.hide(true /* destroyView */);
|
||||
hideBouncer(true /* destroyView */);
|
||||
mBouncer.prepare();
|
||||
}
|
||||
|
||||
@@ -655,4 +682,38 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
public ViewRootImpl 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user