clearLockTask for root tasks as well at removal

The check is a remnant from the merge of stacks and tasks. However it's
very much possible that a root task being locked at ToT so we shouldn't
exclude them from unlocking when they are being removed.

Bug: 191052371
Test: atest TaskTests
Change-Id: I8380f26c03e60d913c7813d753cd68a46a38001d
This commit is contained in:
Garfield Tan
2021-06-16 18:22:37 -07:00
parent c0b53c93a2
commit 02e3152fed
2 changed files with 8 additions and 8 deletions

View File

@@ -974,10 +974,7 @@ class Task extends WindowContainer<WindowContainer> {
}
void removeIfPossible(String reason) {
final boolean isRootTask = isRootTask();
if (!isRootTask) {
mAtmService.getLockTaskController().clearLockedTask(this);
}
mAtmService.getLockTaskController().clearLockedTask(this);
if (shouldDeferRemoval()) {
if (DEBUG_ROOT_TASK) Slog.i(TAG,
"removeTask:" + reason + " deferring removing taskId=" + mTaskId);

View File

@@ -60,6 +60,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
@@ -121,8 +122,8 @@ public class TaskTests extends WindowTestsBase {
@Test
public void testRemoveContainer() {
final Task taskController1 = createTask(mDisplayContent);
final Task task = createTaskInRootTask(taskController1, 0 /* userId */);
final Task rootTask = createTask(mDisplayContent);
final Task task = createTaskInRootTask(rootTask, 0 /* userId */);
final ActivityRecord activity = createActivityRecord(mDisplayContent, task);
task.removeIfPossible();
@@ -130,12 +131,14 @@ public class TaskTests extends WindowTestsBase {
assertNull(task.getParent());
assertEquals(0, task.getChildCount());
assertNull(activity.getParent());
verify(mAtm.getLockTaskController(), atLeast(1)).clearLockedTask(task);
verify(mAtm.getLockTaskController(), atLeast(1)).clearLockedTask(rootTask);
}
@Test
public void testRemoveContainer_deferRemoval() {
final Task taskController1 = createTask(mDisplayContent);
final Task task = createTaskInRootTask(taskController1, 0 /* userId */);
final Task rootTask = createTask(mDisplayContent);
final Task task = createTaskInRootTask(rootTask, 0 /* userId */);
final ActivityRecord activity = createActivityRecord(mDisplayContent, task);
doReturn(true).when(task).shouldDeferRemoval();