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

Change-Id: I256cfb0b2af6a3872fbc8bb8c1945a76c666f6de
This commit is contained in:
TreeHugger Robot
2020-04-08 04:50:51 +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 * Any time any of these conditions are updated, the updating code should call
* sendTaskAppeared. * sendTaskAppeared.
*/ */
private boolean taskAppearedReady() { boolean taskAppearedReady() {
return mSurfaceControl != null && mTaskOrganizer != null && getHasBeenVisible(); return mSurfaceControl != null && mTaskOrganizer != null && getHasBeenVisible();
} }
private void sendTaskAppeared() { private void sendTaskAppeared() {
if (taskAppearedReady() && !mTaskAppearedSent) { if (mTaskOrganizer != null) {
mTaskAppearedSent = true;
mAtmService.mTaskOrganizerController.onTaskAppeared(mTaskOrganizer, this); mAtmService.mTaskOrganizerController.onTaskAppeared(mTaskOrganizer, this);
} }
} }
private void sendTaskVanished() { private void sendTaskVanished() {
if (mTaskOrganizer != null && mTaskAppearedSent) { if (mTaskOrganizer != null) {
mTaskAppearedSent = false;
mAtmService.mTaskOrganizerController.onTaskVanished(mTaskOrganizer, this); mAtmService.mTaskOrganizerController.onTaskVanished(mTaskOrganizer, this);
} }
} }

View File

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

View File

@@ -191,6 +191,21 @@ public class TaskOrganizerTests extends WindowTestsBase {
verify(organizer2).onTaskAppeared(any()); 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 @Test
public void testClearOrganizer() throws RemoteException { public void testClearOrganizer() throws RemoteException {
final ActivityStack stack = createStack(); final ActivityStack stack = createStack();