From 738fe807cce74a74ee31c843d80b4109c2831c32 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 14 Feb 2025 13:34:43 -0800 Subject: [PATCH] chore: browser independent setInputFiles implementation --- packages/playwright-core/src/server/bidi/bidiPage.ts | 5 ----- packages/playwright-core/src/server/chromium/crPage.ts | 5 ----- packages/playwright-core/src/server/dom.ts | 3 ++- packages/playwright-core/src/server/firefox/ffPage.ts | 5 ----- packages/playwright-core/src/server/page.ts | 1 - packages/playwright-core/src/server/webkit/wkPage.ts | 10 ---------- 6 files changed, 2 insertions(+), 27 deletions(-) diff --git a/packages/playwright-core/src/server/bidi/bidiPage.ts b/packages/playwright-core/src/server/bidi/bidiPage.ts index 153bb830de..db708f7ba3 100644 --- a/packages/playwright-core/src/server/bidi/bidiPage.ts +++ b/packages/playwright-core/src/server/bidi/bidiPage.ts @@ -519,11 +519,6 @@ export class BidiPage implements PageDelegate { return quads as types.Quad[]; } - async setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise { - await handle.evaluateInUtility(([injected, node, files]) => - injected.setInputFiles(node, files), files); - } - async setInputFilePaths(handle: dom.ElementHandle, paths: string[]): Promise { const fromContext = toBidiExecutionContext(handle._context); await this._session.send('input.setFiles', { diff --git a/packages/playwright-core/src/server/chromium/crPage.ts b/packages/playwright-core/src/server/chromium/crPage.ts index 34470470dc..5b9118495c 100644 --- a/packages/playwright-core/src/server/chromium/crPage.ts +++ b/packages/playwright-core/src/server/chromium/crPage.ts @@ -314,11 +314,6 @@ export class CRPage implements PageDelegate { return this._sessionForHandle(handle)._getContentQuads(handle); } - async setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise { - await handle.evaluateInUtility(([injected, node, files]) => - injected.setInputFiles(node, files), files); - } - async setInputFilePaths(handle: dom.ElementHandle, files: string[]): Promise { const frame = await handle.ownerFrame(); if (!frame) diff --git a/packages/playwright-core/src/server/dom.ts b/packages/playwright-core/src/server/dom.ts index 7bb1862645..2819a5f24c 100644 --- a/packages/playwright-core/src/server/dom.ts +++ b/packages/playwright-core/src/server/dom.ts @@ -705,7 +705,8 @@ export class ElementHandle extends js.JSHandle { await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory); await waitForInputEvent; } else { - await this._page._delegate.setInputFiles(retargeted, filePayloads!); + await retargeted.evaluateInUtility(([injected, node, files]) => + injected.setInputFiles(node, files), filePayloads!); } return 'done'; } diff --git a/packages/playwright-core/src/server/firefox/ffPage.ts b/packages/playwright-core/src/server/firefox/ffPage.ts index 22229dff3e..75cfffd24e 100644 --- a/packages/playwright-core/src/server/firefox/ffPage.ts +++ b/packages/playwright-core/src/server/firefox/ffPage.ts @@ -519,11 +519,6 @@ export class FFPage implements PageDelegate { return result.quads.map(quad => [quad.p1, quad.p2, quad.p3, quad.p4]); } - async setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise { - await handle.evaluateInUtility(([injected, node, files]) => - injected.setInputFiles(node, files), files); - } - async setInputFilePaths(handle: dom.ElementHandle, files: string[]): Promise { await this._session.send('Page.setFileInputFiles', { frameId: handle._context.frame._id, diff --git a/packages/playwright-core/src/server/page.ts b/packages/playwright-core/src/server/page.ts index d2db2e4211..bdba7f1486 100644 --- a/packages/playwright-core/src/server/page.ts +++ b/packages/playwright-core/src/server/page.ts @@ -79,7 +79,6 @@ export interface PageDelegate { getContentFrame(handle: dom.ElementHandle): Promise; // Only called for frame owner elements. getOwnerFrame(handle: dom.ElementHandle): Promise; // Returns frameId. getContentQuads(handle: dom.ElementHandle): Promise; - setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise; setInputFilePaths(handle: dom.ElementHandle, files: string[]): Promise; getBoundingBox(handle: dom.ElementHandle): Promise; getFrameElement(frame: frames.Frame): Promise; diff --git a/packages/playwright-core/src/server/webkit/wkPage.ts b/packages/playwright-core/src/server/webkit/wkPage.ts index f9e9517fb2..e278be6ba7 100644 --- a/packages/playwright-core/src/server/webkit/wkPage.ts +++ b/packages/playwright-core/src/server/webkit/wkPage.ts @@ -947,16 +947,6 @@ export class WKPage implements PageDelegate { ]); } - async setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise { - const objectId = handle._objectId; - const protocolFiles = files.map(file => ({ - name: file.name, - type: file.mimeType, - data: file.buffer, - })); - await this._session.send('DOM.setInputFiles', { objectId, files: protocolFiles }); - } - async setInputFilePaths(handle: dom.ElementHandle, paths: string[]): Promise { const pageProxyId = this._pageProxySession.sessionId; const objectId = handle._objectId;