diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
commit | 40a355a42d4a9444dc753c04c6608dade2f06a23 (patch) | |
tree | 871fc667d2de662f171103ce5ec067014ef85e61 /remote/webdriver-bidi/modules/root/input.sys.mjs | |
parent | Adding upstream version 124.0.1. (diff) | |
download | firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.tar.xz firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.zip |
Adding upstream version 125.0.1.upstream/125.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'remote/webdriver-bidi/modules/root/input.sys.mjs')
-rw-r--r-- | remote/webdriver-bidi/modules/root/input.sys.mjs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/remote/webdriver-bidi/modules/root/input.sys.mjs b/remote/webdriver-bidi/modules/root/input.sys.mjs index 8edd8299b7..0764ac3f92 100644 --- a/remote/webdriver-bidi/modules/root/input.sys.mjs +++ b/remote/webdriver-bidi/modules/root/input.sys.mjs @@ -91,6 +91,63 @@ class InputModule extends Module { return {}; } + /** + * Sets the file property of a given input element with type file to a set of file paths. + * + * @param {object=} options + * @param {string} options.context + * Id of the browsing context to set the file property + * of a given input element. + * @param {SharedReference} options.element + * A reference to a node, which is used as + * a target for setting files. + * @param {Array<string>} options.files + * A list of file paths which should be set. + * + * @throws {InvalidArgumentError} + * Raised if an argument is of an invalid type or value. + * @throws {NoSuchElementError} + * If the input element cannot be found. + * @throws {NoSuchFrameError} + * If the browsing context cannot be found. + * @throws {UnableToSetFileInputError} + * If the set of file paths was not set to the input element. + */ + async setFiles(options = {}) { + const { context: contextId, element, files } = options; + + lazy.assert.string( + contextId, + `Expected "context" to be a string, got ${contextId}` + ); + + const context = lazy.TabManager.getBrowsingContextById(contextId); + if (!context) { + throw new lazy.error.NoSuchFrameError( + `Browsing context with id ${contextId} not found` + ); + } + + lazy.assert.array(files, `Expected "files" to be an array, got ${files}`); + + for (const file of files) { + lazy.assert.string( + file, + `Expected an element of "files" to be a string, got ${file}` + ); + } + + await this.messageHandler.forwardCommand({ + moduleName: "input", + commandName: "setFiles", + destination: { + type: lazy.WindowGlobalMessageHandler.type, + id: context.id, + }, + params: { element, files }, + }); + } + static get supportedEvents() { return []; } |