Merge "Fix some places that inadvertently removed split root tasks"

This commit is contained in:
TreeHugger Robot
2020-10-05 20:24:30 +00:00
committed by Android (Google) Code Review
3 changed files with 30 additions and 7 deletions

View File

@@ -144,11 +144,11 @@ class LaunchParamsController {
mTmpParams.mPreferredTaskDisplayArea, true /* onTop */);
}
if (mTmpParams.hasWindowingMode()
&& mTmpParams.mWindowingMode != task.getRootTask().getWindowingMode()) {
if (mTmpParams.hasWindowingMode() && task.isRootTask()
&& mTmpParams.mWindowingMode != task.getWindowingMode()) {
final int activityType = activity != null
? activity.getActivityType() : task.getActivityType();
task.getRootTask().setWindowingMode(task.getDisplayArea().validateWindowingMode(
task.setWindowingMode(task.getDisplayArea().validateWindowingMode(
mTmpParams.mWindowingMode, activity, task, activityType));
}

View File

@@ -1305,10 +1305,9 @@ final class TaskDisplayArea extends DisplayArea<Task> {
final int windowingMode = windowingModes[j];
for (int i = getStackCount() - 1; i >= 0; --i) {
final Task stack = getStackAt(i);
if (!stack.isActivityTypeStandardOrUndefined()) {
continue;
}
if (stack.getWindowingMode() != windowingMode) {
if (stack.mCreatedByOrganizer
|| !stack.isActivityTypeStandardOrUndefined()
|| stack.getWindowingMode() != windowingMode) {
continue;
}
stacks.add(stack);

View File

@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
import static android.view.Display.INVALID_DISPLAY;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
@@ -318,6 +319,29 @@ public class LaunchParamsControllerTests extends WindowTestsBase {
assertEquals(windowingMode, afterWindowMode);
}
/**
* Ensures that {@link LaunchParamsModifier} doesn't alter non-root tasks' windowingMode.
*/
@Test
public void testLayoutNonRootTaskWindowingModeChange() {
final LaunchParams params = new LaunchParams();
final int windowingMode = WINDOWING_MODE_FREEFORM;
params.mWindowingMode = windowingMode;
final InstrumentedPositioner positioner = new InstrumentedPositioner(RESULT_DONE, params);
final Task task = new TaskBuilder(mAtm.mStackSupervisor).setCreateParentTask(true).build();
task.getRootTask().setWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
mController.registerModifier(positioner);
final int beforeWindowMode = task.getWindowingMode();
assertNotEquals(windowingMode, beforeWindowMode);
mController.layoutTask(task, null /* windowLayout */);
final int afterWindowMode = task.getWindowingMode();
assertEquals(afterWindowMode, beforeWindowMode);
}
/**
* Ensures that {@link LaunchParamsModifier} requests specifying bounds during
* layout are honored if window is in freeform.