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

Commit 5d2404da authored by Danielle Millett's avatar Danielle Millett
Browse files

Updating isShowing during onResume()

Since the callback is unregistered in onPause(), KeyguardFaceUnlock
doesn't get onKeyguardVisibilityChanged() when it's paused.  This means
that if the state changes while it's paused, then mIsShowing is incorrect
when it resumes.  This is fixed by keeping track of the state in
KeyguardUpdateMonitor and checking it when onResume() is called.

Change-Id: I67aa1e091161a965e4347dc8c2ec5e7a1dd9d92e
parent 5b039844
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu
    @Override
    public void onResume() {
        if (DEBUG) Log.d(TAG, "onResume()");
        mIsShowing = KeyguardUpdateMonitor.getInstance(mContext).isKeyguardVisible();
        maybeStartBiometricUnlock();
        KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateCallback);
    }
+8 −1
Original line number Diff line number Diff line
@@ -92,6 +92,7 @@ public class KeyguardUpdateMonitor {
    private CharSequence mTelephonySpn;
    private int mRingMode;
    private int mPhoneState;
    private boolean mKeyguardIsVisible;

    // Device provisioning state
    private boolean mDeviceProvisioned;
@@ -567,14 +568,20 @@ public class KeyguardUpdateMonitor {
     */
    private void handleKeyguardVisibilityChanged(int showing) {
        if (DEBUG) Log.d(TAG, "handleKeyguardVisibilityChanged(" + showing + ")");
        boolean isShowing = (showing == 1);
        mKeyguardIsVisible = isShowing;
        for (int i = 0; i < mCallbacks.size(); i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
            if (cb != null) {
                cb.onKeyguardVisibilityChanged(showing == 1);
                cb.onKeyguardVisibilityChanged(isShowing);
            }
        }
    }

    public boolean isKeyguardVisible() {
        return mKeyguardIsVisible;
    }

    private static boolean isBatteryUpdateInteresting(BatteryStatus old, BatteryStatus current) {
        final boolean nowPluggedIn = current.isPluggedIn();
        final boolean wasPluggedIn = old.isPluggedIn();