summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2025-02-04 12:27:23 +0800
committer Riddle Hsu <riddlehsu@google.com> 2025-02-04 14:40:34 +0800
commit057754255df553c5ebb359c6346fab37635e1ae9 (patch)
treea9ee4f469ea1be6e86fe765967c4e423cb710e40
parent71378c186c95c4c4f3bea01625ed5ae5f10d2070 (diff)
Add shell command to reset ignore-orientation-request
In case some tests don't restore do default value after overriding the flag. This provides the ability for the tests that want to verify the default behavior. Bug: 391792293 Flag: EXEMPT TEST_ONLY Test: On a large screen device: adb shell cmd window set-ignore-orientation-request false adb shell cmd window set-ignore-orientation-request reset The output will be: Reset ignoreOrientationRequest to true for displayId=0 Change-Id: I35dc4e1c6a7cc23e95ddfade5a7ca17b1bdb0ebb
-rw-r--r--services/core/java/com/android/server/wm/DisplayWindowSettings.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java17
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerShellCommand.java18
3 files changed, 33 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayWindowSettings.java b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
index 4ae100857f55..b51bf4aa3116 100644
--- a/services/core/java/com/android/server/wm/DisplayWindowSettings.java
+++ b/services/core/java/com/android/server/wm/DisplayWindowSettings.java
@@ -120,7 +120,7 @@ class DisplayWindowSettings {
}
void setIgnoreOrientationRequest(@NonNull DisplayContent displayContent,
- boolean ignoreOrientationRequest) {
+ @Nullable Boolean ignoreOrientationRequest) {
final DisplayInfo displayInfo = displayContent.getDisplayInfo();
final SettingsProvider.SettingsEntry overrideSettings =
mSettingsProvider.getOverrideSettings(displayInfo);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 0e9b4233aff7..9ae50ba75482 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -4319,6 +4319,23 @@ public class WindowManagerService extends IWindowManager.Stub
}
}
+ @Nullable
+ Boolean resetIgnoreOrientationRequest(int displayId) {
+ synchronized (mGlobalLock) {
+ final DisplayContent display = mRoot.getDisplayContent(displayId);
+ if (display == null) {
+ return null;
+ }
+ display.mHasSetIgnoreOrientationRequest = false;
+ // Clear existing override settings.
+ mDisplayWindowSettings.setIgnoreOrientationRequest(display,
+ null /* ignoreOrientationRequest */);
+ // Reload from settings in case there is built-in config.
+ mDisplayWindowSettings.applyRotationSettingsToDisplayLocked(display);
+ return display.getIgnoreOrientationRequest();
+ }
+ }
+
/**
* Controls whether ignore orientation request logic in {@link DisplayArea} is disabled
* at runtime and how to optionally map some requested orientations to others.
diff --git a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
index 44f5f51eb623..924809c7b009 100644
--- a/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
+++ b/services/core/java/com/android/server/wm/WindowManagerShellCommand.java
@@ -577,6 +577,18 @@ public class WindowManagerShellCommand extends ShellCommand {
displayId = Integer.parseInt(getNextArgRequired());
arg = getNextArgRequired();
}
+ if ("reset".equals(arg)) {
+ final Boolean result = mInternal.resetIgnoreOrientationRequest(displayId);
+ if (result != null) {
+ pw.println("Reset ignoreOrientationRequest to " + result + " for displayId="
+ + displayId);
+ return 0;
+ } else {
+ getErrPrintWriter().println(
+ "Unable to reset ignoreOrientationRequest for displayId=" + displayId);
+ return -1;
+ }
+ }
final boolean ignoreOrientationRequest;
switch (arg) {
@@ -589,7 +601,7 @@ public class WindowManagerShellCommand extends ShellCommand {
ignoreOrientationRequest = false;
break;
default:
- getErrPrintWriter().println("Error: expecting true, 1, false, 0, but we "
+ getErrPrintWriter().println("Error: expecting true, 1, false, 0, reset, but we "
+ "get " + arg);
return -1;
}
@@ -1558,7 +1570,7 @@ public class WindowManagerShellCommand extends ShellCommand {
mInterface.setFixedToUserRotation(displayId, IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT);
// set-ignore-orientation-request
- mInterface.setIgnoreOrientationRequest(displayId, false /* ignoreOrientationRequest */);
+ mInternal.resetIgnoreOrientationRequest(displayId);
// set-letterbox-style
resetLetterboxStyle();
@@ -1601,7 +1613,7 @@ public class WindowManagerShellCommand extends ShellCommand {
pw.println(" fixed-to-user-rotation [-d DISPLAY_ID] [enabled|disabled|default");
pw.println(" |enabled_if_no_auto_rotation]");
pw.println(" Print or set rotating display for app requested orientation.");
- pw.println(" set-ignore-orientation-request [-d DISPLAY_ID] [true|1|false|0]");
+ pw.println(" set-ignore-orientation-request [-d DISPLAY_ID] [reset|true|1|false|0]");
pw.println(" get-ignore-orientation-request [-d DISPLAY_ID] ");
pw.println(" If app requested orientation should be ignored.");
pw.println(" set-sandbox-display-apis [true|1|false|0]");