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

Commit 24d7b5f2 authored by Nick Pelly's avatar Nick Pelly
Browse files

Send ACTION_USER_PRESENT when provisioning is completed.

This is needed for application to know when the keyguard becomes
unlocked, because isKeyguardLocked() is typically true while
provisioning (setup wizard), but ACTION_USER_PRSENT was
not sent when it transitions to false after provisioning.

Bug: 5436867
Bug: 5430833
Change-Id: Icae13ff9cab84774a002a426eb9cb353fa1dc530
parent 9e076a61
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -606,6 +606,10 @@ class KeyguardStatusViewManager implements OnClickListener {
        public void onClockVisibilityChanged() {
            // ignored
        }

        public void onDeviceProvisioned() {
            // ignored
        }
    };

    private SimStateCallback mSimStateCallback = new SimStateCallback() {
+28 −5
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ public class KeyguardUpdateMonitor {
    private static final int MSG_RINGER_MODE_CHANGED = 305;
    private static final int MSG_PHONE_STATE_CHANGED = 306;
    private static final int MSG_CLOCK_VISIBILITY_CHANGED = 307;
    private static final int MSG_DEVICE_PROVISIONED = 308;

    /**
     * When we receive a
@@ -178,6 +179,9 @@ public class KeyguardUpdateMonitor {
                    case MSG_CLOCK_VISIBILITY_CHANGED:
                        handleClockVisibilityChanged();
                        break;
                    case MSG_DEVICE_PROVISIONED:
                        handleDeviceProvisioned();
                        break;
                }
            }
        };
@@ -197,10 +201,8 @@ public class KeyguardUpdateMonitor {
                    super.onChange(selfChange);
                    mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
                        Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
                    if (mDeviceProvisioned && mContentObserver != null) {
                        // We don't need the observer anymore...
                        mContext.getContentResolver().unregisterContentObserver(mContentObserver);
                        mContentObserver = null;
                    if (mDeviceProvisioned) {
                        mHandler.sendMessage(mHandler.obtainMessage(MSG_DEVICE_PROVISIONED));
                    }
                    if (DEBUG) Log.d(TAG, "DEVICE_PROVISIONED state = " + mDeviceProvisioned);
                }
@@ -212,8 +214,14 @@ public class KeyguardUpdateMonitor {

            // prevent a race condition between where we check the flag and where we register the
            // observer by grabbing the value once again...
            mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
            boolean provisioned = Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
            if (provisioned != mDeviceProvisioned) {
                mDeviceProvisioned = provisioned;
                if (mDeviceProvisioned) {
                    mHandler.sendMessage(mHandler.obtainMessage(MSG_DEVICE_PROVISIONED));
                }
            }
        }

        // take a guess to start
@@ -271,6 +279,17 @@ public class KeyguardUpdateMonitor {
        }, filter);
    }

    protected void handleDeviceProvisioned() {
        for (int i = 0; i < mInfoCallbacks.size(); i++) {
            mInfoCallbacks.get(i).onDeviceProvisioned();
        }
        if (mContentObserver != null) {
            // We don't need the observer anymore...
            mContext.getContentResolver().unregisterContentObserver(mContentObserver);
            mContentObserver = null;
        }
    }

    protected void handlePhoneStateChanged(String newState) {
        if (DEBUG) Log.d(TAG, "handlePhoneStateChanged(" + newState + ")");
        if (TelephonyManager.EXTRA_STATE_IDLE.equals(newState)) {
@@ -477,6 +496,10 @@ public class KeyguardUpdateMonitor {
         */
        void onClockVisibilityChanged();

        /**
         * Called when the device becomes provisioned
         */
        void onDeviceProvisioned();
    }

    /**
+5 −0
Original line number Diff line number Diff line
@@ -1323,4 +1323,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
    public void onTimeChanged() {
        // ignored
    }

    /** {@inheritDoc} */
    public void onDeviceProvisioned() {
        mContext.sendBroadcast(mUserPresentIntent);
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -615,6 +615,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler
    public void onRingerModeChanged(int state) {}
    @Override
    public void onClockVisibilityChanged() {}
    @Override
    public void onDeviceProvisioned() {}

    //We need to stop faceunlock when a phonecall comes in
    @Override