Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
import { WindowGlobalBiDiModule } from "chrome://remote/content/webdriver-bidi/modules/WindowGlobalBiDiModule.sys.mjs";
class EmulationModule extends WindowGlobalBiDiModule {
constructor(messageHandler) {
super(messageHandler);
}
destroy() {}
/**
* Internal commands
*/
_applySessionData() {}
/**
* Set the geolocation override to the navigable.
*
* @param {object=} params
* @param {(GeolocationCoordinates|null)} params.coordinates
* Geolocation coordinates which have to override
* the return result of geolocation APIs.
* Null value resets the override.
*/
async _setGeolocationOverride(params = {}) {
const { coordinates } = params;
if (coordinates === null) {
this.messageHandler.context.setGeolocationServiceOverride();
} else {
this.messageHandler.context.setGeolocationServiceOverride({
coords: coordinates,
// The timestamp attribute represents the time
// when the geographic position of the device was acquired.
timestamp: Date.now(),
});
}
}
/**
* Set the locale override to the sandboxes,
* which belongs to this navigable.
*
* @param {object} params
* @param {(string|null)} params.locale
* Locale string which have to override
* the return result of JavaScript Intl APIs.
* Null value resets the override.
*/
async _setLocaleOverrideToSandboxes(params) {
const { locale } = params;
this.messageHandler.realms.forEach(realm => {
if (realm.isSandbox) {
Cu.setSandboxLocaleOverride(realm.globalObject, locale);
}
});
}
/**
* Set the timezone override to the sandboxes,
* which belongs to this navigable.
*
* @param {object} params
* @param {(string|null)} params.locale
* Timezone string which has to override
* the return result of JavaScript Intl/Date APIs.
* Null value resets the override.
*/
async _setTimezoneOverrideToSandboxes(params) {
const { timezone } = params;
this.messageHandler.realms.forEach(realm => {
if (realm.isSandbox) {
Cu.setSandboxTimezoneOverride(realm.globalObject, timezone);
}
});
}
}
export const emulation = EmulationModule;