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:
committed by
Brandon Ross Pollack
parent
9ce369b8d8
commit
3b72c868c4
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user