diff options
| author | 2023-09-01 21:27:01 +0000 | |
|---|---|---|
| committer | 2023-09-01 21:27:01 +0000 | |
| commit | ff93b9e8d2a1cd9ea8570b103fded95a86506edf (patch) | |
| tree | 8b2712d5404f16b4286134a2e513e9c955dd1859 | |
| parent | f357a8d0d7576a523034fb928199e16497760ce5 (diff) | |
| parent | 0f78d29c0169e3ccabbee715b8e79107025e4123 (diff) | |
Merge "Use the task windowing mode to determine inheritance" into udc-qpr-dev am: 0f78d29c01
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24596120
Change-Id: I22828d2a33ad8694a2f2e8dbd01223540da3f9a5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 36 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index ad46770432a1..bd3913063a3f 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -559,7 +559,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { return false; } - final int sourceWindowingMode = source.getWindowingMode(); + final int sourceWindowingMode = source.getTask().getWindowingMode(); if (sourceWindowingMode != WINDOWING_MODE_FULLSCREEN && sourceWindowingMode != WINDOWING_MODE_FREEFORM) { return false; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index 1ba8f7db531e..9c754b969604 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -1679,9 +1679,10 @@ public class ActivityStarterTests extends WindowTestsBase { @Test public void testResultCanceledWhenNotAllowedStartingActivity() { + final Task task = new TaskBuilder(mSupervisor).build(); final ActivityStarter starter = prepareStarter(0, false); final ActivityRecord targetRecord = new ActivityBuilder(mAtm).build(); - final ActivityRecord sourceRecord = new ActivityBuilder(mAtm).build(); + final ActivityRecord sourceRecord = new ActivityBuilder(mAtm).setTask(task).build(); targetRecord.resultTo = sourceRecord; // Abort the activity start and ensure the sourceRecord gets the result (RESULT_CANCELED). diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java index 739737eb318d..07cfbf094e5d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java @@ -678,6 +678,39 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN); } + @Test + public void testInheritsSourceTaskWindowingModeWhenActivityIsInDifferentWindowingMode() { + final TestDisplayContent fullscreenDisplay = createNewDisplayContent( + WINDOWING_MODE_FULLSCREEN); + final ActivityRecord source = createSourceActivity(fullscreenDisplay); + source.setWindowingMode(WINDOWING_MODE_PINNED); + source.getTask().setWindowingMode(WINDOWING_MODE_FREEFORM); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).calculate()); + + assertEquivalentWindowingMode(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode, + WINDOWING_MODE_FULLSCREEN); + } + + @Test + public void testDoesNotInheritsSourceTaskWindowingModeWhenActivityIsInFreeformWindowingMode() { + // The activity could end up in different windowing mode state after calling finish() + // while the task would still hold the WINDOWING_MODE_PINNED state, or in other words + // be still in the Picture in Picture mode. + final TestDisplayContent fullscreenDisplay = createNewDisplayContent( + WINDOWING_MODE_FULLSCREEN); + final ActivityRecord source = createSourceActivity(fullscreenDisplay); + source.setWindowingMode(WINDOWING_MODE_FREEFORM); + source.getTask().setWindowingMode(WINDOWING_MODE_PINNED); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setSource(source).calculate()); + + assertEquivalentWindowingMode(WINDOWING_MODE_FULLSCREEN, mResult.mWindowingMode, + WINDOWING_MODE_FULLSCREEN); + } + @Test public void testKeepsPictureInPictureLaunchModeInOptions() { |