diff --git a/packages/playwright-core/src/server/bidi/bidiBrowser.ts b/packages/playwright-core/src/server/bidi/bidiBrowser.ts index 238b0e2858..7af8150c9d 100644 --- a/packages/playwright-core/src/server/bidi/bidiBrowser.ts +++ b/packages/playwright-core/src/server/bidi/bidiBrowser.ts @@ -20,7 +20,7 @@ import { BrowserContext, assertBrowserContextIsNotOwned, verifyGeolocation } fro import * as network from '../network'; import { BidiConnection } from './bidiConnection'; import { bidiBytesValueToString } from './bidiNetworkManager'; -import { addMainBinding, BidiPage, kPlaywrightBindingChannel } from './bidiPage'; +import { addMainBindingSource, BidiPage, kPlaywrightBindingChannel } from './bidiPage'; import * as bidi from './third_party/bidiProtocol'; import type { RegisteredListener } from '../utils/eventsHelper'; @@ -238,7 +238,6 @@ export class BidiBrowserContext extends BrowserContext { // TODO: consider calling this only when bindings are added. private async _installMainBinding() { - const functionDeclaration = addMainBinding.toString(); const args: bidi.Script.ChannelValue[] = [{ type: 'channel', value: { @@ -247,7 +246,7 @@ export class BidiBrowserContext extends BrowserContext { } }]; await this._browser._browserSession.send('script.addPreloadScript', { - functionDeclaration, + functionDeclaration: addMainBindingSource, arguments: args, userContexts: [this._userContextId()], }); diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts index 50e45d1352..a9affaebec 100644 --- a/packages/playwright-core/src/server/bidi/bidiPage.ts +++ b/packages/playwright-core/src/server/bidi/bidiPage.ts @@ -328,7 +328,7 @@ export class BidiPage implements PageDelegate { // For non-persistent context, the main binding is installed during context creation. if (this._browserContext._browserContextId) return; - const functionDeclaration = addMainBinding.toString(); + const functionDeclaration = addMainBindingSource; const args: bidi.Script.ChannelValue[] = [{ type: 'channel', value: { @@ -572,9 +572,8 @@ export class BidiPage implements PageDelegate { } } -export function addMainBinding(callback: (arg: any) => void) { - (globalThis as any)[PageBinding.kPlaywrightBinding] = callback; -} +export const addMainBindingSource = + `function addMainBinding(callback) { globalThis['${PageBinding.kPlaywrightBinding}'] = callback; }`; function toBidiExecutionContext(executionContext: dom.FrameExecutionContext): BidiExecutionContext { return executionContext.delegate as BidiExecutionContext;