Merge "Update task organizer state whenever task organizer was set" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ffe3762342
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user