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

Commit 29fef432 authored by Charles He's avatar Charles He
Browse files

Suppress immersive mode cling in LockTask mode.

We don't want to show the immersive mode cling when the device is in
LockTask mode, as the status bar swipe gesture is unavailable.

Bug: 68305547
Test: manual, with DEBUG_SHOW_EVERY_TIME
Change-Id: Id11516267800e0b0c8de1da52a43b2dded5181be
parent ab57e18d
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -52,7 +52,6 @@ import android.widget.Button;
import android.widget.FrameLayout;

import com.android.internal.R;
import com.android.server.vr.VrManagerService;

/**
 *  Helper to manage showing/hiding a confirmation prompt when the navigation bar is hidden
@@ -148,6 +147,7 @@ public class ImmersiveModeConfirmation {
                    && userSetupComplete
                    && !mVrModeEnabled
                    && !navBarEmpty
                    && !isLockTaskModeLocked()
                    && !UserManager.isDeviceInDemoMode(mContext)) {
                mHandler.sendEmptyMessageDelayed(H.SHOW, mShowDelayMs);
            }
@@ -156,6 +156,20 @@ public class ImmersiveModeConfirmation {
        }
    }

    /**
     * @return {@code true} if and only if the device is currently in LockTask mode managed by
     * {@link android.app.admin.DevicePolicyManager}. Note that this differs from the screen pinning
     * mode which is initiated by the user.
     */
    private boolean isLockTaskModeLocked() {
        try {
            return ActivityManager.getService().getLockTaskModeState()
                    == ActivityManager.LOCK_TASK_MODE_LOCKED;
        } catch (RemoteException e) {
            return false;
        }
    }

    public boolean onPowerKeyDown(boolean isScreenOn, long time, boolean inImmersiveMode,
            boolean navBarEmpty) {
        if (!isScreenOn && (time - mPanicTime < mPanicThresholdMs)) {