Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffe37623 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update task organizer state whenever task organizer was set" into rvc-dev

parents a68d92a8 9d35a3ac
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -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);
        }
   }
+19 −9
Original line number Diff line number Diff line
@@ -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);
        }

+15 −0
Original line number Diff line number Diff line
@@ -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();