Merge "AOD: Never show bouncer when dozing" into oc-dr1-dev
am: 81e3b48f9c
Change-Id: I21064a3c20f440fb0cf244cd4ab981761573ec43
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user