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

Commit edd32b88 authored by Selim Cinek's avatar Selim Cinek
Browse files

Fixed a bug with encryption where the keyguard was never shown with PIN

This led to the network being unusable.
We now ensure that the Keyguard is not notified of the SIM PIN
changes until after the initial dismissal logic is done.
In addition, the fullscreen PIN is now always shown immediately
and not until the user swipes up, which was an error before.
Also made sure that the Keyguard Scrim is correctly visible
when shown.

Bug: 21850021
Change-Id: I81804124bae30adf0e17e26cc42f67e48fc446e8
parent 9a634991
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -622,9 +622,8 @@ public class KeyguardViewMediator extends SystemUI {
        synchronized (this) {
            if (DEBUG) Log.d(TAG, "onSystemReady");
            mSystemReady = true;
            mUpdateMonitor.registerCallback(mUpdateCallback);

            doKeyguardLocked(null);
            mUpdateMonitor.registerCallback(mUpdateCallback);
        }
        // Most services aren't available until the system reaches the ready state, so we
        // send it here when the device first boots.
+1 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ public class KeyguardBouncer {
     * notifications on Keyguard, like SIM PIN/PUK.
     */
    public boolean needsFullscreenBouncer() {
        ensureView();
        if (mKeyguardView != null) {
            SecurityMode mode = mKeyguardView.getSecurityMode();
            return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk;
+13 −3
Original line number Diff line number Diff line
@@ -137,6 +137,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
        scheduleUpdate();
    }

    public void abortKeyguardFadingOut() {
        if (mAnimateKeyguardFadingOut) {
            endAnimateKeyguardFadingOut();
        }
    }

    public void animateGoingToFullShade(long delay, long duration) {
        mDurationOverride = duration;
        mAnimationDelay = delay;
@@ -321,17 +327,21 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
        mScrimBehind.getViewTreeObserver().removeOnPreDrawListener(this);
        mUpdatePending = false;
        updateScrims();
        mAnimateKeyguardFadingOut = false;
        mDurationOverride = -1;
        mAnimationDelay = 0;

        // Make sure that we always call the listener even if we didn't start an animation.
        endAnimateKeyguardFadingOut();
        mAnimationStarted = false;
        return true;
    }

    private void endAnimateKeyguardFadingOut() {
        mAnimateKeyguardFadingOut = false;
        if (!mAnimationStarted && mOnAnimationFinished != null) {
            mOnAnimationFinished.run();
            mOnAnimationFinished = null;
        }
        mAnimationStarted = false;
        return true;
    }

    public void setBackDropView(BackDropView backDropView) {
+1 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ public class StatusBarKeyguardViewManager {
    public void show(Bundle options) {
        mShowing = true;
        mStatusBarWindowManager.setKeyguardShowing(true);
        mScrimController.abortKeyguardFadingOut();
        reset();
    }