diff options
| author | 2025-02-04 12:27:23 +0800 | |
|---|---|---|
| committer | 2025-02-04 14:40:34 +0800 | |
| commit | 057754255df553c5ebb359c6346fab37635e1ae9 (patch) | |
| tree | a9ee4f469ea1be6e86fe765967c4e423cb710e40 | |
| parent | 71378c186c95c4c4f3bea01625ed5ae5f10d2070 (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
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]"); |