diff options
| author | 2023-09-01 20:39:14 +0000 | |
|---|---|---|
| committer | 2023-09-01 20:39:14 +0000 | |
| commit | 0f78d29c0169e3ccabbee715b8e79107025e4123 (patch) | |
| tree | 3b8e303cce2c4b88746d4fc60108f9d20eaffef6 | |
| parent | 41e4ebf022a5baaa14c17e7b63f2ebd18afc66a4 (diff) | |
| parent | 2ee01372e47d48bc7818eb525671522f9f549128 (diff) | |
Merge "Use the task windowing mode to determine inheritance" into udc-qpr-dev
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() { |