Added a simple fix to override persisted window mode.

In Task.java we havent updated to check Task Display Area instead of
display to tell if we should or should not persist the windowing mode.
This corrects that.

Bug: 265114439
Test: Manually tested, open the app in tablet mode, close, then open in
desktop mode and verfiy it isnt full screen

Change-Id: Ice3462e4dda92dd3695a3a1eea01d58a5ca9d753
This commit is contained in:
Brandon Pollack
2023-02-13 04:23:15 +00:00
committed by Brandon Ross Pollack
parent 9ce369b8d8
commit 3b72c868c4
4 changed files with 13 additions and 12 deletions

View File

@@ -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);

View File

@@ -2277,10 +2277,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;
}

View File

@@ -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);

View File

@@ -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