Merge "Update task organizer state whenever task organizer was set" into rvc-dev am: ffe3762342 am: 407940a8af

Change-Id: Ie47c2c6a123959b81fca8f2dac88772bbbbf4dce
This commit is contained in:
TreeHugger Robot
2020-04-08 04:50:06 +00:00
committed by Automerger Merge Worker
3 changed files with 37 additions and 14 deletions

View File

@@ -4121,20 +4121,18 @@ class Task extends WindowContainer<WindowContainer> {
* Any time any of these conditions are updated, the updating code should call
* sendTaskAppeared.
*/
private boolean taskAppearedReady() {
boolean taskAppearedReady() {
return mSurfaceControl != null && mTaskOrganizer != null && getHasBeenVisible();
}
private void sendTaskAppeared() {
if (taskAppearedReady() && !mTaskAppearedSent) {
mTaskAppearedSent = true;
if (mTaskOrganizer != null) {
mAtmService.mTaskOrganizerController.onTaskAppeared(mTaskOrganizer, this);
}
}
private void sendTaskVanished() {
if (mTaskOrganizer != null && mTaskAppearedSent) {
mTaskAppearedSent = false;
if (mTaskOrganizer != null) {
mAtmService.mTaskOrganizerController.onTaskVanished(mTaskOrganizer, this);
}
}

View File

@@ -106,19 +106,29 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
}
void addTask(Task t) {
mOrganizedTasks.add(t);
try {
mOrganizer.onTaskAppeared(t.getTaskInfo());
} catch (Exception e) {
Slog.e(TAG, "Exception sending taskAppeared callback" + e);
if (t.mTaskAppearedSent) return;
if (!mOrganizedTasks.contains(t)) {
mOrganizedTasks.add(t);
}
if (t.taskAppearedReady()) {
try {
t.mTaskAppearedSent = true;
mOrganizer.onTaskAppeared(t.getTaskInfo());
} catch (Exception e) {
Slog.e(TAG, "Exception sending taskAppeared callback" + e);
}
}
}
void removeTask(Task t) {
try {
mOrganizer.onTaskVanished(t.getTaskInfo());
} catch (Exception e) {
Slog.e(TAG, "Exception sending taskVanished callback" + e);
if (t.mTaskAppearedSent) {
try {
t.mTaskAppearedSent = false;
mOrganizer.onTaskVanished(t.getTaskInfo());
} catch (Exception e) {
Slog.e(TAG, "Exception sending taskVanished callback" + e);
}
}
mOrganizedTasks.remove(t);
}

View File

@@ -191,6 +191,21 @@ public class TaskOrganizerTests extends WindowTestsBase {
verify(organizer2).onTaskAppeared(any());
}
@Test
public void testTaskNoDraw() throws RemoteException {
final ActivityStack stack = createStack();
final Task task = createTask(stack, false /* fakeDraw */);
final ITaskOrganizer organizer = registerMockOrganizer();
stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
verify(organizer, never()).onTaskAppeared(any());
assertTrue(stack.isOrganized());
mWm.mAtmService.mTaskOrganizerController.unregisterTaskOrganizer(organizer);
verify(organizer, never()).onTaskVanished(any());
assertFalse(stack.isOrganized());
}
@Test
public void testClearOrganizer() throws RemoteException {
final ActivityStack stack = createStack();