Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a1bc55d authored by Adrian Roos's avatar Adrian Roos Committed by android-build-merger
Browse files

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

am: 81e3b48f

Change-Id: I6f0ae86412eb174474d640c437e0b0b006507c00
parents a4988d09 81e3b48f
Loading
Loading
Loading
Loading
+67 −6
Original line number Diff line number Diff line
@@ -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;
        }
    }
}