commit 9e6c5ec5b9749a0a83ef036b64f01b1c43e2b067
parent 786d57bafac11fff94375d9930550e572742e241
Author: Alexandra Borovova <aborovova@mozilla.com>
Date: Wed, 7 Jan 2026 13:44:42 +0000
Bug 1998734 - [webdriver-bidi] Update "emulation.setScreenOrientationOverride" command reset behavior. r=jdescottes
Differential Revision: https://phabricator.services.mozilla.com/D278001
Diffstat:
2 files changed, 49 insertions(+), 45 deletions(-)
diff --git a/remote/webdriver-bidi/modules/root/emulation.sys.mjs b/remote/webdriver-bidi/modules/root/emulation.sys.mjs
@@ -14,8 +14,6 @@ ChromeUtils.defineESModuleGetters(lazy, {
Log: "chrome://remote/content/shared/Log.sys.mjs",
NavigableManager: "chrome://remote/content/shared/NavigableManager.sys.mjs",
pprint: "chrome://remote/content/shared/Format.sys.mjs",
- SessionDataMethod:
- "chrome://remote/content/shared/messagehandler/sessiondata/SessionData.sys.mjs",
TabManager: "chrome://remote/content/shared/TabManager.sys.mjs",
UserContextManager:
"chrome://remote/content/shared/UserContextManager.sys.mjs",
@@ -415,34 +413,16 @@ class EmulationModule extends RootBiDiModule {
userContextIds
);
- const sessionDataItems = [];
- if (userContextIds !== null) {
- for (const userContext of userContexts) {
- sessionDataItems.push({
- category: "screen-orientation-override",
- moduleName: "_configuration",
- values: [orientationOverride],
- contextDescriptor: {
- type: lazy.ContextDescriptorType.UserContext,
- id: userContext,
- },
- method: lazy.SessionDataMethod.Add,
- });
- }
- } else {
- for (const navigable of navigables) {
- sessionDataItems.push({
- category: "screen-orientation-override",
- moduleName: "_configuration",
- values: [orientationOverride],
- contextDescriptor: {
- type: lazy.ContextDescriptorType.TopBrowsingContext,
- id: navigable.browserId,
- },
- method: lazy.SessionDataMethod.Add,
- });
- }
- }
+ const sessionDataItems = this.#generateSessionDataUpdate({
+ category: "screen-orientation-override",
+ contextOverride: contextIds !== null,
+ hasGlobalOverride: false,
+ navigables,
+ resetValue: null,
+ userContexts,
+ userContextOverride: userContextIds !== null,
+ value: orientationOverride,
+ });
if (sessionDataItems.length) {
// TODO: Bug 1953079. Saving the screen orientation override in the session data works fine
@@ -451,12 +431,15 @@ class EmulationModule extends RootBiDiModule {
await this.messageHandler.updateSessionData(sessionDataItems);
}
- for (const navigable of navigables) {
- this._setEmulatedScreenOrientation({
- context: navigable,
- orientationOverride,
- });
- }
+ this.#applyOverride({
+ callback: this._setEmulatedScreenOrientation,
+ category: "screen-orientation-override",
+ contextIds,
+ navigables,
+ resetValue: null,
+ userContextIds,
+ value: orientationOverride,
+ });
}
/**
@@ -779,15 +762,15 @@ class EmulationModule extends RootBiDiModule {
* @param {BrowsingContext} options.context
* Top-level browsing context object which is a target
* for the screen orientation override.
- * @param {(object|null)} options.orientationOverride
+ * @param {(object|null)} options.value
* Screen orientation object which have to override
* screen settings.
* Null value resets the override.
*/
_setEmulatedScreenOrientation(options) {
- const { context, orientationOverride } = options;
- if (orientationOverride) {
- const { angle, type } = orientationOverride;
+ const { context, value } = options;
+ if (value) {
+ const { angle, type } = value;
context.setOrientationOverride(type, angle);
} else {
context.resetOrientationOverride();
diff --git a/remote/webdriver-bidi/modules/windowglobal/_configuration.sys.mjs b/remote/webdriver-bidi/modules/windowglobal/_configuration.sys.mjs
@@ -174,7 +174,7 @@ class _ConfigurationModule extends WindowGlobalBiDiModule {
},
params: {
context: this.messageHandler.context,
- orientationOverride: this.#screenOrientationOverride,
+ value: this.#screenOrientationOverride,
},
});
}
@@ -322,6 +322,9 @@ class _ConfigurationModule extends WindowGlobalBiDiModule {
let localeOverridePerContext = null;
let localeOverridePerUserContext = null;
+ let screenOrientationOverridePerContext = null;
+ let screenOrientationOverridePerUserContext = null;
+
let screenSettingsOverridePerContext = null;
let screenSettingsOverridePerUserContext = null;
@@ -377,6 +380,19 @@ class _ConfigurationModule extends WindowGlobalBiDiModule {
}
break;
}
+ case "screen-orientation-override": {
+ switch (contextDescriptor.type) {
+ case lazy.ContextDescriptorType.TopBrowsingContext: {
+ screenOrientationOverridePerContext = value;
+ break;
+ }
+ case lazy.ContextDescriptorType.UserContext: {
+ screenOrientationOverridePerUserContext = value;
+ break;
+ }
+ }
+ break;
+ }
case "screen-settings-override": {
switch (contextDescriptor.type) {
case lazy.ContextDescriptorType.TopBrowsingContext: {
@@ -390,10 +406,6 @@ class _ConfigurationModule extends WindowGlobalBiDiModule {
}
break;
}
- case "screen-orientation-override": {
- this.#screenOrientationOverride = value;
- break;
- }
case "timezone-override": {
switch (contextDescriptor.type) {
case lazy.ContextDescriptorType.TopBrowsingContext: {
@@ -447,6 +459,15 @@ class _ConfigurationModule extends WindowGlobalBiDiModule {
);
break;
}
+ case "screen-orientation-override": {
+ this.#screenOrientationOverride = this.#findCorrectOverrideValue(
+ "object",
+ screenOrientationOverridePerContext,
+ screenOrientationOverridePerUserContext
+ );
+
+ break;
+ }
case "screen-settings-override": {
this.#screenSettingsOverride = this.#findCorrectOverrideValue(
"object",