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

Commit a8800f7c authored by Jim Miller's avatar Jim Miller Committed by Jorim Jaggi
Browse files

Revert "Revert "Attempt to fix keyguard missing bug""

This reverts commit 1991590d
and fixes a bug where we were showing the scrim on devices without keyguard.

Bug: 18468369
Change-Id: Idce1370dadacd09c4a8f1a7fd9728c23b218d19c
parent 9ef07ad2
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -2165,7 +2165,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
                mStatusBar = win;
                mStatusBarController.setWindow(win);
                mKeyguardDelegate.hideScrim();
                break;
            case TYPE_NAVIGATION_BAR:
                mContext.enforceCallingOrSelfPermission(
+14 −6
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ public class KeyguardServiceDelegate {
    private final Context mContext;
    private final View mScrim; // shown if keyguard crashes
    private final KeyguardState mKeyguardState = new KeyguardState();
    private ShowListener mShowListenerWhenConnect;

    /* package */ static final class KeyguardState {
        KeyguardState() {
@@ -46,6 +47,7 @@ public class KeyguardServiceDelegate {
            showing = true;
            showingAndNotOccluded = true;
            secure = true;
            deviceHasKeyguard = true;
        }
        boolean showing;
        boolean showingAndNotOccluded;
@@ -54,6 +56,7 @@ public class KeyguardServiceDelegate {
        boolean secure;
        boolean dreaming;
        boolean systemIsReady;
        boolean deviceHasKeyguard;
        public boolean enabled;
        public boolean dismissable;
        public int offReason;
@@ -111,10 +114,12 @@ public class KeyguardServiceDelegate {
        intent.setClassName(KEYGUARD_PACKAGE, KEYGUARD_CLASS);
        if (!context.bindServiceAsUser(intent, mKeyguardConnection,
                Context.BIND_AUTO_CREATE, UserHandle.OWNER)) {
            if (DEBUG) Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS);
            Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS);
            mKeyguardState.showing = false;
            mKeyguardState.showingAndNotOccluded = false;
            mKeyguardState.secure = false;
            mKeyguardState.deviceHasKeyguard = false;
            hideScrim();
        } else {
            if (DEBUG) Log.v(TAG, "*** Keyguard started");
        }
@@ -130,7 +135,9 @@ public class KeyguardServiceDelegate {
                // If the system is ready, it means keyguard crashed and restarted.
                mKeyguardService.onSystemReady();
                // This is used to hide the scrim once keyguard displays.
                mKeyguardService.onScreenTurnedOn(new KeyguardShowDelegate(null));
                mKeyguardService.onScreenTurnedOn(new KeyguardShowDelegate(
                        mShowListenerWhenConnect));
                mShowListenerWhenConnect = null;
            }
            if (mKeyguardState.bootCompleted) {
                mKeyguardService.onBootCompleted();
@@ -212,9 +219,10 @@ public class KeyguardServiceDelegate {
        } else {
            // try again when we establish a connection
            Slog.w(TAG, "onScreenTurnedOn(): no keyguard service!");
            // This shouldn't happen, but if it does, invoke the listener immediately
            // to avoid a dark screen...
            showListener.onShown(null);
            // This shouldn't happen, but if it does, show the scrim immediately and
            // invoke the listener's callback after the service actually connects.
            mShowListenerWhenConnect = showListener;
            showScrim();
        }
        mKeyguardState.screenIsOn = true;
    }
@@ -280,7 +288,6 @@ public class KeyguardServiceDelegate {
        lp.setTitle("KeyguardScrim");
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        wm.addView(view, lp);
        view.setVisibility(View.GONE);
        // Disable pretty much everything in statusbar until keyguard comes back and we know
        // the state of the world.
        view.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME
@@ -292,6 +299,7 @@ public class KeyguardServiceDelegate {
    }

    public void showScrim() {
        if (!mKeyguardState.deviceHasKeyguard) return;
        mScrim.post(new Runnable() {
            @Override
            public void run() {