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

Commit 8dad3df9 authored by Matt Pietal's avatar Matt Pietal
Browse files

Controls UI - Blank activity when launched on lock screen

When the user only has swipe security or no security setup, long
pressing on activity would show a blank dialog. Need to dismiss the
keyguard first before taking action. Also make sure controls show
correctly on the lock screen when the device is unlocked.

Fixes: 159895513
Test: manual, PIN lock, swipe lock, no lock, face auth

Change-Id: Iae24e4bd8bb36b0a48fb8a8125c5182fe1f7b4d6
parent 3bc3fcff
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -128,15 +128,22 @@ class ControlActionCoordinatorImpl @Inject constructor(
        }

    private fun bouncerOrRun(action: Action) {
        if (!keyguardStateController.isUnlocked()) {
        if (keyguardStateController.isShowing()) {
            var closeGlobalActions = !keyguardStateController.isUnlocked()
            if (closeGlobalActions) {
                context.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))

                // pending actions will only run after the control state has been refreshed
                pendingAction = action
            }

            activityStarter.dismissKeyguardThenExecute({
                Log.d(ControlsUiController.TAG, "Device unlocked, invoking controls action")
                if (closeGlobalActions) {
                    globalActionsComponent.handleShowGlobalActionsMenu()
                } else {
                    action.invoke()
                }
                true
            }, { pendingAction = null }, true /* afterKeyguardGone */)
        } else {
+4 −4
Original line number Diff line number Diff line
@@ -2637,10 +2637,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
    }

    private boolean shouldShowControls() {
        return (mKeyguardStateController.isUnlocked() || mShowLockScreenCardsAndControls)
                && controlsAvailable()
                && mLockPatternUtils.getStrongAuthForUser(getCurrentUser().id)
                    != STRONG_AUTH_REQUIRED_AFTER_BOOT;
        boolean showOnLockScreen = mShowLockScreenCardsAndControls && mLockPatternUtils
                .getStrongAuthForUser(getCurrentUser().id) != STRONG_AUTH_REQUIRED_AFTER_BOOT;
        return controlsAvailable()
                && (mKeyguardStateController.isUnlocked() || showOnLockScreen);
    }

    private boolean controlsAvailable() {