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

Commit 59624b21 authored by Rob Carr's avatar Rob Carr Committed by Android (Google) Code Review
Browse files

Merge "BLASTSyncEngine: Skip invisible windows" into rvc-dev

parents 0b6dcc18 cba6a726
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -5696,6 +5696,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
    @Override
    boolean prepareForSync(BLASTSyncEngine.TransactionReadyListener waitingListener,
            int waitingId) {
        if (!isVisible()) {
            return false;
        }
        mWaitingListener = waitingListener;
        mWaitingSyncId = waitingId;
        mUsingBLASTSyncTransaction = true;
+23 −0
Original line number Diff line number Diff line
@@ -551,6 +551,7 @@ public class TaskOrganizerTests extends WindowTestsBase {
        final Task task = createTaskInStack(stackController1, 0 /* userId */);
        final ITaskOrganizer organizer = registerMockOrganizer();
        final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window");
        makeWindowVisible(w);

        BLASTSyncEngine bse = new BLASTSyncEngine();

@@ -568,6 +569,28 @@ public class TaskOrganizerTests extends WindowTestsBase {
            .transactionReady(anyInt(), any());
    }

    @Test
    public void testBLASTCallbackWithInvisibleWindow() {
        final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
        final Task task = createTaskInStack(stackController1, 0 /* userId */);
        final ITaskOrganizer organizer = registerMockOrganizer();
        final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window");

        BLASTSyncEngine bse = new BLASTSyncEngine();

        BLASTSyncEngine.TransactionReadyListener transactionListener =
            mock(BLASTSyncEngine.TransactionReadyListener.class);

        int id = bse.startSyncSet(transactionListener);
        bse.addToSyncSet(id, task);
        bse.setReady(id);

        // Since the window was invisible, the Task had no visible leaves and the sync should
        // complete as soon as we call setReady.
        verify(transactionListener)
            .transactionReady(anyInt(), any());
    }

    @Test
    public void testBLASTCallbackWithChildWindow() {
        final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent);