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

Commit 01cd8bf7 authored by Charles Chen's avatar Charles Chen
Browse files

Add option to exclude overlay to getTopNonFinishingActivity

... to align with getTopNonFinishingTaskFragmentContainer

Bug: 243518738
Test: atest OverlayPresentationTest

Change-Id: I53af974e4a87d6a380792343b93b8cdadb6dc675
parent 09a3203f
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -1280,9 +1280,9 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        // Check whether the Intent should be embedded in the known Task.
        final TaskContainer taskContainer = mTaskContainers.valueAt(0);
        if (taskContainer.isInPictureInPicture()
                || taskContainer.getTopNonFinishingActivity() == null) {
                || taskContainer.getTopNonFinishingActivity(false /* includeOverlay */) == null) {
            // We don't embed activity when it is in PIP, or if we can't find any other owner
            // activity in the Task.
            // activity in non-overlay container in the Task.
            return null;
        }

@@ -1431,7 +1431,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
        } else {
            final TaskContainer taskContainer = getTaskContainer(taskId);
            activityInTask = taskContainer != null
                    ? taskContainer.getTopNonFinishingActivity()
                    ? taskContainer.getTopNonFinishingActivity(true /* includeOverlay */)
                    : null;
        }
        if (activityInTask == null) {
@@ -1763,10 +1763,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
            return;
        }

        if (container.isFinished()) {
            return;
        }

        if (container.isOverlay()) {
            updateOverlayContainer(wct, container);
            return;
+6 −2
Original line number Diff line number Diff line
@@ -235,9 +235,13 @@ class TaskContainer {
    }

    @Nullable
    Activity getTopNonFinishingActivity() {
    Activity getTopNonFinishingActivity(boolean includeOverlay) {
        for (int i = mContainers.size() - 1; i >= 0; i--) {
            final Activity activity = mContainers.get(i).getTopNonFinishingActivity();
            final TaskFragmentContainer container = mContainers.get(i);
            if (!includeOverlay && container.isOverlay()) {
                continue;
            }
            final Activity activity = container.getTopNonFinishingActivity();
            if (activity != null) {
                return activity;
            }
+11 −0
Original line number Diff line number Diff line
@@ -414,6 +414,17 @@ public class OverlayPresentationTest {
                .isEqualTo(overlayContainer);
    }

    @Test
    public void testGetTopNonFinishingActivityWithOverlay() {
        createTestOverlayContainer(TASK_ID, "test1");
        final Activity activity = createMockActivity();
        final TaskFragmentContainer container = createMockTaskFragmentContainer(activity);
        final TaskContainer task = container.getTaskContainer();

        assertThat(task.getTopNonFinishingActivity(true /* includeOverlay */)).isEqualTo(mActivity);
        assertThat(task.getTopNonFinishingActivity(false /* includeOverlay */)).isEqualTo(activity);
    }

    @Test
    public void testUpdateContainer_dontInvokeUpdateOverlayForNonOverlayContainer() {
        TaskFragmentContainer taskFragmentContainer = createMockTaskFragmentContainer(mActivity);
+7 −4
Original line number Diff line number Diff line
@@ -151,21 +151,24 @@ public class TaskContainerTest {
    @Test
    public void testGetTopNonFinishingActivity() {
        final TaskContainer taskContainer = createTestTaskContainer();
        assertNull(taskContainer.getTopNonFinishingActivity());
        assertNull(taskContainer.getTopNonFinishingActivity(true /* includeOverlay */));

        final TaskFragmentContainer tf0 = mock(TaskFragmentContainer.class);
        taskContainer.addTaskFragmentContainer(tf0);
        final Activity activity0 = mock(Activity.class);
        doReturn(activity0).when(tf0).getTopNonFinishingActivity();
        assertEquals(activity0, taskContainer.getTopNonFinishingActivity());
        assertEquals(activity0, taskContainer.getTopNonFinishingActivity(
                true /* includeOverlay */));

        final TaskFragmentContainer tf1 = mock(TaskFragmentContainer.class);
        taskContainer.addTaskFragmentContainer(tf1);
        assertEquals(activity0, taskContainer.getTopNonFinishingActivity());
        assertEquals(activity0, taskContainer.getTopNonFinishingActivity(
                true /* includeOverlay */));

        final Activity activity1 = mock(Activity.class);
        doReturn(activity1).when(tf1).getTopNonFinishingActivity();
        assertEquals(activity1, taskContainer.getTopNonFinishingActivity());
        assertEquals(activity1, taskContainer.getTopNonFinishingActivity(
                true /* includeOverlay */));
    }

    @Test