Loading services/core/java/com/android/server/wm/Task.java +3 −5 Original line number Diff line number Diff line Loading @@ -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); } } Loading services/core/java/com/android/server/wm/TaskOrganizerController.java +19 −9 Original line number Diff line number Diff line Loading @@ -106,20 +106,30 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { } void addTask(Task t) { 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) { 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); } Loading services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
services/core/java/com/android/server/wm/Task.java +3 −5 Original line number Diff line number Diff line Loading @@ -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); } } Loading
services/core/java/com/android/server/wm/TaskOrganizerController.java +19 −9 Original line number Diff line number Diff line Loading @@ -106,20 +106,30 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { } void addTask(Task t) { 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) { 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); } Loading
services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading