From d4deefbad3c66cf7103e2bf4729094ab16390a7f Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Tue, 15 Feb 2022 21:55:52 -0800 Subject: [PATCH] feat(firefox): roll to r1317 (#12120) --- packages/playwright-core/browsers.json | 4 +-- .../src/server/firefox/ffBrowser.ts | 4 ++- .../src/server/firefox/ffPage.ts | 8 +++-- .../src/server/firefox/protocol.d.ts | 31 ++++++++++++------- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index dfa44c9c4d..412e4fa47d 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -13,12 +13,12 @@ }, { "name": "firefox", - "revision": "1316", + "revision": "1317", "installByDefault": true }, { "name": "firefox-beta", - "revision": "1316", + "revision": "1317", "installByDefault": false }, { diff --git a/packages/playwright-core/src/server/firefox/ffBrowser.ts b/packages/playwright-core/src/server/firefox/ffBrowser.ts index 32a5ba2b53..0b1d798b51 100644 --- a/packages/playwright-core/src/server/firefox/ffBrowser.ts +++ b/packages/playwright-core/src/server/firefox/ffBrowser.ts @@ -154,6 +154,7 @@ export class FFBrowser extends Browser { export class FFBrowserContext extends BrowserContext { declare readonly _browser: FFBrowser; + private _initScripts: string[] = []; constructor(browser: FFBrowser, browserContextId: string | undefined, options: types.BrowserContextOptions) { super(browser, options, browserContextId); @@ -322,7 +323,8 @@ export class FFBrowserContext extends BrowserContext { } async _doAddInitScript(source: string) { - await this._browser._connection.send('Browser.addScriptToEvaluateOnNewDocument', { browserContextId: this._browserContextId, script: source }); + this._initScripts.push(source); + await this._browser._connection.send('Browser.setInitScripts', { browserContextId: this._browserContextId, scripts: this._initScripts.map(script => ({ script })) }); } async _doExposeBinding(binding: PageBinding) { diff --git a/packages/playwright-core/src/server/firefox/ffPage.ts b/packages/playwright-core/src/server/firefox/ffPage.ts index 685b00f9fd..53f4073027 100644 --- a/packages/playwright-core/src/server/firefox/ffPage.ts +++ b/packages/playwright-core/src/server/firefox/ffPage.ts @@ -53,6 +53,7 @@ export class FFPage implements PageDelegate { private _eventListeners: RegisteredListener[]; private _workers = new Map(); private _screencastId: string | undefined; + private _initScripts: { script: string, worldName?: string }[] = []; constructor(session: FFSession, browserContext: FFBrowserContext, opener: FFPage | null) { this._session = session; @@ -112,7 +113,7 @@ export class FFPage implements PageDelegate { }); // Ideally, we somehow ensure that utility world is created before Page.ready arrives, but currently it is racy. // Therefore, we can end up with an initialized page without utility world, although very unlikely. - this._session.send('Page.addScriptToEvaluateOnNewDocument', { script: '', worldName: UTILITY_WORLD_NAME }).catch(e => this._markAsError(e)); + this.evaluateOnNewDocument('', UTILITY_WORLD_NAME).catch(e => this._markAsError(e)); } async _markAsError(error: Error) { @@ -393,8 +394,9 @@ export class FFPage implements PageDelegate { return success; } - async evaluateOnNewDocument(source: string): Promise { - await this._session.send('Page.addScriptToEvaluateOnNewDocument', { script: source }); + async evaluateOnNewDocument(script: string, worldName?: string): Promise { + this._initScripts.push({ script, worldName }); + await this._session.send('Page.setInitScripts', { scripts: this._initScripts }); } async closePage(runBeforeUnload: boolean): Promise { diff --git a/packages/playwright-core/src/server/firefox/protocol.d.ts b/packages/playwright-core/src/server/firefox/protocol.d.ts index 00e7649417..491026f4bd 100644 --- a/packages/playwright-core/src/server/firefox/protocol.d.ts +++ b/packages/playwright-core/src/server/firefox/protocol.d.ts @@ -208,11 +208,14 @@ export module Protocol { hidden: boolean; }; export type setScrollbarsHiddenReturnValue = void; - export type addScriptToEvaluateOnNewDocumentParameters = { + export type setInitScriptsParameters = { browserContextId?: string; - script: string; + scripts: { + script: string; + worldName?: string; + }[]; }; - export type addScriptToEvaluateOnNewDocumentReturnValue = void; + export type setInitScriptsReturnValue = void; export type addBindingParameters = { browserContextId?: string; worldName?: string; @@ -354,6 +357,10 @@ export module Protocol { width: number; height: number; }; + export type InitScript = { + script: string; + worldName?: string; + }; export type readyPayload = { } export type crashedPayload = { @@ -528,11 +535,13 @@ export module Protocol { }; }; export type scrollIntoViewIfNeededReturnValue = void; - export type addScriptToEvaluateOnNewDocumentParameters = { - script: string; - worldName?: string; + export type setInitScriptsParameters = { + scripts: { + script: string; + worldName?: string; + }[]; }; - export type addScriptToEvaluateOnNewDocumentReturnValue = void; + export type setInitScriptsReturnValue = void; export type navigateParameters = { frameId: string; url: string; @@ -1086,7 +1095,7 @@ export module Protocol { "Browser.setTouchOverride": Browser.setTouchOverrideParameters; "Browser.setDefaultViewport": Browser.setDefaultViewportParameters; "Browser.setScrollbarsHidden": Browser.setScrollbarsHiddenParameters; - "Browser.addScriptToEvaluateOnNewDocument": Browser.addScriptToEvaluateOnNewDocumentParameters; + "Browser.setInitScripts": Browser.setInitScriptsParameters; "Browser.addBinding": Browser.addBindingParameters; "Browser.grantPermissions": Browser.grantPermissionsParameters; "Browser.resetPermissions": Browser.resetPermissionsParameters; @@ -1108,7 +1117,7 @@ export module Protocol { "Page.setCacheDisabled": Page.setCacheDisabledParameters; "Page.describeNode": Page.describeNodeParameters; "Page.scrollIntoViewIfNeeded": Page.scrollIntoViewIfNeededParameters; - "Page.addScriptToEvaluateOnNewDocument": Page.addScriptToEvaluateOnNewDocumentParameters; + "Page.setInitScripts": Page.setInitScriptsParameters; "Page.navigate": Page.navigateParameters; "Page.goBack": Page.goBackParameters; "Page.goForward": Page.goForwardParameters; @@ -1165,7 +1174,7 @@ export module Protocol { "Browser.setTouchOverride": Browser.setTouchOverrideReturnValue; "Browser.setDefaultViewport": Browser.setDefaultViewportReturnValue; "Browser.setScrollbarsHidden": Browser.setScrollbarsHiddenReturnValue; - "Browser.addScriptToEvaluateOnNewDocument": Browser.addScriptToEvaluateOnNewDocumentReturnValue; + "Browser.setInitScripts": Browser.setInitScriptsReturnValue; "Browser.addBinding": Browser.addBindingReturnValue; "Browser.grantPermissions": Browser.grantPermissionsReturnValue; "Browser.resetPermissions": Browser.resetPermissionsReturnValue; @@ -1187,7 +1196,7 @@ export module Protocol { "Page.setCacheDisabled": Page.setCacheDisabledReturnValue; "Page.describeNode": Page.describeNodeReturnValue; "Page.scrollIntoViewIfNeeded": Page.scrollIntoViewIfNeededReturnValue; - "Page.addScriptToEvaluateOnNewDocument": Page.addScriptToEvaluateOnNewDocumentReturnValue; + "Page.setInitScripts": Page.setInitScriptsReturnValue; "Page.navigate": Page.navigateReturnValue; "Page.goBack": Page.goBackReturnValue; "Page.goForward": Page.goForwardReturnValue;