Skip to content

Commit eecb28a

Browse files
committed
chore(bidi): add support for network.setExtraHeaders
1 parent 7549558 commit eecb28a

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

packages/playwright-core/src/server/bidi/bidiBrowser.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ export class BidiBrowserContext extends BrowserContext {
222222
userContexts: [this._userContextId()],
223223
}));
224224
}
225+
if (this._options.extraHTTPHeaders || this._options.locale)
226+
promises.push(this.doUpdateExtraHTTPHeaders());
225227
await Promise.all(promises);
226228
}
227229

@@ -320,6 +322,13 @@ export class BidiBrowserContext extends BrowserContext {
320322
}
321323

322324
async doUpdateExtraHTTPHeaders(): Promise<void> {
325+
let allHeaders = this._options.extraHTTPHeaders || [];
326+
if (this._options.locale)
327+
allHeaders = network.mergeHeaders([allHeaders, network.singleHeader('Accept-Language', this._options.locale)]);
328+
await this._browser._browserSession.send('network.setExtraHeaders', {
329+
headers: allHeaders.map(({ name, value }) => ({ name, value: { type: 'string', value } })),
330+
userContexts: [this._userContextId()],
331+
});
323332
}
324333

325334
async setUserAgent(userAgent: string | undefined): Promise<void> {

packages/playwright-core/src/server/bidi/bidiPage.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { BidiNetworkManager } from './bidiNetworkManager';
2626
import { BidiPDF } from './bidiPdf';
2727
import * as bidi from './third_party/bidiProtocol';
2828

29+
import * as network from '../network';
2930
import type { RegisteredListener } from '../utils/eventsHelper';
3031
import type * as accessibility from '../accessibility';
3132
import type * as frames from '../frames';
@@ -297,6 +298,16 @@ export class BidiPage implements PageDelegate {
297298
}
298299

299300
async updateExtraHTTPHeaders(): Promise<void> {
301+
const locale = this._browserContext._options.locale;
302+
const allHeaders = network.mergeHeaders([
303+
this._browserContext._options.extraHTTPHeaders,
304+
this._page.extraHTTPHeaders(),
305+
locale ? network.singleHeader('Accept-Language', locale) : undefined,
306+
]);
307+
await this._session.send('network.setExtraHeaders', {
308+
headers: allHeaders.map(({ name, value }) => ({ name, value: { type: 'string', value } })),
309+
contexts: [this._session.sessionId],
310+
});
300311
}
301312

302313
async updateEmulateMedia(): Promise<void> {

packages/playwright-core/src/server/bidi/third_party/bidiCommands.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ export interface Commands {
178178
returnType: Bidi.Storage.SetCookieParameters;
179179
};
180180

181+
'network.setExtraHeaders': {
182+
params: Bidi.Network.SetExtraHeadersParameters;
183+
returnType: Bidi.Network.SetExtraHeadersResult;
184+
};
181185
'network.addDataCollector': {
182186
params: Bidi.Network.AddDataCollectorParameters;
183187
returnType: Bidi.Network.AddDataCollectorResult;

0 commit comments

Comments
 (0)