diff --git a/services/core/java/com/android/server/wm/LaunchParamsPersister.java b/services/core/java/com/android/server/wm/LaunchParamsPersister.java index bf511adf0bf9a..bb50372ba019a 100644 --- a/services/core/java/com/android/server/wm/LaunchParamsPersister.java +++ b/services/core/java/com/android/server/wm/LaunchParamsPersister.java @@ -263,8 +263,8 @@ class LaunchParamsPersister { boolean changed = !Objects.equals(params.mDisplayUniqueId, info.uniqueId); params.mDisplayUniqueId = info.uniqueId; - changed |= params.mWindowingMode != task.getWindowingMode(); - params.mWindowingMode = task.getWindowingMode(); + changed |= params.mWindowingMode != task.getTaskDisplayArea().getWindowingMode(); + params.mWindowingMode = task.getTaskDisplayArea().getWindowingMode(); if (task.mLastNonFullscreenBounds != null) { changed |= !Objects.equals(params.mBounds, task.mLastNonFullscreenBounds); diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 6882e4c1d557a..8c6de8e6f6387 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -2244,10 +2244,11 @@ class Task extends TaskFragment { return; } - // Don't persist state if display isn't in freeform mode. Then the task will be launched - // back to its last state in a freeform display when it's launched in a freeform display - // next time. - if (getWindowConfiguration().getDisplayWindowingMode() != WINDOWING_MODE_FREEFORM) { + // Don't persist state if Task Display Area isn't in freeform mode. Then the task will be + // launched back to its last state in a freeform Task Display Area when it's launched in a + // freeform Task Display Area next time. + if (getTaskDisplayArea() == null + || getTaskDisplayArea().getWindowingMode() != WINDOWING_MODE_FREEFORM) { return; } diff --git a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java index 7cb7c79d63a08..43fc1c43d6ba2 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/LaunchParamsPersisterTests.java @@ -111,6 +111,7 @@ public class LaunchParamsPersisterTests extends WindowTestsBase { mDisplayUniqueId = "test:" + sNextUniqueId++; mTestDisplay = new TestDisplayContent.Builder(mAtm, 1000, 1500) .setUniqueId(mDisplayUniqueId).build(); + mTestDisplay.getDefaultTaskDisplayArea().setWindowingMode(TEST_WINDOWING_MODE); when(mRootWindowContainer.getDisplayContent(eq(mDisplayUniqueId))) .thenReturn(mTestDisplay); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 5208e5a2dc2f3..28241d30e1680 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -1328,17 +1328,16 @@ public class TaskTests extends WindowTestsBase { spyOn(persister); final Task task = getTestTask(); - task.setHasBeenVisible(false); + task.setHasBeenVisible(true); task.getDisplayContent() .getDefaultTaskDisplayArea() - .setWindowingMode(WindowConfiguration.WINDOWING_MODE_FREEFORM); - task.getRootTask().setWindowingMode(WINDOWING_MODE_FULLSCREEN); + .setWindowingMode(WINDOWING_MODE_FREEFORM); + task.getRootTask().setWindowingMode(WINDOWING_MODE_FREEFORM); final DisplayContent oldDisplay = task.getDisplayContent(); LaunchParamsController.LaunchParams params = new LaunchParamsController.LaunchParams(); - params.mWindowingMode = WINDOWING_MODE_UNDEFINED; persister.getLaunchParams(task, null, params); - assertEquals(WINDOWING_MODE_UNDEFINED, params.mWindowingMode); + assertEquals(WINDOWING_MODE_FREEFORM, params.mWindowingMode); task.setHasBeenVisible(true); task.removeImmediately(); @@ -1346,7 +1345,7 @@ public class TaskTests extends WindowTestsBase { verify(persister).saveTask(task, oldDisplay); persister.getLaunchParams(task, null, params); - assertEquals(WINDOWING_MODE_FULLSCREEN, params.mWindowingMode); + assertEquals(WINDOWING_MODE_FREEFORM, params.mWindowingMode); } @Test