diff options
Diffstat (limited to 'libs/WindowManager')
10 files changed, 54 insertions, 234 deletions
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java index c9a0d7d99cc6..0ed23cb9ba6d 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java @@ -24,9 +24,9 @@ import static androidx.window.extensions.embedding.SplitContainer.getFinishSecon import static androidx.window.extensions.embedding.SplitContainer.isStickyPlaceholderRule; import static androidx.window.extensions.embedding.SplitContainer.shouldFinishAssociatedContainerWhenAdjacent; import static androidx.window.extensions.embedding.SplitContainer.shouldFinishAssociatedContainerWhenStacked; -import static androidx.window.extensions.embedding.SplitPresenter.RESULT_EXPAND_FAILED_NO_TF_INFO; +import static androidx.window.extensions.embedding.SplitPresenter.boundsSmallerThanMinDimensions; import static androidx.window.extensions.embedding.SplitPresenter.getActivityIntentMinDimensionsPair; -import static androidx.window.extensions.embedding.SplitPresenter.getNonEmbeddedActivityBounds; +import static androidx.window.extensions.embedding.SplitPresenter.getMinDimensions; import static androidx.window.extensions.embedding.SplitPresenter.shouldShowSideBySide; import android.app.Activity; @@ -581,9 +581,8 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } /** Finds the activity below the given activity. */ - @VisibleForTesting @Nullable - Activity findActivityBelow(@NonNull Activity activity) { + private Activity findActivityBelow(@NonNull Activity activity) { Activity activityBelow = null; final TaskFragmentContainer container = getContainerWithActivity(activity); if (container != null) { @@ -621,21 +620,21 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen // Can launch in the existing secondary container if the rules share the same // presentation. final TaskFragmentContainer secondaryContainer = splitContainer.getSecondaryContainer(); - if (secondaryContainer == getContainerWithActivity(secondaryActivity)) { + if (secondaryContainer == getContainerWithActivity(secondaryActivity) + && !boundsSmallerThanMinDimensions(secondaryContainer.getLastRequestedBounds(), + getMinDimensions(secondaryActivity))) { // The activity is already in the target TaskFragment. return true; } secondaryContainer.addPendingAppearedActivity(secondaryActivity); final WindowContainerTransaction wct = new WindowContainerTransaction(); - if (mPresenter.expandSplitContainerIfNeeded(wct, splitContainer, primaryActivity, - secondaryActivity, null /* secondaryIntent */) - != RESULT_EXPAND_FAILED_NO_TF_INFO) { - wct.reparentActivityToTaskFragment( - secondaryContainer.getTaskFragmentToken(), - secondaryActivity.getActivityToken()); - mPresenter.applyTransaction(wct); - return true; - } + mPresenter.expandSplitContainerIfNeeded(wct, splitContainer, primaryActivity, + secondaryActivity, null /* secondaryIntent */); + wct.reparentActivityToTaskFragment( + secondaryContainer.getTaskFragmentToken(), + secondaryActivity.getActivityToken()); + mPresenter.applyTransaction(wct); + return true; } // Create new split pair. mPresenter.createNewSplitContainer(primaryActivity, secondaryActivity, splitRule); @@ -643,11 +642,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } private void onActivityConfigurationChanged(@NonNull Activity activity) { - if (activity.isFinishing()) { - // Do nothing if the activity is currently finishing. - return; - } - if (isInPictureInPicture(activity)) { // We don't embed activity when it is in PIP. return; @@ -806,9 +800,9 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen if (splitContainer != null && existingContainer == splitContainer.getPrimaryContainer() && (canReuseContainer(splitRule, splitContainer.getSplitRule()) // TODO(b/231845476) we should always respect clearTop. - || !respectClearTop) - && mPresenter.expandSplitContainerIfNeeded(wct, splitContainer, primaryActivity, - null /* secondaryActivity */, intent) != RESULT_EXPAND_FAILED_NO_TF_INFO) { + || !respectClearTop)) { + mPresenter.expandSplitContainerIfNeeded(wct, splitContainer, primaryActivity, + null /* secondaryActivity */, intent); // Can launch in the existing secondary container if the rules share the same // presentation. return splitContainer.getSecondaryContainer(); @@ -878,7 +872,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen pendingAppearedIntent, taskContainer, this); if (!taskContainer.isTaskBoundsInitialized()) { // Get the initial bounds before the TaskFragment has appeared. - final Rect taskBounds = getNonEmbeddedActivityBounds(activityInTask); + final Rect taskBounds = SplitPresenter.getTaskBoundsFromActivity(activityInTask); if (!taskContainer.setTaskBounds(taskBounds)) { Log.w(TAG, "Can't find bounds from activity=" + activityInTask); } @@ -1121,10 +1115,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } boolean launchPlaceholderIfNecessary(@NonNull Activity activity, boolean isOnCreated) { - if (activity.isFinishing()) { - return false; - } - final TaskFragmentContainer container = getContainerWithActivity(activity); // Don't launch placeholder if the container is occluded. if (container != null && container != getTopActiveContainer(container.getTaskId())) { diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java index a89847a30d20..63be98ebe175 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java @@ -65,41 +65,6 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { }) private @interface Position {} - /** - * Result of {@link #expandSplitContainerIfNeeded(WindowContainerTransaction, SplitContainer, - * Activity, Activity, Intent)}. - * No need to expand the splitContainer because screen is big enough to - * {@link #shouldShowSideBySide(Rect, SplitRule, Pair)} and minimum dimensions is satisfied. - */ - static final int RESULT_NOT_EXPANDED = 0; - /** - * Result of {@link #expandSplitContainerIfNeeded(WindowContainerTransaction, SplitContainer, - * Activity, Activity, Intent)}. - * The splitContainer should be expanded. It is usually because minimum dimensions is not - * satisfied. - * @see #shouldShowSideBySide(Rect, SplitRule, Pair) - */ - static final int RESULT_EXPANDED = 1; - /** - * Result of {@link #expandSplitContainerIfNeeded(WindowContainerTransaction, SplitContainer, - * Activity, Activity, Intent)}. - * The splitContainer should be expanded, but the client side hasn't received - * {@link android.window.TaskFragmentInfo} yet. Fallback to create new expanded SplitContainer - * instead. - */ - static final int RESULT_EXPAND_FAILED_NO_TF_INFO = 2; - - /** - * Result of {@link #expandSplitContainerIfNeeded(WindowContainerTransaction, SplitContainer, - * Activity, Activity, Intent)} - */ - @IntDef(value = { - RESULT_NOT_EXPANDED, - RESULT_EXPANDED, - RESULT_EXPAND_FAILED_NO_TF_INFO, - }) - private @interface ResultCode {} - private final SplitController mController; SplitPresenter(@NonNull Executor executor, SplitController controller) { @@ -434,19 +399,15 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { /** * Expands the split container if the current split bounds are smaller than the Activity or * Intent that is added to the container. - * - * @return the {@link ResultCode} based on {@link #shouldShowSideBySide(Rect, SplitRule, Pair)} - * and if {@link android.window.TaskFragmentInfo} has reported to the client side. */ - @ResultCode - int expandSplitContainerIfNeeded(@NonNull WindowContainerTransaction wct, + void expandSplitContainerIfNeeded(@NonNull WindowContainerTransaction wct, @NonNull SplitContainer splitContainer, @NonNull Activity primaryActivity, @Nullable Activity secondaryActivity, @Nullable Intent secondaryIntent) { if (secondaryActivity == null && secondaryIntent == null) { throw new IllegalArgumentException("Either secondaryActivity or secondaryIntent must be" + " non-null."); } - final Rect taskBounds = getParentContainerBounds(primaryActivity); + final Rect taskBounds = getTaskBoundsFromActivity(primaryActivity); final Pair<Size, Size> minDimensionsPair; if (secondaryActivity != null) { minDimensionsPair = getActivitiesMinDimensionsPair(primaryActivity, secondaryActivity); @@ -456,17 +417,11 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { } // Expand the splitContainer if minimum dimensions are not satisfied. if (!shouldShowSideBySide(taskBounds, splitContainer.getSplitRule(), minDimensionsPair)) { - // If the client side hasn't received TaskFragmentInfo yet, we can't change TaskFragment - // bounds. Return failure to create a new SplitContainer which fills task bounds. - if (splitContainer.getPrimaryContainer().getInfo() == null - || splitContainer.getSecondaryContainer().getInfo() == null) { - return RESULT_EXPAND_FAILED_NO_TF_INFO; - } - expandTaskFragment(wct, splitContainer.getPrimaryContainer().getTaskFragmentToken()); - expandTaskFragment(wct, splitContainer.getSecondaryContainer().getTaskFragmentToken()); - return RESULT_EXPANDED; + expandTaskFragment(wct, splitContainer.getPrimaryContainer() + .getTaskFragmentToken()); + expandTaskFragment(wct, splitContainer.getSecondaryContainer() + .getTaskFragmentToken()); } - return RESULT_NOT_EXPANDED; } static boolean shouldShowSideBySide(@NonNull Rect parentBounds, @NonNull SplitRule rule) { @@ -638,19 +593,11 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { if (container != null) { return getParentContainerBounds(container); } - // Obtain bounds from Activity instead because the Activity hasn't been embedded yet. - return getNonEmbeddedActivityBounds(activity); + return getTaskBoundsFromActivity(activity); } - /** - * Obtains the bounds from a non-embedded Activity. - * <p> - * Note that callers should use {@link #getParentContainerBounds(Activity)} instead for most - * cases unless we want to obtain task bounds before - * {@link TaskContainer#isTaskBoundsInitialized()}. - */ @NonNull - static Rect getNonEmbeddedActivityBounds(@NonNull Activity activity) { + static Rect getTaskBoundsFromActivity(@NonNull Activity activity) { final WindowConfiguration windowConfiguration = activity.getResources().getConfiguration().windowConfiguration; if (!activity.isInMultiWindowMode()) { diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java index c4f37091a491..1ac33173668b 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentAnimationRunner.java @@ -83,9 +83,9 @@ class TaskFragmentAnimationRunner extends IRemoteAnimationRunner.Stub { } @Override - public void onAnimationCancelled(boolean isKeyguardOccluded) { + public void onAnimationCancelled() { if (TaskFragmentAnimationController.DEBUG) { - Log.v(TAG, "onAnimationCancelled: isKeyguardOccluded=" + isKeyguardOccluded); + Log.v(TAG, "onAnimationCancelled"); } mHandler.post(this::cancelAnimation); } diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java index effc1a3ef3ea..3ef328141907 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java @@ -58,21 +58,13 @@ public class EmbeddingTestUtils { /** Creates a rule to always split the given activity and the given intent. */ static SplitRule createSplitRule(@NonNull Activity primaryActivity, @NonNull Intent secondaryIntent) { - return createSplitRule(primaryActivity, secondaryIntent, true /* clearTop */); - } - - /** Creates a rule to always split the given activity and the given intent. */ - static SplitRule createSplitRule(@NonNull Activity primaryActivity, - @NonNull Intent secondaryIntent, boolean clearTop) { final Pair<Activity, Intent> targetPair = new Pair<>(primaryActivity, secondaryIntent); return new SplitPairRule.Builder( activityPair -> false, targetPair::equals, w -> true) .setSplitRatio(SPLIT_RATIO) - .setShouldClearTop(clearTop) - .setFinishPrimaryWithSecondary(DEFAULT_FINISH_PRIMARY_WITH_SECONDARY) - .setFinishSecondaryWithPrimary(DEFAULT_FINISH_SECONDARY_WITH_PRIMARY) + .setShouldClearTop(true) .build(); } @@ -84,14 +76,6 @@ public class EmbeddingTestUtils { true /* clearTop */); } - /** Creates a rule to always split the given activities. */ - static SplitRule createSplitRule(@NonNull Activity primaryActivity, - @NonNull Activity secondaryActivity, boolean clearTop) { - return createSplitRule(primaryActivity, secondaryActivity, - DEFAULT_FINISH_PRIMARY_WITH_SECONDARY, DEFAULT_FINISH_SECONDARY_WITH_PRIMARY, - clearTop); - } - /** Creates a rule to always split the given activities with the given finish behaviors. */ static SplitRule createSplitRule(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity, int finishPrimaryWithSecondary, diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java index ad496a906a33..982ab8043bbc 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java @@ -35,7 +35,6 @@ import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; @@ -438,50 +437,6 @@ public class SplitControllerTest { } @Test - public void testResolveStartActivityIntent_shouldExpandSplitContainer() { - final Intent intent = new Intent().setComponent( - new ComponentName(ApplicationProvider.getApplicationContext(), - MinimumDimensionActivity.class)); - setupSplitRule(mActivity, intent, false /* clearTop */); - final Activity secondaryActivity = createMockActivity(); - addSplitTaskFragments(mActivity, secondaryActivity, false /* clearTop */); - - final TaskFragmentContainer container = mSplitController.resolveStartActivityIntent( - mTransaction, TASK_ID, intent, mActivity); - final TaskFragmentContainer primaryContainer = mSplitController.getContainerWithActivity( - mActivity); - - assertNotNull(mSplitController.getActiveSplitForContainers(primaryContainer, container)); - assertTrue(primaryContainer.areLastRequestedBoundsEqual(null)); - assertTrue(container.areLastRequestedBoundsEqual(null)); - assertEquals(container, mSplitController.getContainerWithActivity(secondaryActivity)); - } - - @Test - public void testResolveStartActivityIntent_noInfo_shouldCreateSplitContainer() { - final Intent intent = new Intent().setComponent( - new ComponentName(ApplicationProvider.getApplicationContext(), - MinimumDimensionActivity.class)); - setupSplitRule(mActivity, intent, false /* clearTop */); - final Activity secondaryActivity = createMockActivity(); - addSplitTaskFragments(mActivity, secondaryActivity, false /* clearTop */); - - final TaskFragmentContainer secondaryContainer = mSplitController - .getContainerWithActivity(secondaryActivity); - secondaryContainer.mInfo = null; - - final TaskFragmentContainer container = mSplitController.resolveStartActivityIntent( - mTransaction, TASK_ID, intent, mActivity); - final TaskFragmentContainer primaryContainer = mSplitController.getContainerWithActivity( - mActivity); - - assertNotNull(mSplitController.getActiveSplitForContainers(primaryContainer, container)); - assertTrue(primaryContainer.areLastRequestedBoundsEqual(null)); - assertTrue(container.areLastRequestedBoundsEqual(null)); - assertNotEquals(container, secondaryContainer); - } - - @Test public void testPlaceActivityInTopContainer() { mSplitController.placeActivityInTopContainer(mActivity); @@ -852,12 +807,17 @@ public class SplitControllerTest { final Activity activityBelow = createMockActivity(); setupSplitRule(activityBelow, mActivity); - doReturn(createActivityInfoWithMinDimensions()).when(mActivity).getActivityInfo(); + ActivityInfo aInfo = new ActivityInfo(); + final Rect secondaryBounds = getSplitBounds(false /* isPrimary */); + aInfo.windowLayout = new ActivityInfo.WindowLayout(0, 0, 0, 0, 0, + secondaryBounds.width() + 1, secondaryBounds.height() + 1); + doReturn(aInfo).when(mActivity).getActivityInfo(); final TaskFragmentContainer container = mSplitController.newContainer(activityBelow, TASK_ID); container.addPendingAppearedActivity(mActivity); + // Allow to split as primary. boolean result = mSplitController.resolveActivityToContainer(mActivity, false /* isOnReparent */); @@ -866,27 +826,6 @@ public class SplitControllerTest { } @Test - public void testResolveActivityToContainer_minDimensions_shouldExpandSplitContainer() { - final Activity primaryActivity = createMockActivity(); - final Activity secondaryActivity = createMockActivity(); - addSplitTaskFragments(primaryActivity, secondaryActivity, false /* clearTop */); - - setupSplitRule(primaryActivity, mActivity, false /* clearTop */); - doReturn(createActivityInfoWithMinDimensions()).when(mActivity).getActivityInfo(); - doReturn(secondaryActivity).when(mSplitController).findActivityBelow(eq(mActivity)); - - clearInvocations(mSplitPresenter); - boolean result = mSplitController.resolveActivityToContainer(mActivity, - false /* isOnReparent */); - - assertTrue(result); - assertSplitPair(primaryActivity, mActivity, true /* matchParentBounds */); - assertEquals(mSplitController.getContainerWithActivity(secondaryActivity), - mSplitController.getContainerWithActivity(mActivity)); - verify(mSplitPresenter, never()).createNewSplitContainer(any(), any(), any()); - } - - @Test public void testResolveActivityToContainer_inUnknownTaskFragment() { doReturn(new Binder()).when(mSplitController).getInitialTaskFragmentToken(mActivity); @@ -1002,41 +941,23 @@ public class SplitControllerTest { /** Setups a rule to always split the given activities. */ private void setupSplitRule(@NonNull Activity primaryActivity, @NonNull Intent secondaryIntent) { - setupSplitRule(primaryActivity, secondaryIntent, true /* clearTop */); - } - - /** Setups a rule to always split the given activities. */ - private void setupSplitRule(@NonNull Activity primaryActivity, - @NonNull Intent secondaryIntent, boolean clearTop) { - final SplitRule splitRule = createSplitRule(primaryActivity, secondaryIntent, clearTop); + final SplitRule splitRule = createSplitRule(primaryActivity, secondaryIntent); mSplitController.setEmbeddingRules(Collections.singleton(splitRule)); } /** Setups a rule to always split the given activities. */ private void setupSplitRule(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity) { - setupSplitRule(primaryActivity, secondaryActivity, true /* clearTop */); - } - - /** Setups a rule to always split the given activities. */ - private void setupSplitRule(@NonNull Activity primaryActivity, - @NonNull Activity secondaryActivity, boolean clearTop) { - final SplitRule splitRule = createSplitRule(primaryActivity, secondaryActivity, clearTop); + final SplitRule splitRule = createSplitRule(primaryActivity, secondaryActivity); mSplitController.setEmbeddingRules(Collections.singleton(splitRule)); } /** Adds a pair of TaskFragments as split for the given activities. */ private void addSplitTaskFragments(@NonNull Activity primaryActivity, @NonNull Activity secondaryActivity) { - addSplitTaskFragments(primaryActivity, secondaryActivity, true /* clearTop */); - } - - /** Adds a pair of TaskFragments as split for the given activities. */ - private void addSplitTaskFragments(@NonNull Activity primaryActivity, - @NonNull Activity secondaryActivity, boolean clearTop) { registerSplitPair(createMockTaskFragmentContainer(primaryActivity), createMockTaskFragmentContainer(secondaryActivity), - createSplitRule(primaryActivity, secondaryActivity, clearTop)); + createSplitRule(primaryActivity, secondaryActivity)); } /** Registers the two given TaskFragments as split pair. */ @@ -1087,18 +1008,16 @@ public class SplitControllerTest { if (primaryContainer.mInfo != null) { final Rect primaryBounds = matchParentBounds ? new Rect() : getSplitBounds(true /* isPrimary */); - final int windowingMode = matchParentBounds ? WINDOWING_MODE_UNDEFINED - : WINDOWING_MODE_MULTI_WINDOW; assertTrue(primaryContainer.areLastRequestedBoundsEqual(primaryBounds)); - assertTrue(primaryContainer.isLastRequestedWindowingModeEqual(windowingMode)); + assertTrue(primaryContainer.isLastRequestedWindowingModeEqual( + WINDOWING_MODE_MULTI_WINDOW)); } if (secondaryContainer.mInfo != null) { final Rect secondaryBounds = matchParentBounds ? new Rect() : getSplitBounds(false /* isPrimary */); - final int windowingMode = matchParentBounds ? WINDOWING_MODE_UNDEFINED - : WINDOWING_MODE_MULTI_WINDOW; assertTrue(secondaryContainer.areLastRequestedBoundsEqual(secondaryBounds)); - assertTrue(secondaryContainer.isLastRequestedWindowingModeEqual(windowingMode)); + assertTrue(secondaryContainer.isLastRequestedWindowingModeEqual( + WINDOWING_MODE_MULTI_WINDOW)); } } } diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java index d79319666c01..029503cd70d2 100644 --- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java +++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java @@ -21,15 +21,11 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static androidx.window.extensions.embedding.EmbeddingTestUtils.TASK_BOUNDS; import static androidx.window.extensions.embedding.EmbeddingTestUtils.TASK_ID; import static androidx.window.extensions.embedding.EmbeddingTestUtils.createActivityInfoWithMinDimensions; -import static androidx.window.extensions.embedding.EmbeddingTestUtils.createMockTaskFragmentInfo; import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitRule; import static androidx.window.extensions.embedding.EmbeddingTestUtils.getSplitBounds; import static androidx.window.extensions.embedding.SplitPresenter.POSITION_END; import static androidx.window.extensions.embedding.SplitPresenter.POSITION_FILL; import static androidx.window.extensions.embedding.SplitPresenter.POSITION_START; -import static androidx.window.extensions.embedding.SplitPresenter.RESULT_EXPANDED; -import static androidx.window.extensions.embedding.SplitPresenter.RESULT_EXPAND_FAILED_NO_TF_INFO; -import static androidx.window.extensions.embedding.SplitPresenter.RESULT_NOT_EXPANDED; import static androidx.window.extensions.embedding.SplitPresenter.getBoundsForPosition; import static androidx.window.extensions.embedding.SplitPresenter.getMinDimensions; import static androidx.window.extensions.embedding.SplitPresenter.shouldShowSideBySide; @@ -55,7 +51,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; -import android.os.IBinder; import android.platform.test.annotations.Presubmit; import android.util.Pair; import android.util.Size; @@ -217,31 +212,26 @@ public class SplitPresenterTest { mPresenter.expandSplitContainerIfNeeded(mTransaction, splitContainer, mActivity, null /* secondaryActivity */, null /* secondaryIntent */)); - assertEquals(RESULT_NOT_EXPANDED, mPresenter.expandSplitContainerIfNeeded(mTransaction, - splitContainer, mActivity, secondaryActivity, null /* secondaryIntent */)); + mPresenter.expandSplitContainerIfNeeded(mTransaction, splitContainer, mActivity, + secondaryActivity, null /* secondaryIntent */); + verify(mPresenter, never()).expandTaskFragment(any(), any()); doReturn(createActivityInfoWithMinDimensions()).when(secondaryActivity).getActivityInfo(); - assertEquals(RESULT_EXPAND_FAILED_NO_TF_INFO, mPresenter.expandSplitContainerIfNeeded( - mTransaction, splitContainer, mActivity, secondaryActivity, - null /* secondaryIntent */)); - primaryTf.setInfo(createMockTaskFragmentInfo(primaryTf, mActivity)); - secondaryTf.setInfo(createMockTaskFragmentInfo(secondaryTf, secondaryActivity)); + mPresenter.expandSplitContainerIfNeeded(mTransaction, splitContainer, mActivity, + secondaryActivity, null /* secondaryIntent */); - assertEquals(RESULT_EXPANDED, mPresenter.expandSplitContainerIfNeeded(mTransaction, - splitContainer, mActivity, secondaryActivity, null /* secondaryIntent */)); verify(mPresenter).expandTaskFragment(eq(mTransaction), eq(primaryTf.getTaskFragmentToken())); verify(mPresenter).expandTaskFragment(eq(mTransaction), eq(secondaryTf.getTaskFragmentToken())); clearInvocations(mPresenter); + mPresenter.expandSplitContainerIfNeeded(mTransaction, splitContainer, mActivity, + null /* secondaryActivity */, new Intent(ApplicationProvider + .getApplicationContext(), MinimumDimensionActivity.class)); - assertEquals(RESULT_EXPANDED, mPresenter.expandSplitContainerIfNeeded(mTransaction, - splitContainer, mActivity, null /* secondaryActivity */, - new Intent(ApplicationProvider.getApplicationContext(), - MinimumDimensionActivity.class))); verify(mPresenter).expandTaskFragment(eq(mTransaction), eq(primaryTf.getTaskFragmentToken())); verify(mPresenter).expandTaskFragment(eq(mTransaction), @@ -256,7 +246,6 @@ public class SplitPresenterTest { doReturn(mActivityResources).when(activity).getResources(); doReturn(activityConfig).when(mActivityResources).getConfiguration(); doReturn(new ActivityInfo()).when(activity).getActivityInfo(); - doReturn(mock(IBinder.class)).when(activity).getActivityToken(); return activity; } } diff --git a/libs/WindowManager/Shell/res/values-television/config.xml b/libs/WindowManager/Shell/res/values-television/config.xml index cc0333efd82b..86ca65526336 100644 --- a/libs/WindowManager/Shell/res/values-television/config.xml +++ b/libs/WindowManager/Shell/res/values-television/config.xml @@ -43,13 +43,4 @@ <!-- Time (duration in milliseconds) that the shell waits for an app to close the PiP by itself if a custom action is present before closing it. --> <integer name="config_pipForceCloseDelay">5000</integer> - - <!-- Animation duration when exit starting window: fade out icon --> - <integer name="starting_window_app_reveal_icon_fade_out_duration">0</integer> - - <!-- Animation duration when exit starting window: reveal app --> - <integer name="starting_window_app_reveal_anim_delay">0</integer> - - <!-- Animation duration when exit starting window: reveal app --> - <integer name="starting_window_app_reveal_anim_duration">0</integer> </resources> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 30f316efb2b3..41e23647a6a4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -456,10 +456,10 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, } @Override - public void onAnimationCancelled(boolean isKeyguardOccluded) { + public void onAnimationCancelled() { onRemoteAnimationFinishedOrCancelled(evictWct); try { - adapter.getRunner().onAnimationCancelled(isKeyguardOccluded); + adapter.getRunner().onAnimationCancelled(); } catch (RemoteException e) { Slog.e(TAG, "Error starting remote animation", e); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java index de0feeecad4b..ac25c7510931 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java @@ -345,9 +345,9 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, } @Override - public void onAnimationCancelled(boolean isKeyguardOccluded) { + public void onAnimationCancelled() { try { - adapter.getRunner().onAnimationCancelled(isKeyguardOccluded); + adapter.getRunner().onAnimationCancelled(); } catch (RemoteException e) { Slog.e(TAG, "Error starting remote animation", e); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java index 61e92f355dc2..61e11e877b90 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/LegacyTransitions.java @@ -107,7 +107,7 @@ public class LegacyTransitions { } @Override - public void onAnimationCancelled(boolean isKeyguardOccluded) throws RemoteException { + public void onAnimationCancelled() throws RemoteException { mCancelled = true; mApps = mWallpapers = mNonApps = null; checkApply(); |