Merge "Clear "restore" mode when setting windowing mode" into main
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index 981c4c0..fe4522a 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -1254,14 +1254,16 @@
private static void executeMultiWindowFullscreenRequest(int fullscreenRequest, Task requester) {
final int targetWindowingMode;
if (fullscreenRequest == FULLSCREEN_MODE_REQUEST_ENTER) {
- requester.mMultiWindowRestoreWindowingMode =
- requester.getRequestedOverrideWindowingMode();
+ final int restoreWindowingMode = requester.getRequestedOverrideWindowingMode();
targetWindowingMode = WINDOWING_MODE_FULLSCREEN;
+ requester.setWindowingMode(targetWindowingMode);
+ // The restore windowing mode must be set after the windowing mode is set since
+ // Task#setWindowingMode resets the restore windowing mode to WINDOWING_MODE_INVALID.
+ requester.mMultiWindowRestoreWindowingMode = restoreWindowingMode;
} else {
targetWindowingMode = requester.mMultiWindowRestoreWindowingMode;
- requester.mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE;
+ requester.setWindowingMode(targetWindowingMode);
}
- requester.setWindowingMode(targetWindowingMode);
if (targetWindowingMode == WINDOWING_MODE_FULLSCREEN) {
requester.setBounds(null);
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 1ce2cd8..d79d113 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -4682,9 +4682,10 @@
@Override
public void setWindowingMode(int windowingMode) {
- // Calling Task#setWindowingMode() for leaf task since this is the a specialization of
+ // Calling Task#setWindowingMode() for leaf task since this is a specialization of
// {@link #setWindowingMode(int)} for root task.
if (!isRootTask()) {
+ mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE;
super.setWindowingMode(windowingMode);
return;
}
@@ -4728,6 +4729,9 @@
return;
}
+ // Reset multi-window restore windowing mode.
+ mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE;
+
final ActivityRecord topActivity = getTopNonFinishingActivity();
// For now, assume that the root task's windowing mode is what will actually be used