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

Commit 06a65f64 authored by Charles Chen's avatar Charles Chen Committed by Android (Google) Code Review
Browse files

Merge "Add option to exclude overlay to getTopNonFinishingActivity" into main

parents 06693f0a 01cd8bf7
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