chromium-bidi 0.5.12 → 0.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.browser +1 -1
- package/README.md +18 -12
- package/lib/THIRD_PARTY_NOTICES +24 -39
- package/lib/cjs/bidiMapper/BidiNoOpParser.d.ts +1 -0
- package/lib/cjs/bidiMapper/BidiNoOpParser.js +3 -0
- package/lib/cjs/bidiMapper/BidiNoOpParser.js.map +1 -1
- package/lib/cjs/bidiMapper/BidiParser.d.ts +1 -0
- package/lib/cjs/bidiMapper/BidiServer.d.ts +0 -1
- package/lib/cjs/bidiMapper/BidiServer.js +1 -1
- package/lib/cjs/bidiMapper/BidiServer.js.map +1 -1
- package/lib/cjs/bidiMapper/CommandProcessor.d.ts +1 -1
- package/lib/cjs/bidiMapper/CommandProcessor.js +19 -6
- package/lib/cjs/bidiMapper/CommandProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextImpl.d.ts +2 -1
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextImpl.js +194 -7
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextImpl.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextProcessor.d.ts +2 -1
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextProcessor.js +7 -5
- package/lib/cjs/bidiMapper/domains/context/BrowsingContextProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/context/CdpTarget.d.ts +4 -3
- package/lib/cjs/bidiMapper/domains/context/CdpTarget.js +48 -23
- package/lib/cjs/bidiMapper/domains/context/CdpTarget.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/input/InputSource.d.ts +5 -5
- package/lib/cjs/bidiMapper/domains/network/NetworkProcessor.js +107 -21
- package/lib/cjs/bidiMapper/domains/network/NetworkProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/network/NetworkRequest.d.ts +4 -1
- package/lib/cjs/bidiMapper/domains/network/NetworkRequest.js +91 -65
- package/lib/cjs/bidiMapper/domains/network/NetworkRequest.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/network/NetworkStorage.d.ts +10 -7
- package/lib/cjs/bidiMapper/domains/network/NetworkStorage.js +19 -62
- package/lib/cjs/bidiMapper/domains/network/NetworkStorage.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/network/NetworkUtils.d.ts +6 -1
- package/lib/cjs/bidiMapper/domains/network/NetworkUtils.js +29 -42
- package/lib/cjs/bidiMapper/domains/network/NetworkUtils.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/permissions/PermissionsProcessor.js +2 -1
- package/lib/cjs/bidiMapper/domains/permissions/PermissionsProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/script/ScriptProcessor.js +6 -6
- package/lib/cjs/bidiMapper/domains/script/ScriptProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/script/SharedId.d.ts +1 -1
- package/lib/cjs/bidiMapper/domains/script/SharedId.js +2 -7
- package/lib/cjs/bidiMapper/domains/script/SharedId.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/script/WindowRealm.d.ts +1 -1
- package/lib/cjs/bidiMapper/domains/script/WindowRealm.js +3 -5
- package/lib/cjs/bidiMapper/domains/script/WindowRealm.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/session/SubscriptionManager.d.ts +1 -1
- package/lib/cjs/bidiMapper/domains/session/SubscriptionManager.js +8 -2
- package/lib/cjs/bidiMapper/domains/session/SubscriptionManager.js.map +1 -1
- package/lib/cjs/bidiMapper/domains/storage/StorageProcessor.js +55 -21
- package/lib/cjs/bidiMapper/domains/storage/StorageProcessor.js.map +1 -1
- package/lib/cjs/bidiServer/BrowserInstance.d.ts +2 -5
- package/lib/cjs/bidiServer/BrowserInstance.js +6 -12
- package/lib/cjs/bidiServer/BrowserInstance.js.map +1 -1
- package/lib/cjs/bidiServer/SimpleTransport.d.ts +1 -1
- package/lib/cjs/bidiServer/SimpleTransport.js +2 -2
- package/lib/cjs/bidiServer/SimpleTransport.js.map +1 -1
- package/lib/cjs/bidiServer/WebSocketServer.d.ts +1 -2
- package/lib/cjs/bidiServer/WebSocketServer.js +61 -16
- package/lib/cjs/bidiServer/WebSocketServer.js.map +1 -1
- package/lib/cjs/bidiServer/index.d.ts +7 -1
- package/lib/cjs/bidiServer/index.js +25 -32
- package/lib/cjs/bidiServer/index.js.map +1 -1
- package/lib/cjs/bidiTab/BidiParser.d.ts +1 -0
- package/lib/cjs/bidiTab/BidiParser.js +3 -0
- package/lib/cjs/bidiTab/BidiParser.js.map +1 -1
- package/lib/cjs/bidiTab/mapperTabPage.js +1 -1
- package/lib/cjs/bidiTab/mapperTabPage.js.map +1 -1
- package/lib/cjs/protocol/ErrorResponse.d.ts +3 -0
- package/lib/cjs/protocol/ErrorResponse.js +7 -1
- package/lib/cjs/protocol/ErrorResponse.js.map +1 -1
- package/lib/cjs/protocol/generated/webdriver-bidi-permissions.d.ts +2 -1
- package/lib/cjs/protocol/generated/webdriver-bidi.d.ts +10 -7
- package/lib/cjs/protocol-parser/generated/webdriver-bidi-permissions.d.ts +14 -1
- package/lib/cjs/protocol-parser/generated/webdriver-bidi-permissions.js +2 -1
- package/lib/cjs/protocol-parser/generated/webdriver-bidi-permissions.js.map +1 -1
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.d.ts +1617 -1516
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.js +21 -9
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.js.map +1 -1
- package/lib/cjs/protocol-parser/protocol-parser.d.ts +1 -0
- package/lib/cjs/protocol-parser/protocol-parser.js +5 -8
- package/lib/cjs/protocol-parser/protocol-parser.js.map +1 -1
- package/lib/cjs/utils/Base64.d.ts +24 -0
- package/lib/cjs/utils/Base64.js +36 -0
- package/lib/cjs/utils/Base64.js.map +1 -0
- package/lib/cjs/utils/UrlPattern.d.ts +2 -1
- package/lib/cjs/utils/UrlPattern.js +3 -2
- package/lib/cjs/utils/UrlPattern.js.map +1 -1
- package/lib/iife/mapperTab.js +16195 -3
- package/lib/iife/mapperTab.js.map +1 -1
- package/package.json +29 -55
package/.browser
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
chrome@124.0.
|
|
1
|
+
chrome@124.0.6367.0
|
package/README.md
CHANGED
|
@@ -203,21 +203,14 @@ Use the `DEBUG_DEPTH` (default: `10`) environment variable to see debug deeply n
|
|
|
203
203
|
DEBUG_DEPTH=100 DEBUG=* npm run server
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
-
Use the
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
Use the `CHANNEL=...` environment variable or `--channel=...` argument with one of
|
|
213
|
-
the following values to run the specific Chrome channel: `stable`,
|
|
214
|
-
`beta`, `canary`, `dev`.
|
|
215
|
-
|
|
216
|
-
The requested Chrome version should be installed.
|
|
206
|
+
Use the `CHANNEL=...` environment variable with one of the following values to run
|
|
207
|
+
the specific Chrome channel: `stable`, `beta`, `canary`, `dev`, `local`. Default is
|
|
208
|
+
`local`. The `local` channel means the pinned in `.browser` Chrome version will be
|
|
209
|
+
downloaded if it is not yet in cache. Otherwise, the requested Chrome version should
|
|
210
|
+
be installed.
|
|
217
211
|
|
|
218
212
|
```sh
|
|
219
213
|
CHANNEL=dev npm run server
|
|
220
|
-
npm run server -- --channel=dev
|
|
221
214
|
```
|
|
222
215
|
|
|
223
216
|
Use the CLI argument `--verbose` to have CDP events printed to the console. Note: you have to enable debugging output `bidi:mapper:debug:*` as well.
|
|
@@ -293,12 +286,25 @@ If you need to see the logs for all test run the command with `VERBOSE=true`.
|
|
|
293
286
|
Simply pass `npm run e2e -- tests/<PathOrFile>` and the e2e will run only the selected one.
|
|
294
287
|
You run a specific test by running `npm run e2e -- -k <TestName>`.
|
|
295
288
|
|
|
289
|
+
Use `CHROMEDRIVER` environment to run tests in `chromedriver` instead of NodeJS runner:
|
|
290
|
+
|
|
291
|
+
```shell
|
|
292
|
+
CHROMEDRIVER=true npm run e2e
|
|
293
|
+
```
|
|
294
|
+
|
|
296
295
|
Use the `PORT` environment variable to connect to another port:
|
|
297
296
|
|
|
298
297
|
```sh
|
|
299
298
|
PORT=8081 npm run e2e
|
|
300
299
|
```
|
|
301
300
|
|
|
301
|
+
Use the `HEADLESS` to run the tests in headless (new or old) or headful modes.
|
|
302
|
+
Values: `new`, `old`, `false`, default: `new`.
|
|
303
|
+
|
|
304
|
+
```sh
|
|
305
|
+
HEADLESS=new npm run e2e
|
|
306
|
+
```
|
|
307
|
+
|
|
302
308
|
#### Updating snapshots
|
|
303
309
|
|
|
304
310
|
```sh
|
package/lib/THIRD_PARTY_NOTICES
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
Name: mitt
|
|
2
|
+
URL: https://github.com/developit/mitt
|
|
2
3
|
Version: 3.0.1
|
|
3
4
|
License: MIT
|
|
4
|
-
Private: false
|
|
5
|
-
Description: Tiny 200b functional Event Emitter / pubsub.
|
|
6
|
-
Repository: undefined
|
|
7
|
-
Homepage: https://github.com/developit/mitt
|
|
8
|
-
License Copyright:
|
|
9
|
-
===
|
|
10
5
|
|
|
11
6
|
MIT License
|
|
12
7
|
|
|
@@ -31,49 +26,39 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
31
26
|
SOFTWARE.
|
|
32
27
|
|
|
33
28
|
|
|
34
|
-
|
|
29
|
+
-------------------- DEPENDENCY DIVIDER --------------------
|
|
35
30
|
|
|
36
31
|
Name: urlpattern-polyfill
|
|
32
|
+
URL: https://github.com/kenchris/urlpattern-polyfill
|
|
37
33
|
Version: 10.0.0
|
|
38
34
|
License: MIT
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
59
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
60
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
61
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
62
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
35
|
+
|
|
36
|
+
Copyright 2020 Intel Corporation
|
|
37
|
+
|
|
38
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
39
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
40
|
+
in the Software without restriction, including without limitation the rights
|
|
41
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
42
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
43
|
+
furnished to do so, subject to the following conditions:
|
|
44
|
+
|
|
45
|
+
The above copyright notice and this permission notice shall be included in
|
|
46
|
+
all copies or substantial portions of the Software.
|
|
47
|
+
|
|
48
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
49
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
50
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
51
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
52
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
53
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
63
54
|
THE SOFTWARE.
|
|
64
55
|
|
|
65
|
-
|
|
56
|
+
-------------------- DEPENDENCY DIVIDER --------------------
|
|
66
57
|
|
|
67
58
|
Name: zod
|
|
59
|
+
URL: https://zod.dev
|
|
68
60
|
Version: 3.22.4
|
|
69
61
|
License: MIT
|
|
70
|
-
Private: false
|
|
71
|
-
Description: TypeScript-first schema declaration and validation library with static type inference
|
|
72
|
-
Repository: https://github.com/colinhacks/zod
|
|
73
|
-
Homepage: https://zod.dev
|
|
74
|
-
Author: Colin McDonnell <colin@colinhacks.com>
|
|
75
|
-
License Copyright:
|
|
76
|
-
===
|
|
77
62
|
|
|
78
63
|
MIT License
|
|
79
64
|
|
|
@@ -24,6 +24,7 @@ export declare class BidiNoOpParser implements BidiCommandParameterParser {
|
|
|
24
24
|
parseCreateParams(params: unknown): BrowsingContext.CreateParameters;
|
|
25
25
|
parseGetTreeParams(params: unknown): BrowsingContext.GetTreeParameters;
|
|
26
26
|
parseHandleUserPromptParams(params: unknown): BrowsingContext.HandleUserPromptParameters;
|
|
27
|
+
parseLocateNodesParams(params: unknown): BrowsingContext.LocateNodesParameters;
|
|
27
28
|
parseNavigateParams(params: unknown): BrowsingContext.NavigateParameters;
|
|
28
29
|
parsePrintParams(params: unknown): BrowsingContext.PrintParameters;
|
|
29
30
|
parseReloadParams(params: unknown): BrowsingContext.ReloadParameters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BidiNoOpParser.js","sourceRoot":"","sources":["../../../src/bidiMapper/BidiNoOpParser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BidiNoOpParser.js","sourceRoot":"","sources":["../../../src/bidiMapper/BidiNoOpParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export interface BidiCommandParameterParser {
|
|
|
23
23
|
parseCreateParams(params: unknown): BrowsingContext.CreateParameters;
|
|
24
24
|
parseGetTreeParams(params: unknown): BrowsingContext.GetTreeParameters;
|
|
25
25
|
parseHandleUserPromptParams(params: unknown): BrowsingContext.HandleUserPromptParameters;
|
|
26
|
+
parseLocateNodesParams(params: unknown): BrowsingContext.LocateNodesParameters;
|
|
26
27
|
parseNavigateParams(params: unknown): BrowsingContext.NavigateParameters;
|
|
27
28
|
parsePrintParams(params: unknown): BrowsingContext.PrintParameters;
|
|
28
29
|
parseReloadParams(params: unknown): BrowsingContext.ReloadParameters;
|
|
@@ -50,7 +50,7 @@ class BidiServer extends EventEmitter_js_1.EventEmitter {
|
|
|
50
50
|
this.#transport = bidiTransport;
|
|
51
51
|
this.#transport.setOnMessage(this.#handleIncomingMessage);
|
|
52
52
|
this.#eventManager = new EventManager_js_1.EventManager(this.#browsingContextStorage);
|
|
53
|
-
this.#commandProcessor = new CommandProcessor_js_1.CommandProcessor(cdpConnection, browserCdpClient, this.#eventManager, selfTargetId, defaultUserContextId, this.#browsingContextStorage, new RealmStorage_js_1.RealmStorage(), options?.acceptInsecureCerts ?? false,
|
|
53
|
+
this.#commandProcessor = new CommandProcessor_js_1.CommandProcessor(cdpConnection, browserCdpClient, this.#eventManager, selfTargetId, defaultUserContextId, this.#browsingContextStorage, new RealmStorage_js_1.RealmStorage(), options?.acceptInsecureCerts ?? false, parser, this.#logger);
|
|
54
54
|
this.#eventManager.on("event" /* EventManagerEvents.Event */, ({ message, event }) => {
|
|
55
55
|
this.emitOutgoingMessage(message, event);
|
|
56
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BidiServer.js","sourceRoot":"","sources":["../../../src/bidiMapper/BidiServer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAKH,8DAAsD;AACtD,4CAAuD;AACvD,oEAA4D;AAK5D,+DAA+E;AAC/E,2FAAmF;AACnF,sEAA8D;AAC9D,uEAG2C;
|
|
1
|
+
{"version":3,"file":"BidiServer.js","sourceRoot":"","sources":["../../../src/bidiMapper/BidiServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ type CommandProcessorEventsMap = {
|
|
|
36
36
|
};
|
|
37
37
|
export declare class CommandProcessor extends EventEmitter<CommandProcessorEventsMap> {
|
|
38
38
|
#private;
|
|
39
|
-
constructor(cdpConnection: CdpConnection, browserCdpClient: CdpClient, eventManager: EventManager, selfTargetId: string, defaultUserContextId: Browser.UserContext, browsingContextStorage: BrowsingContextStorage, realmStorage: RealmStorage, acceptInsecureCerts: boolean,
|
|
39
|
+
constructor(cdpConnection: CdpConnection, browserCdpClient: CdpClient, eventManager: EventManager, selfTargetId: string, defaultUserContextId: Browser.UserContext, browsingContextStorage: BrowsingContextStorage, realmStorage: RealmStorage, acceptInsecureCerts: boolean, parser?: BidiCommandParameterParser, logger?: LoggerFn);
|
|
40
40
|
processCommand(command: ChromiumBidi.Command): Promise<void>;
|
|
41
41
|
}
|
|
42
42
|
export {};
|
|
@@ -47,7 +47,7 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
47
47
|
// keep-sorted end
|
|
48
48
|
#parser;
|
|
49
49
|
#logger;
|
|
50
|
-
constructor(cdpConnection, browserCdpClient, eventManager, selfTargetId, defaultUserContextId, browsingContextStorage, realmStorage, acceptInsecureCerts,
|
|
50
|
+
constructor(cdpConnection, browserCdpClient, eventManager, selfTargetId, defaultUserContextId, browsingContextStorage, realmStorage, acceptInsecureCerts, parser = new BidiNoOpParser_js_1.BidiNoOpParser(), logger) {
|
|
51
51
|
super();
|
|
52
52
|
this.#parser = parser;
|
|
53
53
|
this.#logger = logger;
|
|
@@ -55,7 +55,7 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
55
55
|
const preloadScriptStorage = new PreloadScriptStorage_js_1.PreloadScriptStorage();
|
|
56
56
|
// keep-sorted start block=yes
|
|
57
57
|
this.#browserProcessor = new BrowserProcessor_js_1.BrowserProcessor(browserCdpClient);
|
|
58
|
-
this.#browsingContextProcessor = new BrowsingContextProcessor_js_1.BrowsingContextProcessor(cdpConnection, browserCdpClient, selfTargetId, eventManager, browsingContextStorage, realmStorage, networkStorage, preloadScriptStorage, acceptInsecureCerts,
|
|
58
|
+
this.#browsingContextProcessor = new BrowsingContextProcessor_js_1.BrowsingContextProcessor(cdpConnection, browserCdpClient, selfTargetId, eventManager, browsingContextStorage, realmStorage, networkStorage, preloadScriptStorage, acceptInsecureCerts, defaultUserContextId, logger);
|
|
59
59
|
this.#cdpProcessor = new CdpProcessor_js_1.CdpProcessor(browsingContextStorage, realmStorage, cdpConnection, browserCdpClient);
|
|
60
60
|
this.#inputProcessor = new InputProcessor_js_1.InputProcessor(browsingContextStorage, realmStorage);
|
|
61
61
|
this.#networkProcessor = new NetworkProcessor_js_1.NetworkProcessor(browsingContextStorage, networkStorage);
|
|
@@ -97,7 +97,7 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
97
97
|
case 'browsingContext.handleUserPrompt':
|
|
98
98
|
return await this.#browsingContextProcessor.handleUserPrompt(this.#parser.parseHandleUserPromptParams(command.params));
|
|
99
99
|
case 'browsingContext.locateNodes':
|
|
100
|
-
|
|
100
|
+
return await this.#browsingContextProcessor.locateNodes(this.#parser.parseLocateNodesParams(command.params));
|
|
101
101
|
case 'browsingContext.navigate':
|
|
102
102
|
return await this.#browsingContextProcessor.navigate(this.#parser.parseNavigateParams(command.params));
|
|
103
103
|
case 'browsingContext.print':
|
|
@@ -154,11 +154,11 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
154
154
|
case 'script.addPreloadScript':
|
|
155
155
|
return await this.#scriptProcessor.addPreloadScript(this.#parser.parseAddPreloadScriptParams(command.params));
|
|
156
156
|
case 'script.callFunction':
|
|
157
|
-
return await this.#scriptProcessor.callFunction(this.#parser.parseCallFunctionParams(command.params));
|
|
157
|
+
return await this.#scriptProcessor.callFunction(this.#parser.parseCallFunctionParams(this.#processTargetParams(command.params)));
|
|
158
158
|
case 'script.disown':
|
|
159
|
-
return await this.#scriptProcessor.disown(this.#parser.parseDisownParams(command.params));
|
|
159
|
+
return await this.#scriptProcessor.disown(this.#parser.parseDisownParams(this.#processTargetParams(command.params)));
|
|
160
160
|
case 'script.evaluate':
|
|
161
|
-
return await this.#scriptProcessor.evaluate(this.#parser.parseEvaluateParams(command.params));
|
|
161
|
+
return await this.#scriptProcessor.evaluate(this.#parser.parseEvaluateParams(this.#processTargetParams(command.params)));
|
|
162
162
|
case 'script.getRealms':
|
|
163
163
|
return this.#scriptProcessor.getRealms(this.#parser.parseGetRealmsParams(command.params));
|
|
164
164
|
case 'script.removePreloadScript':
|
|
@@ -188,6 +188,19 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
188
188
|
// command is added.
|
|
189
189
|
throw new protocol_js_1.UnknownCommandException(`Unknown command '${command.method}'.`);
|
|
190
190
|
}
|
|
191
|
+
// Workaround for as zod.union always take the first schema
|
|
192
|
+
// https://github.com/w3c/webdriver-bidi/issues/635
|
|
193
|
+
#processTargetParams(params) {
|
|
194
|
+
if (typeof params === 'object' &&
|
|
195
|
+
params &&
|
|
196
|
+
'target' in params &&
|
|
197
|
+
typeof params.target === 'object' &&
|
|
198
|
+
params.target &&
|
|
199
|
+
'context' in params.target) {
|
|
200
|
+
delete params.target['realm'];
|
|
201
|
+
}
|
|
202
|
+
return params;
|
|
203
|
+
}
|
|
191
204
|
async processCommand(command) {
|
|
192
205
|
try {
|
|
193
206
|
const result = await this.#processCommand(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandProcessor.js","sourceRoot":"","sources":["../../../src/bidiMapper/CommandProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH,yDAOiC;AACjC,8DAAsD;AACtD,4CAAuD;AAGvD,2DAAmD;AAEnD,+EAAuE;AACvE,mEAA2D;AAC3D,+FAAuF;AAEvF,yEAAiE;AACjE,+EAAuE;AACvE,2EAAmE;AACnE,2FAAmF;AACnF,sFAA8E;AAE9E,4EAAoE;AAEpE,+EAAuE;AACvE,+EAAuE;AACvE,6DAAqD;AAarD,MAAa,gBAAiB,SAAQ,8BAAuC;IAC3E,oBAAoB;IACpB,iBAAiB,CAAmB;IACpC,yBAAyB,CAA2B;IACpD,aAAa,CAAe;IAC5B,eAAe,CAAiB;IAChC,iBAAiB,CAAmB;IACpC,qBAAqB,CAAuB;IAC5C,gBAAgB,CAAkB;IAClC,iBAAiB,CAAmB;IACpC,iBAAiB,CAAmB;IACpC,kBAAkB;IAElB,OAAO,CAA6B;IACpC,OAAO,CAAY;IAEnB,YACE,aAA4B,EAC5B,gBAA2B,EAC3B,YAA0B,EAC1B,YAAoB,EACpB,oBAAyC,EACzC,sBAA8C,EAC9C,YAA0B,EAC1B,mBAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"CommandProcessor.js","sourceRoot":"","sources":["../../../src/bidiMapper/CommandProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ export declare class BrowsingContextImpl {
|
|
|
27
27
|
static readonly LOGGER_PREFIX: "debug:browsingContext";
|
|
28
28
|
readonly userContext: string;
|
|
29
29
|
private constructor();
|
|
30
|
-
static create(cdpTarget: CdpTarget, realmStorage: RealmStorage, id: BrowsingContext.BrowsingContext, parentId: BrowsingContext.BrowsingContext | null, userContext: string, eventManager: EventManager, browsingContextStorage: BrowsingContextStorage,
|
|
30
|
+
static create(cdpTarget: CdpTarget, realmStorage: RealmStorage, id: BrowsingContext.BrowsingContext, parentId: BrowsingContext.BrowsingContext | null, userContext: string, eventManager: EventManager, browsingContextStorage: BrowsingContextStorage, logger?: LoggerFn): BrowsingContextImpl;
|
|
31
31
|
static getTimestamp(): number;
|
|
32
32
|
/**
|
|
33
33
|
* @see https://html.spec.whatwg.org/multipage/document-sequences.html#navigable
|
|
@@ -69,5 +69,6 @@ export declare class BrowsingContextImpl {
|
|
|
69
69
|
close(): Promise<void>;
|
|
70
70
|
traverseHistory(delta: number): Promise<void>;
|
|
71
71
|
toggleModulesIfNeeded(): Promise<void>;
|
|
72
|
+
locateNodes(params: BrowsingContext.LocateNodesParameters): Promise<BrowsingContext.LocateNodesResult>;
|
|
72
73
|
}
|
|
73
74
|
export declare function serializeOrigin(origin: string): string;
|
|
@@ -50,9 +50,8 @@ class BrowsingContextImpl {
|
|
|
50
50
|
#loaderId;
|
|
51
51
|
#cdpTarget;
|
|
52
52
|
#maybeDefaultRealm;
|
|
53
|
-
#sharedIdWithFrame;
|
|
54
53
|
#logger;
|
|
55
|
-
constructor(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage,
|
|
54
|
+
constructor(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage, logger) {
|
|
56
55
|
this.#cdpTarget = cdpTarget;
|
|
57
56
|
this.#realmStorage = realmStorage;
|
|
58
57
|
this.#id = id;
|
|
@@ -60,11 +59,10 @@ class BrowsingContextImpl {
|
|
|
60
59
|
this.userContext = userContext;
|
|
61
60
|
this.#eventManager = eventManager;
|
|
62
61
|
this.#browsingContextStorage = browsingContextStorage;
|
|
63
|
-
this.#sharedIdWithFrame = sharedIdWithFrame;
|
|
64
62
|
this.#logger = logger;
|
|
65
63
|
}
|
|
66
|
-
static create(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage,
|
|
67
|
-
const context = new BrowsingContextImpl(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage,
|
|
64
|
+
static create(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage, logger) {
|
|
65
|
+
const context = new BrowsingContextImpl(cdpTarget, realmStorage, id, parentId, userContext, eventManager, browsingContextStorage, logger);
|
|
68
66
|
context.#initListeners();
|
|
69
67
|
browsingContextStorage.addContext(context);
|
|
70
68
|
if (!context.isTopLevelContext()) {
|
|
@@ -330,7 +328,7 @@ class BrowsingContextImpl {
|
|
|
330
328
|
default:
|
|
331
329
|
return;
|
|
332
330
|
}
|
|
333
|
-
const realm = new WindowRealm_js_1.WindowRealm(this.id, this.#browsingContextStorage, this.#cdpTarget.cdpClient, this.#eventManager, id, this.#logger, origin, uniqueId, this.#realmStorage, sandbox
|
|
331
|
+
const realm = new WindowRealm_js_1.WindowRealm(this.id, this.#browsingContextStorage, this.#cdpTarget.cdpClient, this.#eventManager, id, this.#logger, origin, uniqueId, this.#realmStorage, sandbox);
|
|
334
332
|
if (auxData.isDefault) {
|
|
335
333
|
this.#maybeDefaultRealm = realm;
|
|
336
334
|
// Initialize ChannelProxy listeners for all the channels of all the
|
|
@@ -711,9 +709,198 @@ class BrowsingContextImpl {
|
|
|
711
709
|
});
|
|
712
710
|
}
|
|
713
711
|
async toggleModulesIfNeeded() {
|
|
714
|
-
const enableNetwork = this.#eventManager.subscriptionManager.
|
|
712
|
+
const enableNetwork = this.#eventManager.subscriptionManager.isSubscribedTo(chromium_bidi_js_1.BiDiModule.Network, this.id);
|
|
715
713
|
await this.#cdpTarget.toggleNetworkIfNeeded(enableNetwork);
|
|
716
714
|
}
|
|
715
|
+
async locateNodes(params) {
|
|
716
|
+
// TODO: create a dedicated sandbox instead of `#defaultRealm`.
|
|
717
|
+
return await this.#locateNodesByLocator(this.#defaultRealm, params.locator, params.startNodes ?? [], params.maxNodeCount, params.serializationOptions);
|
|
718
|
+
}
|
|
719
|
+
#getLocatorDelegate(locator, maxNodeCount, startNodes) {
|
|
720
|
+
switch (locator.type) {
|
|
721
|
+
case 'css':
|
|
722
|
+
return {
|
|
723
|
+
functionDeclaration: String((cssSelector, maxNodeCount, ...startNodes) => {
|
|
724
|
+
const locateNodesUsingCss = (element) => {
|
|
725
|
+
if (!(element instanceof HTMLElement)) {
|
|
726
|
+
throw new Error('startNodes in css selector should be HTMLElement');
|
|
727
|
+
}
|
|
728
|
+
return [...element.querySelectorAll(cssSelector)];
|
|
729
|
+
};
|
|
730
|
+
startNodes = startNodes.length > 0 ? startNodes : [document.body];
|
|
731
|
+
const returnedNodes = startNodes
|
|
732
|
+
.map((startNode) =>
|
|
733
|
+
// TODO: stop search early if `maxNodeCount` is reached.
|
|
734
|
+
locateNodesUsingCss(startNode))
|
|
735
|
+
.flat(1);
|
|
736
|
+
return maxNodeCount === 0
|
|
737
|
+
? returnedNodes
|
|
738
|
+
: returnedNodes.slice(0, maxNodeCount);
|
|
739
|
+
}),
|
|
740
|
+
argumentsLocalValues: [
|
|
741
|
+
// `cssSelector`
|
|
742
|
+
{ type: 'string', value: locator.value },
|
|
743
|
+
// `maxNodeCount` with `0` means no limit.
|
|
744
|
+
{ type: 'number', value: maxNodeCount ?? 0 },
|
|
745
|
+
// `startNodes`
|
|
746
|
+
...startNodes,
|
|
747
|
+
],
|
|
748
|
+
};
|
|
749
|
+
case 'xpath':
|
|
750
|
+
return {
|
|
751
|
+
functionDeclaration: String((xPathSelector, maxNodeCount, ...startNodes) => {
|
|
752
|
+
// https://w3c.github.io/webdriver-bidi/#locate-nodes-using-xpath
|
|
753
|
+
const evaluator = new XPathEvaluator();
|
|
754
|
+
const expression = evaluator.createExpression(xPathSelector);
|
|
755
|
+
const locateNodesUsingXpath = (element) => {
|
|
756
|
+
const xPathResult = expression.evaluate(element, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
|
|
757
|
+
const returnedNodes = [];
|
|
758
|
+
for (let i = 0; i < xPathResult.snapshotLength; i++) {
|
|
759
|
+
returnedNodes.push(xPathResult.snapshotItem(i));
|
|
760
|
+
}
|
|
761
|
+
return returnedNodes;
|
|
762
|
+
};
|
|
763
|
+
startNodes = startNodes.length > 0 ? startNodes : [document.body];
|
|
764
|
+
const returnedNodes = startNodes
|
|
765
|
+
.map((startNode) =>
|
|
766
|
+
// TODO: stop search early if `maxNodeCount` is reached.
|
|
767
|
+
locateNodesUsingXpath(startNode))
|
|
768
|
+
.flat(1);
|
|
769
|
+
return maxNodeCount === 0
|
|
770
|
+
? returnedNodes
|
|
771
|
+
: returnedNodes.slice(0, maxNodeCount);
|
|
772
|
+
}),
|
|
773
|
+
argumentsLocalValues: [
|
|
774
|
+
// `xPathSelector`
|
|
775
|
+
{ type: 'string', value: locator.value },
|
|
776
|
+
// `maxNodeCount` with `0` means no limit.
|
|
777
|
+
{ type: 'number', value: maxNodeCount ?? 0 },
|
|
778
|
+
// `startNodes`
|
|
779
|
+
...startNodes,
|
|
780
|
+
],
|
|
781
|
+
};
|
|
782
|
+
case 'innerText':
|
|
783
|
+
// https://w3c.github.io/webdriver-bidi/#locate-nodes-using-inner-text
|
|
784
|
+
if (locator.value === '') {
|
|
785
|
+
throw new protocol_js_1.InvalidSelectorException('innerText locator cannot be empty');
|
|
786
|
+
}
|
|
787
|
+
return {
|
|
788
|
+
functionDeclaration: String((innerTextSelector, fullMatch, ignoreCase, maxNodeCount, maxDepth, ...startNodes) => {
|
|
789
|
+
const searchText = ignoreCase
|
|
790
|
+
? innerTextSelector.toUpperCase()
|
|
791
|
+
: innerTextSelector;
|
|
792
|
+
const locateNodesUsingInnerText = (element, currentMaxDepth) => {
|
|
793
|
+
const returnedNodes = [];
|
|
794
|
+
const nodeInnerText = ignoreCase
|
|
795
|
+
? element.innerText?.toUpperCase()
|
|
796
|
+
: element.innerText;
|
|
797
|
+
if (!nodeInnerText.includes(searchText)) {
|
|
798
|
+
return [];
|
|
799
|
+
}
|
|
800
|
+
const childNodes = [];
|
|
801
|
+
for (const child of element.children) {
|
|
802
|
+
if (child instanceof HTMLElement) {
|
|
803
|
+
childNodes.push(child);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
if (childNodes.length === 0) {
|
|
807
|
+
if (fullMatch && nodeInnerText === searchText) {
|
|
808
|
+
returnedNodes.push(element);
|
|
809
|
+
}
|
|
810
|
+
else {
|
|
811
|
+
if (!fullMatch) {
|
|
812
|
+
// Note: `nodeInnerText.includes(searchText)` is already checked
|
|
813
|
+
returnedNodes.push(element);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
else {
|
|
818
|
+
const childNodeMatches =
|
|
819
|
+
// Don't search deeper if `maxDepth` is reached.
|
|
820
|
+
currentMaxDepth === 0
|
|
821
|
+
? []
|
|
822
|
+
: childNodes
|
|
823
|
+
.map((child) => locateNodesUsingInnerText(child, currentMaxDepth - 1))
|
|
824
|
+
.flat(1);
|
|
825
|
+
if (childNodeMatches.length === 0) {
|
|
826
|
+
// Note: `nodeInnerText.includes(searchText)` is already checked
|
|
827
|
+
if (!fullMatch || nodeInnerText === searchText) {
|
|
828
|
+
returnedNodes.push(element);
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
else {
|
|
832
|
+
returnedNodes.push(...childNodeMatches);
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
// TODO: stop search early if `maxNodeCount` is reached.
|
|
836
|
+
return returnedNodes;
|
|
837
|
+
};
|
|
838
|
+
// TODO: add maxDepth.
|
|
839
|
+
// TODO: stop search early if `maxNodeCount` is reached.
|
|
840
|
+
startNodes = startNodes.length > 0 ? startNodes : [document.body];
|
|
841
|
+
const returnedNodes = startNodes
|
|
842
|
+
.map((startNode) =>
|
|
843
|
+
// TODO: stop search early if `maxNodeCount` is reached.
|
|
844
|
+
locateNodesUsingInnerText(startNode, maxDepth))
|
|
845
|
+
.flat(1);
|
|
846
|
+
return maxNodeCount === 0
|
|
847
|
+
? returnedNodes
|
|
848
|
+
: returnedNodes.slice(0, maxNodeCount);
|
|
849
|
+
}),
|
|
850
|
+
argumentsLocalValues: [
|
|
851
|
+
// `innerTextSelector`
|
|
852
|
+
{ type: 'string', value: locator.value },
|
|
853
|
+
// `fullMatch` with default `true`.
|
|
854
|
+
{ type: 'boolean', value: locator.matchType !== 'partial' },
|
|
855
|
+
// `ignoreCase` with default `false`.
|
|
856
|
+
{ type: 'boolean', value: locator.ignoreCase === true },
|
|
857
|
+
// `maxNodeCount` with `0` means no limit.
|
|
858
|
+
{ type: 'number', value: maxNodeCount ?? 0 },
|
|
859
|
+
// `maxDepth` with default `1000` (same as default full serialization depth).
|
|
860
|
+
{ type: 'number', value: locator.maxDepth ?? 1000 },
|
|
861
|
+
// `startNodes`
|
|
862
|
+
...startNodes,
|
|
863
|
+
],
|
|
864
|
+
};
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
async #locateNodesByLocator(realm, locator, startNodes, maxNodeCount, serializationOptions) {
|
|
868
|
+
const locatorDelegate = this.#getLocatorDelegate(locator, maxNodeCount, startNodes);
|
|
869
|
+
serializationOptions = {
|
|
870
|
+
...serializationOptions,
|
|
871
|
+
// The returned object is an array of nodes, so no need in deeper JS serialization.
|
|
872
|
+
maxObjectDepth: 1,
|
|
873
|
+
};
|
|
874
|
+
const locatorResult = await realm.callFunction(locatorDelegate.functionDeclaration, { type: 'undefined' }, locatorDelegate.argumentsLocalValues, false, "none" /* Script.ResultOwnership.None */, serializationOptions, false);
|
|
875
|
+
if (locatorResult.type !== 'success') {
|
|
876
|
+
this.#logger?.(BrowsingContextImpl.LOGGER_PREFIX, 'Failed locateNodesByLocator', locatorResult);
|
|
877
|
+
// Heuristic to detect invalid selector for different types of selectors.
|
|
878
|
+
if (
|
|
879
|
+
// CSS selector.
|
|
880
|
+
locatorResult.exceptionDetails.text?.endsWith('is not a valid selector.') ||
|
|
881
|
+
// XPath selector.
|
|
882
|
+
locatorResult.exceptionDetails.text?.endsWith('is not a valid XPath expression.')) {
|
|
883
|
+
throw new protocol_js_1.InvalidSelectorException(`Not valid selector ${locator.value}`);
|
|
884
|
+
}
|
|
885
|
+
// Heuristic to detect if the `startNode` is not an `HTMLElement` in css selector.
|
|
886
|
+
if (locatorResult.exceptionDetails.text ===
|
|
887
|
+
'Error: startNodes in css selector should be HTMLElement') {
|
|
888
|
+
throw new protocol_js_1.InvalidArgumentException(`startNodes in css selector should be HTMLElement`);
|
|
889
|
+
}
|
|
890
|
+
throw new protocol_js_1.UnknownErrorException(`Unexpected error in selector script: ${locatorResult.exceptionDetails.text}`);
|
|
891
|
+
}
|
|
892
|
+
if (locatorResult.result.type !== 'array') {
|
|
893
|
+
throw new protocol_js_1.UnknownErrorException(`Unexpected selector script result type: ${locatorResult.result.type}`);
|
|
894
|
+
}
|
|
895
|
+
// Check there are no non-node elements in the result.
|
|
896
|
+
const nodes = locatorResult.result.value.map((value) => {
|
|
897
|
+
if (value.type !== 'node') {
|
|
898
|
+
throw new protocol_js_1.UnknownErrorException(`Unexpected selector script result element: ${value.type}`);
|
|
899
|
+
}
|
|
900
|
+
return value;
|
|
901
|
+
});
|
|
902
|
+
return { nodes };
|
|
903
|
+
}
|
|
717
904
|
}
|
|
718
905
|
exports.BrowsingContextImpl = BrowsingContextImpl;
|
|
719
906
|
function serializeOrigin(origin) {
|