Loading libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +3 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -1763,10 +1763,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return; } if (container.isFinished()) { return; } if (container.isOverlay()) { updateOverlayContainer(wct, container); return; Loading libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskContainer.java +6 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -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); Loading libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java +7 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +3 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading Loading @@ -1763,10 +1763,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen return; } if (container.isFinished()) { return; } if (container.isOverlay()) { updateOverlayContainer(wct, container); return; Loading
libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskContainer.java +6 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading
libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/OverlayPresentationTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/TaskContainerTest.java +7 −4 Original line number Diff line number Diff line Loading @@ -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 Loading