Skip to content

Commit 1b7acaa

Browse files
feat: implement emulation.setTimezoneOverride (#3589)
Co-authored-by: Browser Automation Bot <[email protected]>
1 parent f8fb460 commit 1b7acaa

File tree

12 files changed

+651
-124
lines changed

12 files changed

+651
-124
lines changed

src/bidiMapper/BidiNoOpParser.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,11 @@ export class BidiNoOpParser implements BidiCommandParameterParser {
196196
): Emulation.SetScreenOrientationOverrideParameters {
197197
return params as Emulation.SetScreenOrientationOverrideParameters;
198198
}
199+
parseSetTimezoneOverrideParams(
200+
params: unknown,
201+
): Emulation.SetTimezoneOverrideParameters {
202+
return params as Emulation.SetTimezoneOverrideParameters;
203+
}
199204
// keep-sorted end
200205

201206
// Script module

src/bidiMapper/BidiParser.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ export interface BidiCommandParameterParser {
128128
parseSetScreenOrientationOverrideParams(
129129
params: unknown,
130130
): Emulation.SetScreenOrientationOverrideParameters;
131+
parseSetTimezoneOverrideParams(
132+
params: unknown,
133+
): Emulation.SetTimezoneOverrideParameters;
131134
// keep-sorted end
132135

133136
// Input module

src/bidiMapper/CommandProcessor.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,10 @@ export class CommandProcessor extends EventEmitter<CommandProcessorEventsMap> {
326326
return await this.#emulationProcessor.setScreenOrientationOverride(
327327
this.#parser.parseSetScreenOrientationOverrideParams(command.params),
328328
);
329+
case 'emulation.setTimezoneOverride':
330+
return await this.#emulationProcessor.setTimezoneOverride(
331+
this.#parser.parseSetTimezoneOverrideParams(command.params),
332+
);
329333
// keep-sorted end
330334

331335
// Input module

src/bidiMapper/modules/browser/UserContextConfig.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export class UserContextConfig {
3939
| null;
4040
locale?: string | null;
4141
screenOrientation?: Emulation.ScreenOrientation | null;
42+
timezone?: string | null;
4243
userPromptHandler?: Session.UserPromptHandler;
4344

4445
constructor(userContextId: string) {

src/bidiMapper/modules/cdp/CdpTarget.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,10 @@ export class CdpTarget {
669669
promises.push(this.setLocaleOverride(this.#userContextConfig.locale));
670670
}
671671

672+
if (this.#userContextConfig.timezone !== undefined) {
673+
promises.push(this.setTimezoneOverride(this.#userContextConfig.timezone));
674+
}
675+
672676
if (this.#userContextConfig.acceptInsecureCerts !== undefined) {
673677
promises.push(
674678
this.cdpClient.sendCommand('Security.setIgnoreCertificateErrors', {
@@ -833,4 +837,17 @@ export class CdpTarget {
833837
});
834838
}
835839
}
840+
841+
async setTimezoneOverride(timezone: string | null): Promise<void> {
842+
if (timezone === null) {
843+
await this.cdpClient.sendCommand('Emulation.setTimezoneOverride', {
844+
// If empty, disables the override and restores default host system timezone.
845+
timezoneId: '',
846+
});
847+
} else {
848+
await this.cdpClient.sendCommand('Emulation.setTimezoneOverride', {
849+
timezoneId: timezone,
850+
});
851+
}
852+
}
836853
}

0 commit comments

Comments
 (0)