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
|
* 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,20 +106,30 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addTask(Task t) {
|
void addTask(Task t) {
|
||||||
|
if (t.mTaskAppearedSent) return;
|
||||||
|
|
||||||
|
if (!mOrganizedTasks.contains(t)) {
|
||||||
mOrganizedTasks.add(t);
|
mOrganizedTasks.add(t);
|
||||||
|
}
|
||||||
|
if (t.taskAppearedReady()) {
|
||||||
try {
|
try {
|
||||||
|
t.mTaskAppearedSent = true;
|
||||||
mOrganizer.onTaskAppeared(t.getTaskInfo());
|
mOrganizer.onTaskAppeared(t.getTaskInfo());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Slog.e(TAG, "Exception sending taskAppeared callback" + e);
|
Slog.e(TAG, "Exception sending taskAppeared callback" + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void removeTask(Task t) {
|
void removeTask(Task t) {
|
||||||
|
if (t.mTaskAppearedSent) {
|
||||||
try {
|
try {
|
||||||
|
t.mTaskAppearedSent = false;
|
||||||
mOrganizer.onTaskVanished(t.getTaskInfo());
|
mOrganizer.onTaskVanished(t.getTaskInfo());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Slog.e(TAG, "Exception sending taskVanished callback" + e);
|
Slog.e(TAG, "Exception sending taskVanished callback" + e);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
mOrganizedTasks.remove(t);
|
mOrganizedTasks.remove(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user