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

Commit 3662b155 authored by Benjamin Franz's avatar Benjamin Franz
Browse files

Disable immersive mode confirmation when device is in lock task mode

Bug: 68305547
Test: manual, with DEBUG_SHOW_EVERY_TIME
Change-Id: I42fa1ed771a8216304a0ba7330cd842ae23e8a03
parent 59444f6a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -469,6 +469,7 @@ public class LockTaskController {
            if (mLockTaskModeState == LOCK_TASK_MODE_PINNED) {
                getStatusBarService().showPinningEnterExitToast(false /* entering */);
            }
            mWindowManager.onLockTaskStateChanged(LOCK_TASK_MODE_NONE);
        } catch (RemoteException ex) {
            throw new RuntimeException(ex);
        } finally {
@@ -580,6 +581,7 @@ public class LockTaskController {
            if (lockTaskModeState == LOCK_TASK_MODE_PINNED) {
                getStatusBarService().showPinningEnterExitToast(true /* entering */);
            }
            mWindowManager.onLockTaskStateChanged(lockTaskModeState);
            mLockTaskModeState = lockTaskModeState;
            setStatusBarState(lockTaskModeState, userId);
            setKeyguardState(lockTaskModeState, userId);
+10 −1
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package com.android.server.policy;

import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED;
import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;

import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
import android.app.ActivityManager;
@@ -78,6 +81,7 @@ public class ImmersiveModeConfirmation {
    // Local copy of vr mode enabled state, to avoid calling into VrManager with
    // the lock held.
    boolean mVrModeEnabled = false;
    private int mLockTaskState = LOCK_TASK_MODE_NONE;

    public ImmersiveModeConfirmation(Context context) {
        mContext = ActivityThread.currentActivityThread().getSystemUiContext();
@@ -148,7 +152,8 @@ public class ImmersiveModeConfirmation {
                    && userSetupComplete
                    && !mVrModeEnabled
                    && !navBarEmpty
                    && !UserManager.isDeviceInDemoMode(mContext)) {
                    && !UserManager.isDeviceInDemoMode(mContext)
                    && (mLockTaskState != LOCK_TASK_MODE_LOCKED)) {
                mHandler.sendEmptyMessageDelayed(H.SHOW, mShowDelayMs);
            }
        } else {
@@ -401,4 +406,8 @@ public class ImmersiveModeConfirmation {
            }
        }
    };

    void onLockTaskModeChangedLw(int lockTaskState) {
        mLockTaskState = lockTaskState;
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -8786,4 +8786,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                return Integer.toString(behavior);
        }
    }

    @Override
    public void onLockTaskStateChangedLw(int lockTaskState) {
        mImmersiveModeConfirmation.onLockTaskModeChangedLw(lockTaskState);
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.CompatibilityInfo;
@@ -1730,4 +1731,15 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {
     * on the next user activity.
     */
    public void requestUserActivityNotification();

    /**
     * Called when the state of lock task mode changes. This should be used to disable immersive
     * mode confirmation.
     *
     * @param lockTaskState the new lock task mode state. One of
     *                      {@link ActivityManager#LOCK_TASK_MODE_NONE},
     *                      {@link ActivityManager#LOCK_TASK_MODE_LOCKED},
     *                      {@link ActivityManager#LOCK_TASK_MODE_PINNED}.
     */
    void onLockTaskStateChangedLw(int lockTaskState);
}
+15 −1
Original line number Diff line number Diff line
@@ -7436,5 +7436,19 @@ public class WindowManagerService extends IWindowManager.Stub
        mH.obtainMessage(H.SET_RUNNING_REMOTE_ANIMATION, pid, runningRemoteAnimation ? 1 : 0)
                .sendToTarget();
    }
}

    /**
     * Called when the state of lock task mode changes. This should be used to disable immersive
     * mode confirmation.
     *
     * @param lockTaskState the new lock task mode state. One of
     *                      {@link ActivityManager#LOCK_TASK_MODE_NONE},
     *                      {@link ActivityManager#LOCK_TASK_MODE_LOCKED},
     *                      {@link ActivityManager#LOCK_TASK_MODE_PINNED}.
     */
    public void onLockTaskStateChanged(int lockTaskState) {
        synchronized (mWindowMap) {
            mPolicy.onLockTaskStateChangedLw(lockTaskState);
        }
    }
}
Loading