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

Commit 1516c7fc authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move Lock Task Auth estimation to LockTaskController"

parents 32a927a4 7af35b48
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -63,6 +63,9 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS
import static com.android.server.wm.ActivityTaskManagerService.ANIMATE;
import static com.android.server.wm.ActivityTaskManagerService.H.FIRST_SUPERVISOR_STACK_MSG;
import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_ALLOWLISTED;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.RootWindowContainer.MATCH_TASK_IN_STACKS_OR_RECENT_TASKS;
import static com.android.server.wm.RootWindowContainer.MATCH_TASK_IN_STACKS_OR_RECENT_TASKS_AND_RESTORE;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
@@ -70,9 +73,6 @@ import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.Task.ActivityState.PAUSED;
import static com.android.server.wm.Task.ActivityState.PAUSING;
import static com.android.server.wm.Task.FLAG_FORCE_HIDDEN_FOR_PINNED_TASK;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_ALLOWLISTED;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.Task.REPARENT_KEEP_STACK_AT_FRONT;
import static com.android.server.wm.Task.TAG_CLEANUP;
import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
+1 −1
Original line number Diff line number Diff line
@@ -117,13 +117,13 @@ import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_RECEI
import static com.android.server.wm.ActivityTaskManagerInternal.ASSIST_KEY_STRUCTURE;
import static com.android.server.wm.ActivityTaskManagerService.H.REPORT_TIME_TRACKER_MSG;
import static com.android.server.wm.ActivityTaskManagerService.UiHandler.DISMISS_DIALOG_UI_MSG;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_IN_PLACE;
import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_ORIGINAL_POSITION;
import static com.android.server.wm.RootWindowContainer.MATCH_TASK_IN_STACKS_ONLY;
import static com.android.server.wm.RootWindowContainer.MATCH_TASK_IN_STACKS_OR_RECENT_TASKS;
import static com.android.server.wm.Task.ActivityState.DESTROYED;
import static com.android.server.wm.Task.ActivityState.DESTROYING;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.Task.REPARENT_KEEP_STACK_AT_FRONT;
import static com.android.server.wm.WindowContainer.POSITION_TOP;
import static com.android.server.wm.WindowManagerService.UPDATE_FOCUS_NORMAL;
+48 −5
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import static android.content.Context.DEVICE_POLICY_SERVICE;
import static android.content.Context.STATUS_BAR_SERVICE;
import static android.content.Intent.ACTION_CALL_EMERGENCY;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_ALLOWLISTED;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
import static android.os.UserHandle.USER_ALL;
import static android.os.UserHandle.USER_CURRENT;
@@ -33,11 +35,6 @@ import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_LOCKTASK;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_LOCKTASK;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_ALLOWLISTED;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.Task.LOCK_TASK_AUTH_PINNABLE;

import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -129,6 +126,18 @@ public class LockTaskController {
    /** Tag used for disabling of keyguard */
    private static final String LOCK_TASK_TAG = "Lock-to-App";

    /** Can't be put in lockTask mode. */
    static final int LOCK_TASK_AUTH_DONT_LOCK = 0;
    /** Can enter app pinning with user approval. Can never start over existing lockTask task. */
    static final int LOCK_TASK_AUTH_PINNABLE = 1;
    /** Starts in LOCK_TASK_MODE_LOCKED automatically. Can start over existing lockTask task. */
    static final int LOCK_TASK_AUTH_LAUNCHABLE = 2;
    /** Can enter lockTask without user approval. Can start over existing lockTask task. */
    static final int LOCK_TASK_AUTH_ALLOWLISTED = 3;
    /** Priv-app that starts in LOCK_TASK_MODE_LOCKED automatically. Can start over existing
     * lockTask task. */
    static final int LOCK_TASK_AUTH_LAUNCHABLE_PRIV = 4;

    private final IBinder mToken = new LockTaskToken();
    private final ActivityStackSupervisor mSupervisor;
    private final Context mContext;
@@ -697,6 +706,40 @@ public class LockTaskController {
        }
    }

    int getLockTaskAuth(@Nullable ActivityRecord rootActivity, @Nullable Task task) {
        if (rootActivity == null && task == null) {
            return LOCK_TASK_AUTH_DONT_LOCK;
        }
        if (rootActivity == null) {
            return LOCK_TASK_AUTH_PINNABLE;
        }

        final String pkg = (task == null || task.realActivity == null) ? null
                : task.realActivity.getPackageName();
        final int userId = task != null ? task.mUserId : rootActivity.mUserId;
        int lockTaskAuth = LOCK_TASK_AUTH_DONT_LOCK;
        switch (rootActivity.lockTaskLaunchMode) {
            case LOCK_TASK_LAUNCH_MODE_DEFAULT:
                lockTaskAuth = isPackageAllowlisted(userId, pkg)
                        ? LOCK_TASK_AUTH_ALLOWLISTED : LOCK_TASK_AUTH_PINNABLE;
                break;

            case LOCK_TASK_LAUNCH_MODE_NEVER:
                lockTaskAuth = LOCK_TASK_AUTH_DONT_LOCK;
                break;

            case LOCK_TASK_LAUNCH_MODE_ALWAYS:
                lockTaskAuth = LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
                break;

            case LOCK_TASK_LAUNCH_MODE_IF_ALLOWLISTED:
                lockTaskAuth = isPackageAllowlisted(userId, pkg)
                        ? LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE;
                break;
        }
        return lockTaskAuth;
    }

    boolean isPackageAllowlisted(int userId, String pkg) {
        if (pkg == null) {
            return false;
+6 −41
Original line number Diff line number Diff line
@@ -43,10 +43,6 @@ import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
import static android.content.pm.ActivityInfo.FLAG_RELINQUISH_TASK_IDENTITY;
import static android.content.pm.ActivityInfo.FLAG_RESUME_WHILE_PAUSING;
import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_IF_ALLOWLISTED;
import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION;
@@ -120,6 +116,11 @@ import static com.android.server.wm.ActivityTaskManagerService.H.FIRST_ACTIVITY_
import static com.android.server.wm.IdentifierProto.HASH_CODE;
import static com.android.server.wm.IdentifierProto.TITLE;
import static com.android.server.wm.IdentifierProto.USER_ID;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_ALLOWLISTED;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_PINNABLE;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
import static com.android.server.wm.Task.ActivityState.PAUSED;
import static com.android.server.wm.Task.ActivityState.PAUSING;
@@ -407,17 +408,6 @@ class Task extends WindowContainer<WindowContainer> {
    boolean mUserSetupComplete; // The user set-up is complete as of the last time the task activity
                                // was changed.

    /** Can't be put in lockTask mode. */
    final static int LOCK_TASK_AUTH_DONT_LOCK = 0;
    /** Can enter app pinning with user approval. Can never start over existing lockTask task. */
    final static int LOCK_TASK_AUTH_PINNABLE = 1;
    /** Starts in LOCK_TASK_MODE_LOCKED automatically. Can start over existing lockTask task. */
    final static int LOCK_TASK_AUTH_LAUNCHABLE = 2;
    /** Can enter lockTask without user approval. Can start over existing lockTask task. */
    final static int LOCK_TASK_AUTH_ALLOWLISTED = 3;
    /** Priv-app that starts in LOCK_TASK_MODE_LOCKED automatically. Can start over existing
     * lockTask task. */
    final static int LOCK_TASK_AUTH_LAUNCHABLE_PRIV = 4;
    int mLockTaskAuth = LOCK_TASK_AUTH_PINNABLE;

    int mLockTaskUid = -1;  // The uid of the application that called startLockTask().
@@ -1941,32 +1931,7 @@ class Task extends WindowContainer<WindowContainer> {
    }

    private void setLockTaskAuth(@Nullable ActivityRecord r) {
        if (r == null) {
            mLockTaskAuth = LOCK_TASK_AUTH_PINNABLE;
            return;
        }

        final String pkg = (realActivity != null) ? realActivity.getPackageName() : null;
        final LockTaskController lockTaskController = mAtmService.getLockTaskController();
        switch (r.lockTaskLaunchMode) {
            case LOCK_TASK_LAUNCH_MODE_DEFAULT:
                mLockTaskAuth = lockTaskController.isPackageAllowlisted(mUserId, pkg)
                        ? LOCK_TASK_AUTH_ALLOWLISTED : LOCK_TASK_AUTH_PINNABLE;
                break;

            case LOCK_TASK_LAUNCH_MODE_NEVER:
                mLockTaskAuth = LOCK_TASK_AUTH_DONT_LOCK;
                break;

            case LOCK_TASK_LAUNCH_MODE_ALWAYS:
                mLockTaskAuth = LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
                break;

            case LOCK_TASK_LAUNCH_MODE_IF_ALLOWLISTED:
                mLockTaskAuth = lockTaskController.isPackageAllowlisted(mUserId, pkg)
                        ? LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_PINNABLE;
                break;
        }
        mLockTaskAuth = mAtmService.getLockTaskController().getLockTaskAuth(r, this);
        ProtoLog.d(WM_DEBUG_LOCKTASK, "setLockTaskAuth: task=%s mLockTaskAuth=%s", this,
                lockTaskAuthToString());
    }
+41 −39
Original line number Diff line number Diff line
@@ -50,6 +50,11 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.reset;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_ALLOWLISTED;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_DONT_LOCK;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_LAUNCHABLE_PRIV;
import static com.android.server.wm.LockTaskController.LOCK_TASK_AUTH_PINNABLE;
import static com.android.server.wm.LockTaskController.STATUS_BAR_MASK_LOCKED;
import static com.android.server.wm.LockTaskController.STATUS_BAR_MASK_PINNED;

@@ -169,7 +174,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStartLockTaskMode_once() throws Exception {
        // GIVEN a task record with allowlisted auth
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);

        // WHEN calling setLockTaskMode for LOCKED mode without resuming
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);
@@ -186,8 +191,8 @@ public class LockTaskControllerTest {
    @Test
    public void testStartLockTaskMode_twice() throws Exception {
        // GIVEN two task records with allowlisted auth
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);

        // WHEN calling setLockTaskMode for LOCKED mode on both tasks
        mLockTaskController.startLockTaskMode(tr1, false, TEST_UID);
@@ -206,7 +211,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStartLockTaskMode_pinningRequest() {
        // GIVEN a task record that is not allowlisted, i.e. with pinned auth
        Task tr = getTask(Task.LOCK_TASK_AUTH_PINNABLE);
        Task tr = getTask(LOCK_TASK_AUTH_PINNABLE);

        // WHEN calling startLockTaskMode
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);
@@ -218,7 +223,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStartLockTaskMode_pinnedBySystem() throws Exception {
        // GIVEN a task record with pinned auth
        Task tr = getTask(Task.LOCK_TASK_AUTH_PINNABLE);
        Task tr = getTask(LOCK_TASK_AUTH_PINNABLE);

        // WHEN the system calls startLockTaskMode
        mLockTaskController.startLockTaskMode(tr, true, SYSTEM_UID);
@@ -237,41 +242,39 @@ public class LockTaskControllerTest {
    @Test
    public void testLockTaskViolation() {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // THEN it's not a lock task violation to try and launch this task without clearing
        assertFalse(mLockTaskController.isLockTaskModeViolation(tr, false));

        // THEN it's a lock task violation to launch another task that is not allowlisted
        assertTrue(mLockTaskController.isLockTaskModeViolation(getTask(
                Task.LOCK_TASK_AUTH_PINNABLE)));
        assertTrue(mLockTaskController.isLockTaskModeViolation(getTask(LOCK_TASK_AUTH_PINNABLE)));
        // THEN it's a lock task violation to launch another task that is disallowed from lock task
        assertTrue(mLockTaskController.isLockTaskModeViolation(getTask(
                Task.LOCK_TASK_AUTH_DONT_LOCK)));
        assertTrue(mLockTaskController.isLockTaskModeViolation(getTask(LOCK_TASK_AUTH_DONT_LOCK)));

        // THEN it's no a lock task violation to launch another task that is allowlisted
        assertFalse(mLockTaskController.isLockTaskModeViolation(getTask(
                Task.LOCK_TASK_AUTH_ALLOWLISTED)));
                LOCK_TASK_AUTH_ALLOWLISTED)));
        assertFalse(mLockTaskController.isLockTaskModeViolation(getTask(
                Task.LOCK_TASK_AUTH_LAUNCHABLE)));
                LOCK_TASK_AUTH_LAUNCHABLE)));
        // THEN it's not a lock task violation to launch another task that is priv launchable
        assertFalse(mLockTaskController.isLockTaskModeViolation(getTask(
                Task.LOCK_TASK_AUTH_LAUNCHABLE_PRIV)));
                LOCK_TASK_AUTH_LAUNCHABLE_PRIV)));
    }

    @Test
    public void testLockTaskViolation_emergencyCall() {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // GIVEN tasks necessary for emergency calling
        Task keypad = getTask(new Intent().setComponent(EMERGENCY_DIALER_COMPONENT),
                Task.LOCK_TASK_AUTH_PINNABLE);
                LOCK_TASK_AUTH_PINNABLE);
        Task callAction = getTask(new Intent(Intent.ACTION_CALL_EMERGENCY),
                Task.LOCK_TASK_AUTH_PINNABLE);
        Task dialer = getTask("com.example.dialer", Task.LOCK_TASK_AUTH_PINNABLE);
                LOCK_TASK_AUTH_PINNABLE);
        Task dialer = getTask("com.example.dialer", LOCK_TASK_AUTH_PINNABLE);
        when(mTelecomManager.getSystemDialerPackage())
                .thenReturn(dialer.intent.getComponent().getPackageName());

@@ -295,7 +298,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStopLockTaskMode() throws Exception {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // WHEN the same caller calls stopLockTaskMode
@@ -312,7 +315,7 @@ public class LockTaskControllerTest {
    @Test(expected = SecurityException.class)
    public void testStopLockTaskMode_differentCaller() {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // WHEN a different caller calls stopLockTaskMode
@@ -324,7 +327,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStopLockTaskMode_systemCaller() {
        // GIVEN one task record with allowlisted auth that is in lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // WHEN system calls stopLockTaskMode
@@ -337,8 +340,8 @@ public class LockTaskControllerTest {
    @Test
    public void testStopLockTaskMode_twoTasks() throws Exception {
        // GIVEN two task records with allowlisted auth that is in lock task mode
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, false, TEST_UID);
        mLockTaskController.startLockTaskMode(tr2, false, TEST_UID);

@@ -358,8 +361,8 @@ public class LockTaskControllerTest {
    @Test
    public void testStopLockTaskMode_rootTask() throws Exception {
        // GIVEN two task records with allowlisted auth that is in lock task mode
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, false, TEST_UID);
        mLockTaskController.startLockTaskMode(tr2, false, TEST_UID);

@@ -379,7 +382,7 @@ public class LockTaskControllerTest {
    @Test
    public void testStopLockTaskMode_pinned() throws Exception {
        // GIVEN one task records that is in pinned mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_PINNABLE);
        Task tr = getTask(LOCK_TASK_AUTH_PINNABLE);
        mLockTaskController.startLockTaskMode(tr, true, SYSTEM_UID);
        // GIVEN that the keyguard is required to show after unlocking
        Settings.Secure.putInt(mContext.getContentResolver(),
@@ -406,8 +409,8 @@ public class LockTaskControllerTest {
    @Test
    public void testClearLockedTasks() throws Exception {
        // GIVEN two task records with allowlisted auth that is in lock task mode
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr2 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, false, TEST_UID);
        mLockTaskController.startLockTaskMode(tr2, false, TEST_UID);

@@ -434,7 +437,7 @@ public class LockTaskControllerTest {
                .thenReturn(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);

        // AND there is a task record
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, true, TEST_UID);

        // WHEN calling clearLockedTasks on the root task
@@ -454,7 +457,7 @@ public class LockTaskControllerTest {
                .thenReturn(true);

        // AND there is a task record
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, true, TEST_UID);

        // WHEN calling clearLockedTasks on the root task
@@ -471,7 +474,7 @@ public class LockTaskControllerTest {
                Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, 1, mContext.getUserId());

        // AND there is a task record
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, true, TEST_UID);

        // WHEN calling clearLockedTasks on the root task
@@ -488,7 +491,7 @@ public class LockTaskControllerTest {
                Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, 0, mContext.getUserId());

        // AND there is a task record
        Task tr1 = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr1 = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr1, true, TEST_UID);

        // WHEN calling clearLockedTasks on the root task
@@ -574,7 +577,7 @@ public class LockTaskControllerTest {
    @Test
    public void testUpdateLockTaskFeatures() throws Exception {
        // GIVEN a locked task
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // THEN lock task mode should be started with default status bar masks
@@ -616,7 +619,7 @@ public class LockTaskControllerTest {
    @Test
    public void testUpdateLockTaskFeatures_differentUser() throws Exception {
        // GIVEN a locked task
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // THEN lock task mode should be started with default status bar masks
@@ -638,7 +641,7 @@ public class LockTaskControllerTest {
    @Test
    public void testUpdateLockTaskFeatures_keyguard() {
        // GIVEN a locked task
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // THEN keyguard should be disabled
@@ -704,7 +707,7 @@ public class LockTaskControllerTest {
                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT));

        // Start lock task mode
        Task tr = getTask(Task.LOCK_TASK_AUTH_ALLOWLISTED);
        Task tr = getTask(LOCK_TASK_AUTH_ALLOWLISTED);
        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);

        // WHEN LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK is not enabled
@@ -758,14 +761,13 @@ public class LockTaskControllerTest {
     * @param isAppAware {@code true} if the app has marked if allowlisted in its manifest
     */
    private Task getTaskForUpdate(String pkg, boolean isAppAware) {
        final int authIfAllowlisted = isAppAware
                ? Task.LOCK_TASK_AUTH_LAUNCHABLE
                : Task.LOCK_TASK_AUTH_ALLOWLISTED;
        final int authIfAllowlisted =
                isAppAware ? LOCK_TASK_AUTH_LAUNCHABLE : LOCK_TASK_AUTH_ALLOWLISTED;
        Task tr = getTask(pkg, authIfAllowlisted);
        doAnswer((invocation) -> {
            boolean isAllowlisted =
                    mLockTaskController.isPackageAllowlisted(TEST_USER_ID, pkg);
            tr.mLockTaskAuth = isAllowlisted ? authIfAllowlisted : Task.LOCK_TASK_AUTH_PINNABLE;
            tr.mLockTaskAuth = isAllowlisted ? authIfAllowlisted : LOCK_TASK_AUTH_PINNABLE;
            return null;
        }).when(tr).setLockTaskAuth();
        return tr;