Merge "Move Lock Task Auth estimation to LockTaskController"
This commit is contained in:
committed by
Android (Google) Code Review
commit
1516c7fccd
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user