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

Commit 5d830718 authored by Chad Brubaker's avatar Chad Brubaker Committed by Android (Google) Code Review
Browse files

Merge "Only show the lockdown button when its possible to enter lockdown"

parents e0e69f87 f4075fec
Loading
Loading
Loading
Loading
+22 −1
Original line number Original line Diff line number Diff line
@@ -14,10 +14,13 @@


package com.android.systemui.globalactions;
package com.android.systemui.globalactions;


import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;


import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.Dialog;
import android.app.Dialog;
import android.app.KeyguardManager;
import android.app.WallpaperManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
@@ -120,6 +123,8 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
    private final AudioManager mAudioManager;
    private final AudioManager mAudioManager;
    private final IDreamManager mDreamManager;
    private final IDreamManager mDreamManager;
    private final DevicePolicyManager mDevicePolicyManager;
    private final DevicePolicyManager mDevicePolicyManager;
    private final LockPatternUtils mLockPatternUtils;
    private final KeyguardManager mKeyguardManager;


    private ArrayList<Action> mItems;
    private ArrayList<Action> mItems;
    private ActionsDialog mDialog;
    private ActionsDialog mDialog;
@@ -150,6 +155,8 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                ServiceManager.getService(DreamService.DREAM_SERVICE));
                ServiceManager.getService(DreamService.DREAM_SERVICE));
        mDevicePolicyManager = (DevicePolicyManager) mContext.getSystemService(
        mDevicePolicyManager = (DevicePolicyManager) mContext.getSystemService(
                Context.DEVICE_POLICY_SERVICE);
                Context.DEVICE_POLICY_SERVICE);
        mLockPatternUtils = new LockPatternUtils(mContext);
        mKeyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);


        // receive broadcasts
        // receive broadcasts
        IntentFilter filter = new IntentFilter();
        IntentFilter filter = new IntentFilter();
@@ -323,7 +330,8 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
                mItems.add(getSettingsAction());
                mItems.add(getSettingsAction());
            } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
            } else if (GLOBAL_ACTION_KEY_LOCKDOWN.equals(actionKey)) {
                if (Settings.Secure.getInt(mContext.getContentResolver(),
                if (Settings.Secure.getInt(mContext.getContentResolver(),
                            Settings.Secure.LOCKDOWN_IN_POWER_MENU, 0) != 0) {
                            Settings.Secure.LOCKDOWN_IN_POWER_MENU, 0) != 0
                        && shouldDisplayLockdown()) {
                    mItems.add(getLockdownAction());
                    mItems.add(getLockdownAction());
                }
                }
            } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
            } else if (GLOBAL_ACTION_KEY_VOICEASSIST.equals(actionKey)) {
@@ -372,6 +380,19 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        return dialog;
        return dialog;
    }
    }


    private boolean shouldDisplayLockdown() {
        int userId = getCurrentUser().id;
        // Lockdown is meaningless without a place to go.
        if (!mKeyguardManager.isDeviceSecure(userId)) {
            return false;
        }

        // Only show the lockdown button if the device isn't locked down (for whatever reason).
        int state = mLockPatternUtils.getStrongAuthForUser(userId);
        return (state == STRONG_AUTH_NOT_REQUIRED
                || state == SOME_AUTH_REQUIRED_AFTER_USER_REQUEST);
    }

    private final class PowerAction extends SinglePressAction implements LongPressAction {
    private final class PowerAction extends SinglePressAction implements LongPressAction {
        private PowerAction() {
        private PowerAction() {
            super(R.drawable.ic_lock_power_off,
            super(R.drawable.ic_lock_power_off,