summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityStartController.java4
-rw-r--r--services/core/java/com/android/server/wm/RootWindowContainer.java4
-rw-r--r--services/core/java/com/android/server/wm/Task.java38
-rw-r--r--services/core/java/com/android/server/wm/TaskDisplayArea.java3
4 files changed, 23 insertions, 26 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index d777f3fee1a2..4e85837e9616 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -19,6 +19,7 @@ package com.android.server.wm;
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL;
@@ -191,8 +192,9 @@ public class ActivityStartController {
try {
// TODO(multi-display-area): Support starting home in a task display area
// Make sure home stack exist on display.
+ // TODO(b/153624902): Replace with TaskDisplayArea#getOrCreateRootHomeTask()
homeStack = display.getDefaultTaskDisplayArea().getOrCreateStack(
- WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, ON_TOP);
+ WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, ON_TOP);
} finally {
mSupervisor.endDeferResume();
}
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 80b8b5854966..15a09e55bb48 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -23,7 +23,6 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
@@ -1369,8 +1368,7 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
calculateDefaultMinimalSizeOfResizeableTasks();
final TaskDisplayArea defaultTaskDisplayArea = getDefaultTaskDisplayArea();
- defaultTaskDisplayArea.getOrCreateStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME,
- ON_TOP);
+ defaultTaskDisplayArea.getOrCreateRootHomeTask();
positionChildAt(POSITION_TOP, defaultTaskDisplayArea.mDisplayContent,
false /* includingParents */);
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index d31939dec509..106f0709e1ef 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -2334,32 +2334,30 @@ class Task extends WindowContainer<WindowContainer> {
return Configuration.reduceScreenLayout(sourceScreenLayout, longSize, shortSize);
}
- private void resolveOrganizedOverrideConfiguration(Configuration newParentConfig) {
+ @Override
+ void resolveOverrideConfiguration(Configuration newParentConfig) {
+ mTmpBounds.set(getResolvedOverrideConfiguration().windowConfiguration.getBounds());
super.resolveOverrideConfiguration(newParentConfig);
- if (!isOrganized()) {
- return;
- }
- final Task root = getRootTask();
- if (root == this) {
- return;
+ // Resolve override windowing mode to fullscreen for home task (even on freeform
+ // display), or split-screen-secondary if in split-screen mode.
+ int windowingMode =
+ getResolvedOverrideConfiguration().windowConfiguration.getWindowingMode();
+ if (getActivityType() == ACTIVITY_TYPE_HOME && windowingMode == WINDOWING_MODE_UNDEFINED) {
+ windowingMode = inSplitScreenWindowingMode() ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY
+ : WINDOWING_MODE_FULLSCREEN;
+ getResolvedOverrideConfiguration().windowConfiguration.setWindowingMode(windowingMode);
}
- // Ensure to have the same windowing mode for the child tasks that controlled by task org.
- getResolvedOverrideConfiguration().windowConfiguration
- .setWindowingMode(root.getWindowingMode());
- }
-
- @Override
- void resolveOverrideConfiguration(Configuration newParentConfig) {
- if (!isLeafTask() || mCreatedByOrganizer) {
- resolveOrganizedOverrideConfiguration(newParentConfig);
+ if (!isLeafTask()) {
+ // Compute configuration overrides for tasks that created by organizer, so that
+ // organizer can get the correct configuration from those tasks.
+ if (mCreatedByOrganizer) {
+ computeConfigResourceOverrides(getResolvedOverrideConfiguration(), newParentConfig);
+ }
return;
}
- mTmpBounds.set(getResolvedOverrideConfiguration().windowConfiguration.getBounds());
- resolveOrganizedOverrideConfiguration(newParentConfig);
- int windowingMode =
- getResolvedOverrideConfiguration().windowConfiguration.getWindowingMode();
+
if (windowingMode == WINDOWING_MODE_UNDEFINED) {
windowingMode = newParentConfig.windowConfiguration.getWindowingMode();
}
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index 11cfad263fb2..fee1c8019a07 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -1415,8 +1415,7 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
ActivityStack homeTask = getRootHomeTask();
if (homeTask == null && mDisplayContent.supportsSystemDecorations()
&& !mDisplayContent.isUntrustedVirtualDisplay()) {
- homeTask = createStack(WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME,
- false /* onTop */);
+ homeTask = createStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, false /* onTop */);
}
return homeTask;
}