Use display windowing mode if undefined
A undefined windowing mode prevented from reusing the
candidate task while cold start an activity into
split-screen from Recents.
Use windowing mode from its parent for always-create-stack
check if undefined.
Bug: 152408408
Test: atest TaskDisplayAreaTests
Test: cold start to enter split-screen
Change-Id: Ie0f5b69c9d09ad517b749827dbf2a5e7297b1075
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index 13e4d8b..726528c 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -755,7 +755,11 @@
*/
ActivityStack getOrCreateStack(int windowingMode, int activityType, boolean onTop,
Intent intent, Task candidateTask) {
- if (!alwaysCreateStack(windowingMode, activityType)) {
+ // Need to pass in a determined windowing mode to see if a new stack should be created,
+ // so use its parent's windowing mode if it is undefined.
+ if (!alwaysCreateStack(
+ windowingMode != WINDOWING_MODE_UNDEFINED ? windowingMode : getWindowingMode(),
+ activityType)) {
ActivityStack stack = getStack(windowingMode, activityType);
if (stack != null) {
return stack;