chore: browser independent setInputFiles implementation (#34808)

This commit is contained in:
Yury Semikhatsky 2025-02-14 16:44:27 -08:00 committed by GitHub
parent 8b28e637c8
commit 145b6bf4fe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 2 additions and 27 deletions

View file

@ -519,11 +519,6 @@ export class BidiPage implements PageDelegate {
return quads as types.Quad[]; return quads as types.Quad[];
} }
async setInputFiles(handle: dom.ElementHandle<HTMLInputElement>, files: types.FilePayload[]): Promise<void> {
await handle.evaluateInUtility(([injected, node, files]) =>
injected.setInputFiles(node, files), files);
}
async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, paths: string[]): Promise<void> { async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, paths: string[]): Promise<void> {
const fromContext = toBidiExecutionContext(handle._context); const fromContext = toBidiExecutionContext(handle._context);
await this._session.send('input.setFiles', { await this._session.send('input.setFiles', {

View file

@ -314,11 +314,6 @@ export class CRPage implements PageDelegate {
return this._sessionForHandle(handle)._getContentQuads(handle); return this._sessionForHandle(handle)._getContentQuads(handle);
} }
async setInputFiles(handle: dom.ElementHandle<HTMLInputElement>, files: types.FilePayload[]): Promise<void> {
await handle.evaluateInUtility(([injected, node, files]) =>
injected.setInputFiles(node, files), files);
}
async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void> { async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void> {
const frame = await handle.ownerFrame(); const frame = await handle.ownerFrame();
if (!frame) if (!frame)

View file

@ -705,7 +705,8 @@ export class ElementHandle<T extends Node = Node> extends js.JSHandle<T> {
await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory); await this._page._delegate.setInputFilePaths(retargeted, localPathsOrDirectory);
await waitForInputEvent; await waitForInputEvent;
} else { } else {
await this._page._delegate.setInputFiles(retargeted, filePayloads!); await retargeted.evaluateInUtility(([injected, node, files]) =>
injected.setInputFiles(node, files), filePayloads!);
} }
return 'done'; return 'done';
} }

View file

@ -519,11 +519,6 @@ export class FFPage implements PageDelegate {
return result.quads.map(quad => [quad.p1, quad.p2, quad.p3, quad.p4]); return result.quads.map(quad => [quad.p1, quad.p2, quad.p3, quad.p4]);
} }
async setInputFiles(handle: dom.ElementHandle<HTMLInputElement>, files: types.FilePayload[]): Promise<void> {
await handle.evaluateInUtility(([injected, node, files]) =>
injected.setInputFiles(node, files), files);
}
async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void> { async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void> {
await this._session.send('Page.setFileInputFiles', { await this._session.send('Page.setFileInputFiles', {
frameId: handle._context.frame._id, frameId: handle._context.frame._id,

View file

@ -80,7 +80,6 @@ export interface PageDelegate {
getContentFrame(handle: dom.ElementHandle): Promise<frames.Frame | null>; // Only called for frame owner elements. getContentFrame(handle: dom.ElementHandle): Promise<frames.Frame | null>; // Only called for frame owner elements.
getOwnerFrame(handle: dom.ElementHandle): Promise<string | null>; // Returns frameId. getOwnerFrame(handle: dom.ElementHandle): Promise<string | null>; // Returns frameId.
getContentQuads(handle: dom.ElementHandle): Promise<types.Quad[] | null | 'error:notconnected'>; getContentQuads(handle: dom.ElementHandle): Promise<types.Quad[] | null | 'error:notconnected'>;
setInputFiles(handle: dom.ElementHandle<HTMLInputElement>, files: types.FilePayload[]): Promise<void>;
setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void>; setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, files: string[]): Promise<void>;
getBoundingBox(handle: dom.ElementHandle): Promise<types.Rect | null>; getBoundingBox(handle: dom.ElementHandle): Promise<types.Rect | null>;
getFrameElement(frame: frames.Frame): Promise<dom.ElementHandle>; getFrameElement(frame: frames.Frame): Promise<dom.ElementHandle>;

View file

@ -946,16 +946,6 @@ export class WKPage implements PageDelegate {
]); ]);
} }
async setInputFiles(handle: dom.ElementHandle<HTMLInputElement>, files: types.FilePayload[]): Promise<void> {
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<HTMLInputElement>, paths: string[]): Promise<void> { async setInputFilePaths(handle: dom.ElementHandle<HTMLInputElement>, paths: string[]): Promise<void> {
const pageProxyId = this._pageProxySession.sessionId; const pageProxyId = this._pageProxySession.sessionId;
const objectId = handle._objectId; const objectId = handle._objectId;