chromium-bidi 0.9.1 → 0.10.1
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 +81 -3
- package/lib/cjs/bidiMapper/BidiNoOpParser.d.ts +3 -0
- package/lib/cjs/bidiMapper/BidiNoOpParser.js +9 -0
- package/lib/cjs/bidiMapper/BidiNoOpParser.js.map +1 -1
- package/lib/cjs/bidiMapper/BidiParser.d.ts +3 -0
- package/lib/cjs/bidiMapper/CommandProcessor.js +5 -5
- package/lib/cjs/bidiMapper/CommandProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/modules/bluetooth/BluetoothProcessor.js +4 -0
- package/lib/cjs/bidiMapper/modules/bluetooth/BluetoothProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/modules/browser/BrowserProcessor.d.ts +3 -1
- package/lib/cjs/bidiMapper/modules/browser/BrowserProcessor.js +32 -1
- package/lib/cjs/bidiMapper/modules/browser/BrowserProcessor.js.map +1 -1
- package/lib/cjs/bidiMapper/modules/context/BrowsingContextImpl.js +84 -40
- package/lib/cjs/bidiMapper/modules/context/BrowsingContextImpl.js.map +1 -1
- package/lib/cjs/bidiMapper/modules/input/InputSource.d.ts +6 -6
- package/lib/cjs/bidiMapper/modules/network/NetworkStorage.d.ts +1 -1
- package/lib/cjs/bidiTab/BidiParser.d.ts +3 -0
- package/lib/cjs/bidiTab/BidiParser.js +26 -7
- package/lib/cjs/bidiTab/BidiParser.js.map +1 -1
- package/lib/cjs/protocol/generated/webdriver-bidi.d.ts +5 -3
- package/lib/cjs/protocol/protocol.js +17 -7
- package/lib/cjs/protocol/protocol.js.map +1 -1
- package/lib/cjs/protocol-parser/generated/webdriver-bidi-bluetooth.d.ts +26 -26
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.d.ts +540 -124
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.js +5 -3
- package/lib/cjs/protocol-parser/generated/webdriver-bidi.js.map +1 -1
- package/lib/cjs/protocol-parser/protocol-parser.d.ts +3 -0
- package/lib/cjs/protocol-parser/protocol-parser.js +30 -7
- package/lib/cjs/protocol-parser/protocol-parser.js.map +1 -1
- package/lib/cjs/utils/Deferred.d.ts +1 -1
- package/lib/cjs/utils/Deferred.js.map +1 -1
- package/lib/cjs/utils/UrlHelpers.d.ts +8 -0
- package/lib/cjs/utils/UrlHelpers.js +52 -0
- package/lib/cjs/utils/UrlHelpers.js.map +1 -0
- package/lib/esm/bidiMapper/BidiNoOpParser.d.ts +3 -0
- package/lib/esm/bidiMapper/BidiNoOpParser.js +9 -0
- package/lib/esm/bidiMapper/BidiNoOpParser.js.map +1 -1
- package/lib/esm/bidiMapper/BidiParser.d.ts +3 -0
- package/lib/esm/bidiMapper/CommandProcessor.js +5 -5
- package/lib/esm/bidiMapper/CommandProcessor.js.map +1 -1
- package/lib/esm/bidiMapper/modules/bluetooth/BluetoothProcessor.js +4 -0
- package/lib/esm/bidiMapper/modules/bluetooth/BluetoothProcessor.js.map +1 -1
- package/lib/esm/bidiMapper/modules/browser/BrowserProcessor.d.ts +3 -1
- package/lib/esm/bidiMapper/modules/browser/BrowserProcessor.js +32 -1
- package/lib/esm/bidiMapper/modules/browser/BrowserProcessor.js.map +1 -1
- package/lib/esm/bidiMapper/modules/context/BrowsingContextImpl.js +84 -40
- package/lib/esm/bidiMapper/modules/context/BrowsingContextImpl.js.map +1 -1
- package/lib/esm/bidiMapper/modules/input/InputSource.d.ts +6 -6
- package/lib/esm/bidiMapper/modules/network/NetworkStorage.d.ts +1 -1
- package/lib/esm/bidiServer/BrowserInstance.js +2 -1
- package/lib/esm/bidiServer/BrowserInstance.js.map +1 -1
- package/lib/esm/bidiTab/BidiParser.d.ts +3 -0
- package/lib/esm/bidiTab/BidiParser.js +9 -0
- package/lib/esm/bidiTab/BidiParser.js.map +1 -1
- package/lib/esm/protocol/generated/webdriver-bidi.d.ts +5 -3
- package/lib/esm/protocol-parser/generated/webdriver-bidi-bluetooth.d.ts +26 -26
- package/lib/esm/protocol-parser/generated/webdriver-bidi.d.ts +540 -124
- package/lib/esm/protocol-parser/generated/webdriver-bidi.js +5 -3
- package/lib/esm/protocol-parser/generated/webdriver-bidi.js.map +1 -1
- package/lib/esm/protocol-parser/protocol-parser.d.ts +3 -0
- package/lib/esm/protocol-parser/protocol-parser.js +13 -0
- package/lib/esm/protocol-parser/protocol-parser.js.map +1 -1
- package/lib/esm/utils/Deferred.d.ts +1 -1
- package/lib/esm/utils/Deferred.js.map +1 -1
- package/lib/esm/utils/UrlHelpers.d.ts +8 -0
- package/lib/esm/utils/UrlHelpers.js +49 -0
- package/lib/esm/utils/UrlHelpers.js.map +1 -0
- package/lib/iife/mapperTab.js +209 -49
- package/lib/iife/mapperTab.js.map +1 -1
- package/package.json +15 -15
package/.browser
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
chrome@
|
|
1
|
+
chrome@133.0.6857.0
|
package/README.md
CHANGED
|
@@ -252,8 +252,13 @@ npm run unit
|
|
|
252
252
|
|
|
253
253
|
### E2E tests
|
|
254
254
|
|
|
255
|
-
The
|
|
256
|
-
|
|
255
|
+
The e2e tests serve the following purposes:
|
|
256
|
+
|
|
257
|
+
1. Brief checks of the scenarios (the detailed check is done in WPT)
|
|
258
|
+
2. Test Chromium-specific behavior nuances
|
|
259
|
+
3. Add a simple setup for engaging the specific command
|
|
260
|
+
|
|
261
|
+
The E2E tests are written using Python, in order to more-or-less align with the web-platform-tests.
|
|
257
262
|
|
|
258
263
|
#### Installation
|
|
259
264
|
|
|
@@ -525,7 +530,7 @@ Otherwise submit an issue for a project maintainer.
|
|
|
525
530
|
third_party/bidimapper/roll_bidmapper
|
|
526
531
|
```
|
|
527
532
|
|
|
528
|
-
3. Submit a CL with bug `
|
|
533
|
+
3. Submit a CL with bug `42323268` ([link](https://crbug.com/42323268)).
|
|
529
534
|
|
|
530
535
|
4. [Regenerate WPT expectations or baselines](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/testing/run_web_platform_tests.md#test-expectations-and-baselines):
|
|
531
536
|
|
|
@@ -540,3 +545,76 @@ third_party/bidimapper/roll_bidmapper
|
|
|
540
545
|
Commit the changes (if any), and upload the new patch to the CL.
|
|
541
546
|
|
|
542
547
|
5. Add appropriate reviewers or comment the CL link on the PR.
|
|
548
|
+
|
|
549
|
+
## Adding new command
|
|
550
|
+
|
|
551
|
+
Want to add a shiny new command to WebDriver BiDi for Chromium? Here's the playbook:
|
|
552
|
+
|
|
553
|
+
### Prerequisites
|
|
554
|
+
|
|
555
|
+
#### Specification
|
|
556
|
+
|
|
557
|
+
The WebDriver BiDi [module](https://w3c.github.io/webdriver-bidi/#protocol-modules), [command](https://w3c.github.io/webdriver-bidi/#commands), or [event](https://w3c.github.io/webdriver-bidi/#events) must be specified either in the [WebDriver BiDi specification](https://w3c.github.io/webdriver-bidi) or as an extension in a separate specification (e.g., the [Permissions specification](https://www.w3.org/TR/permissions/#automation-webdriver-bidi)). The specification should include the command's type definitions in valid [CDDL](https://datatracker.ietf.org/doc/html/rfc8610) format.
|
|
558
|
+
|
|
559
|
+
#### WPT wdspec tests
|
|
560
|
+
|
|
561
|
+
You'll need tests to prove your command works as expected. These tests should be written using [WPT wdspec](https://web-platform-tests.org/writing-tests/wdspec.html) and submitted along with the spec itself. Don't forget to roll the WPT repo into the Mapper ([dependabot](https://github.com/GoogleChromeLabs/chromium-bidi/network/updates/10663151/jobs) can help, and you will likely need to tweak some expectations afterward).
|
|
562
|
+
|
|
563
|
+
#### CDP implementation
|
|
564
|
+
|
|
565
|
+
Make sure Chromium already has the CDP methods your command will rely on.
|
|
566
|
+
|
|
567
|
+
### Update CDDL types
|
|
568
|
+
|
|
569
|
+
1. If your command lives in a separate spec, add a link to that spec in the ["Build WebDriverBiDi types"](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/.github/workflows/update-bidi-types.yml#L27) GitHub action (check out the ["bluetooth" pull request](https://github.com/GoogleChromeLabs/chromium-bidi/pull/2585) for an example).
|
|
570
|
+
2. Run the ["Update WebdriverBiDi types"](https://github.com/GoogleChromeLabs/chromium-bidi/actions/workflows/update-bidi-types.yml) GitHub action. This will create a pull request with your new types. If you added a command, this PR will have a failing check complaining about a non-exhaustive switch statement:
|
|
571
|
+
> error: Switch is not exhaustive. Cases not matched: "{NEW_COMMAND_NAME}" @typescript-eslint/switch-exhaustiveness-check
|
|
572
|
+
3. Update the created pull request. Add your new command to [`CommandProcessor.#processCommand`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/CommandProcessor.ts#L140). For now, just have it throw an UnknownErrorException (see the [example](https://github.com/GoogleChromeLabs/chromium-bidi/pull/2647/files#diff-7f06ce28b8514fd75b759d217bff9f5a471b657bcf78bd893cc291c7945c1cacR169) for how to do this).
|
|
573
|
+
|
|
574
|
+
```typescript
|
|
575
|
+
case '{NEW_COMMAND_NAME}':
|
|
576
|
+
throw new UnknownErrorException(
|
|
577
|
+
`Method ${command.method} is not implemented.`,
|
|
578
|
+
);
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
4. Merge it! Standard PR process: create, review, merge.
|
|
582
|
+
|
|
583
|
+
### Implement the new command
|
|
584
|
+
|
|
585
|
+
[`CommandProcessor.#processCommand`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/CommandProcessor.ts#L140) handles parsing parameters and running your command.
|
|
586
|
+
|
|
587
|
+
#### (only if the new command has non-empty parameters) parse command parameters
|
|
588
|
+
|
|
589
|
+
If your command has parameters, update the [`BidiCommandParameterParser`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/BidiParser.ts#L31) and implement the parsing logic in [`BidiNoOpParser`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/BidiNoOpParser.ts#L209), [`BidiParser`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiTab/BidiParser.ts#L182) and [`protocol-parser`](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/protocol-parser/protocol-parser.ts#L386). Look at the [example](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/BidiParser.ts#L97) for guidance.
|
|
590
|
+
|
|
591
|
+
#### Implement the new command
|
|
592
|
+
|
|
593
|
+
Write the core logic for your command in the appropriate domain processor. Again, [example](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/modules/permissions/PermissionsProcessor.ts#L32) is your friend.
|
|
594
|
+
|
|
595
|
+
#### Call the domain processor's method
|
|
596
|
+
|
|
597
|
+
Call your new domain processor method from `CommandProcessor.#processCommand`, passing in the parsed parameters. [Example](https://github.com/GoogleChromeLabs/chromium-bidi/blob/0f971303281aba1910786035facc5eb54a833232/src/bidiMapper/CommandProcessor.ts#L313).
|
|
598
|
+
|
|
599
|
+
#### Add e2e tests
|
|
600
|
+
|
|
601
|
+
Write end-to-end tests for your command, including the happy path and any edge cases that might trip things up. Focus on testing the code in the mapper.
|
|
602
|
+
|
|
603
|
+
#### Update WPT expectations
|
|
604
|
+
|
|
605
|
+
Your WPT tests will probably fail now.
|
|
606
|
+
|
|
607
|
+
> Tests with unexpected results: PASS [expected FAIL] ...
|
|
608
|
+
|
|
609
|
+
Update the expectations in a draft PR with the "update-expectations" label. This will trigger an automated PR "test: update the expectations for PR" that you'll need to merge to your branch.
|
|
610
|
+
|
|
611
|
+
#### Merge it!
|
|
612
|
+
|
|
613
|
+
Mark your PR as ready, get it reviewed, and merge it in.
|
|
614
|
+
|
|
615
|
+
### Roll in ChromeDriver
|
|
616
|
+
|
|
617
|
+
This bit usually involves the core devs:
|
|
618
|
+
|
|
619
|
+
1. [Release](#automatic-release) your changes.
|
|
620
|
+
2. [Roll the changes into ChromeDriver](#roll-into-chromium).
|
|
@@ -18,6 +18,9 @@ import type { Browser, BrowsingContext, Cdp, Input, Network, Script, Session, St
|
|
|
18
18
|
import type { BidiCommandParameterParser } from './BidiParser.js';
|
|
19
19
|
export declare class BidiNoOpParser implements BidiCommandParameterParser {
|
|
20
20
|
parseHandleRequestDevicePromptParams(params: unknown): Bluetooth.HandleRequestDevicePromptParameters;
|
|
21
|
+
parseSimulateAdapterParameters(params: unknown): Bluetooth.SimulateAdapterParameters;
|
|
22
|
+
parseSimulateAdvertisementParameters(params: unknown): Bluetooth.SimulateAdvertisementParameters;
|
|
23
|
+
parseSimulatePreconnectedPeripheralParameters(params: unknown): Bluetooth.SimulatePreconnectedPeripheralParameters;
|
|
21
24
|
parseRemoveUserContextParams(params: unknown): Browser.RemoveUserContextParameters;
|
|
22
25
|
parseActivateParams(params: unknown): BrowsingContext.ActivateParameters;
|
|
23
26
|
parseCaptureScreenshotParams(params: unknown): BrowsingContext.CaptureScreenshotParameters;
|
|
@@ -23,6 +23,15 @@ class BidiNoOpParser {
|
|
|
23
23
|
parseHandleRequestDevicePromptParams(params) {
|
|
24
24
|
return params;
|
|
25
25
|
}
|
|
26
|
+
parseSimulateAdapterParameters(params) {
|
|
27
|
+
return params;
|
|
28
|
+
}
|
|
29
|
+
parseSimulateAdvertisementParameters(params) {
|
|
30
|
+
return params;
|
|
31
|
+
}
|
|
32
|
+
parseSimulatePreconnectedPeripheralParameters(params) {
|
|
33
|
+
return params;
|
|
34
|
+
}
|
|
26
35
|
// keep-sorted end
|
|
27
36
|
// Browser domain
|
|
28
37
|
// keep-sorted start block=yes
|
|
@@ -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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"}
|
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
import type { Bluetooth, Browser, BrowsingContext, Cdp, Input, Network, Permissions, Script, Session, Storage } from '../protocol/protocol.js';
|
|
18
18
|
export interface BidiCommandParameterParser {
|
|
19
19
|
parseHandleRequestDevicePromptParams(params: unknown): Bluetooth.HandleRequestDevicePromptParameters;
|
|
20
|
+
parseSimulateAdapterParameters(params: unknown): Bluetooth.SimulateAdapterParameters;
|
|
21
|
+
parseSimulateAdvertisementParameters(params: unknown): Bluetooth.SimulateAdvertisementParameters;
|
|
22
|
+
parseSimulatePreconnectedPeripheralParameters(params: unknown): Bluetooth.SimulatePreconnectedPeripheralParameters;
|
|
20
23
|
parseRemoveUserContextParams(params: unknown): Browser.RemoveUserContextParameters;
|
|
21
24
|
parseActivateParams(params: unknown): BrowsingContext.ActivateParameters;
|
|
22
25
|
parseCaptureScreenshotParams(params: unknown): BrowsingContext.CaptureScreenshotParameters;
|
|
@@ -52,7 +52,7 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
52
52
|
this.#logger = logger;
|
|
53
53
|
this.#bluetoothProcessor = bluetoothProcessor;
|
|
54
54
|
// keep-sorted start block=yes
|
|
55
|
-
this.#browserProcessor = new BrowserProcessor_js_1.BrowserProcessor(browserCdpClient);
|
|
55
|
+
this.#browserProcessor = new BrowserProcessor_js_1.BrowserProcessor(browserCdpClient, browsingContextStorage);
|
|
56
56
|
this.#browsingContextProcessor = new BrowsingContextProcessor_js_1.BrowsingContextProcessor(browserCdpClient, browsingContextStorage, eventManager);
|
|
57
57
|
this.#cdpProcessor = new CdpProcessor_js_1.CdpProcessor(browsingContextStorage, realmStorage, cdpConnection, browserCdpClient);
|
|
58
58
|
this.#inputProcessor = new InputProcessor_js_1.InputProcessor(browsingContextStorage);
|
|
@@ -73,11 +73,11 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
73
73
|
case 'bluetooth.handleRequestDevicePrompt':
|
|
74
74
|
return await this.#bluetoothProcessor.handleRequestDevicePrompt(this.#parser.parseHandleRequestDevicePromptParams(command.params));
|
|
75
75
|
case 'bluetooth.simulateAdapter':
|
|
76
|
-
return await this.#bluetoothProcessor.simulateAdapter(command.params);
|
|
76
|
+
return await this.#bluetoothProcessor.simulateAdapter(this.#parser.parseSimulateAdapterParameters(command.params));
|
|
77
77
|
case 'bluetooth.simulateAdvertisement':
|
|
78
|
-
return await this.#bluetoothProcessor.simulateAdvertisement(command.params);
|
|
78
|
+
return await this.#bluetoothProcessor.simulateAdvertisement(this.#parser.parseSimulateAdvertisementParameters(command.params));
|
|
79
79
|
case 'bluetooth.simulatePreconnectedPeripheral':
|
|
80
|
-
return await this.#bluetoothProcessor.simulatePreconnectedPeripheral(command.params);
|
|
80
|
+
return await this.#bluetoothProcessor.simulatePreconnectedPeripheral(this.#parser.parseSimulatePreconnectedPeripheralParameters(command.params));
|
|
81
81
|
// keep-sorted end
|
|
82
82
|
// Browser domain
|
|
83
83
|
// keep-sorted start block=yes
|
|
@@ -86,7 +86,7 @@ class CommandProcessor extends EventEmitter_js_1.EventEmitter {
|
|
|
86
86
|
case 'browser.createUserContext':
|
|
87
87
|
return await this.#browserProcessor.createUserContext(command.params);
|
|
88
88
|
case 'browser.getClientWindows':
|
|
89
|
-
|
|
89
|
+
return await this.#browserProcessor.getClientWindows();
|
|
90
90
|
case 'browser.getUserContexts':
|
|
91
91
|
return await this.#browserProcessor.getUserContexts();
|
|
92
92
|
case 'browser.removeUserContext':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandProcessor.js","sourceRoot":"","sources":["../../../src/bidiMapper/CommandProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH,yDAMiC;AACjC,8DAAsD;AACtD,4CAAuD;AAGvD,2DAAmD;AAInD,+EAAuE;AACvE,mEAA2D;AAC3D,+FAAuF;AAEvF,yEAAiE;AACjE,+EAAuE;AAEvE,2FAAmF;AAGnF,4EAAoE;AAEpE,+EAAuE;AACvE,+EAAuE;AACvE,6DAAqD;AAarD,MAAa,gBAAiB,SAAQ,8BAAuC;IAC3E,oBAAoB;IACpB,mBAAmB,CAAqB;IACxC,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,sBAA8C,EAC9C,YAA0B,EAC1B,oBAA0C,EAC1C,cAA8B,EAC9B,kBAAsC,EACtC,SAAqC,IAAI,kCAAc,EAAE,EACzD,cAAyD,EACzD,MAAiB;QAEjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAE9C,8BAA8B;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAgB,
|
|
1
|
+
{"version":3,"file":"CommandProcessor.js","sourceRoot":"","sources":["../../../src/bidiMapper/CommandProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH,yDAMiC;AACjC,8DAAsD;AACtD,4CAAuD;AAGvD,2DAAmD;AAInD,+EAAuE;AACvE,mEAA2D;AAC3D,+FAAuF;AAEvF,yEAAiE;AACjE,+EAAuE;AAEvE,2FAAmF;AAGnF,4EAAoE;AAEpE,+EAAuE;AACvE,+EAAuE;AACvE,6DAAqD;AAarD,MAAa,gBAAiB,SAAQ,8BAAuC;IAC3E,oBAAoB;IACpB,mBAAmB,CAAqB;IACxC,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,sBAA8C,EAC9C,YAA0B,EAC1B,oBAA0C,EAC1C,cAA8B,EAC9B,kBAAsC,EACtC,SAAqC,IAAI,kCAAc,EAAE,EACzD,cAAyD,EACzD,MAAiB;QAEjB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAE9C,8BAA8B;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAgB,CAC3C,gBAAgB,EAChB,sBAAsB,CACvB,CAAC;QACF,IAAI,CAAC,yBAAyB,GAAG,IAAI,sDAAwB,CAC3D,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,CACb,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAY,CACnC,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,kCAAc,CAAC,sBAAsB,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAgB,CAC3C,sBAAsB,EACtB,cAAc,CACf,CAAC;QACF,IAAI,CAAC,qBAAqB,GAAG,IAAI,8CAAoB,CAAC,gBAAgB,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,GAAG,IAAI,oCAAe,CACzC,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,MAAM,CACP,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAgB,CAC3C,YAAY,EACZ,gBAAgB,EAChB,cAAc,CACf,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,sCAAgB,CAC3C,gBAAgB,EAChB,sBAAsB,EACtB,MAAM,CACP,CAAC;QACF,kBAAkB;IACpB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,OAA6B;QAE7B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,aAAa;gBAChB,mBAAmB;gBACnB,MAAM;YAER,mBAAmB;YACnB,8BAA8B;YAC9B,KAAK,qCAAqC;gBACxC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAC7D,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,OAAO,CAAC,MAAM,CAAC,CAClE,CAAC;YACJ,KAAK,2BAA2B;gBAC9B,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,CACnD,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5D,CAAC;YACJ,KAAK,iCAAiC;gBACpC,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CACzD,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAAC,OAAO,CAAC,MAAM,CAAC,CAClE,CAAC;YACJ,KAAK,0CAA0C;gBAC7C,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,CAClE,IAAI,CAAC,OAAO,CAAC,6CAA6C,CACxD,OAAO,CAAC,MAAM,CACf,CACF,CAAC;YACJ,kBAAkB;YAElB,iBAAiB;YACjB,8BAA8B;YAC9B,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YACxC,KAAK,2BAA2B;gBAC9B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxE,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;YACzD,KAAK,yBAAyB;gBAC5B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;YACxD,KAAK,2BAA2B;gBAC9B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CACnD,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,CAC1D,CAAC;YACJ,KAAK,8BAA8B;gBACjC,MAAM,IAAI,mCAAqB,CAC7B,UAAU,OAAO,CAAC,MAAM,sBAAsB,CAC/C,CAAC;YACJ,kBAAkB;YAElB,0BAA0B;YAC1B,8BAA8B;YAC9B,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAClD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CACjD,CAAC;YACJ,KAAK,mCAAmC;gBACtC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAC3D,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,CAC1D,CAAC;YACJ,KAAK,uBAAuB;gBAC1B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAC/C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC9C,CAAC;YACJ,KAAK,wBAAwB;gBAC3B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC/C,CAAC;YACJ,KAAK,yBAAyB;gBAC5B,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAC3C,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAChD,CAAC;YACJ,KAAK,kCAAkC;gBACrC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAC1D,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,CACzD,CAAC;YACJ,KAAK,6BAA6B;gBAChC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CACrD,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CACpD,CAAC;YACJ,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAClD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CACjD,CAAC;YACJ,KAAK,uBAAuB;gBAC1B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAC/C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC9C,CAAC;YACJ,KAAK,wBAAwB;gBAC3B,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAChD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC/C,CAAC;YACJ,KAAK,6BAA6B;gBAChC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CACrD,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CACpD,CAAC;YACJ,KAAK,iCAAiC;gBACpC,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,CACzD,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CACxD,CAAC;YACJ,kBAAkB;YAElB,aAAa;YACb,8BAA8B;YAC9B,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAClC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CACnD,CAAC;YACJ,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CACpC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CACrD,CAAC;YACJ,KAAK,iBAAiB;gBACpB,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CACzC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CACpD,CAAC;YACJ,kBAAkB;YAElB,eAAe;YACf,8BAA8B;YAC9B,KAAK,sBAAsB;gBACzB,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAC9C,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CACvD,CAAC;YACJ,KAAK,sBAAsB;gBACzB,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAC9C,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CACvD,CAAC;YACJ,KAAK,gBAAgB;gBACnB,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CACxC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CACjD,CAAC;YACJ,kBAAkB;YAElB,iBAAiB;YACjB,8BAA8B;YAC9B,KAAK,sBAAsB;gBACzB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAC9C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CACrD,CAAC;YACJ,KAAK,yBAAyB;gBAC5B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CACxD,CAAC;YACJ,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAClD,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,CACzD,CAAC;YACJ,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAClD,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,CACzD,CAAC;YACJ,KAAK,qBAAqB;gBACxB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAC7C,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CACpD,CAAC;YACJ,KAAK,yBAAyB;gBAC5B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CACxD,CAAC;YACJ,KAAK,yBAAyB;gBAC5B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACjD,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,CACxD,CAAC;YACJ,KAAK,0BAA0B;gBAC7B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAClD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CACnD,CAAC;YACJ,kBAAkB;YAElB,qBAAqB;YACrB,8BAA8B;YAC9B,KAAK,2BAA2B;gBAC9B,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CACpD,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CACvD,CAAC;YACJ,kBAAkB;YAElB,gBAAgB;YAChB,8BAA8B;YAC9B,KAAK,yBAAyB;gBAC5B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACjD,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,CACzD,CAAC;YACJ,KAAK,qBAAqB;gBACxB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAC7C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAClC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC1C,CACF,CAAC;YACJ,KAAK,eAAe;gBAClB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAC5B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC1C,CACF,CAAC;YACJ,KAAK,iBAAiB;gBACpB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CACzC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAC9B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAC1C,CACF,CAAC;YACJ,KAAK,kBAAkB;gBACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAClD,CAAC;YACJ,KAAK,4BAA4B;gBAC/B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CACpD,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5D,CAAC;YACJ,kBAAkB;YAElB,iBAAiB;YACjB,8BAA8B;YAC9B,KAAK,aAAa;gBAChB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACzC,KAAK,mBAAmB;gBACtB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAC3C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,EACjD,OAAO,CAAC,OAAO,CAChB,CAAC;YACJ,KAAK,qBAAqB;gBACxB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAC7C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,EACjD,OAAO,CAAC,OAAO,CAChB,CAAC;YACJ,kBAAkB;YAElB,iBAAiB;YACjB,8BAA8B;YAC9B,KAAK,uBAAuB;gBAC1B,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAC/C,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CACtD,CAAC;YACJ,KAAK,oBAAoB;gBACvB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAC5C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CACnD,CAAC;YACJ,KAAK,mBAAmB;gBACtB,OAAO,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAC3C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAClD,CAAC;YACJ,kBAAkB;QACpB,CAAC;QAED,iEAAiE;QACjE,0EAA0E;QAC1E,oBAAoB;QACpB,MAAM,IAAI,qCAAuB,CAAC,oBAAoB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,2DAA2D;IAC3D,mDAAmD;IACnD,oBAAoB,CAAC,MAA+B;QAClD,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM;YACN,QAAQ,IAAI,MAAM;YAClB,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YACjC,MAAM,CAAC,MAAM;YACb,SAAS,IAAI,MAAM,CAAC,MAAM,EAC1B,CAAC;YACD,OAAQ,MAAM,CAAC,MAAc,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA6B;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM;aACgC,CAAC;YAEzC,IAAI,CAAC,IAAI,mDAAkC;gBACzC,OAAO,EAAE,oCAAe,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;gBAClE,KAAK,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,uBAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,mDAAkC;oBACzC,OAAO,EAAE,oCAAe,CAAC,cAAc,CACrC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAC7B,OAAO,CAAC,OAAO,CAChB;oBACD,KAAK,EAAE,OAAO,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,CAAU,CAAC;gBACzB,IAAI,CAAC,OAAO,EAAE,CAAC,gBAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,IAAI,mDAAkC;oBACzC,OAAO,EAAE,oCAAe,CAAC,cAAc,CACrC,IAAI,mCAAqB,CACvB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,CACZ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAC7B,OAAO,CAAC,OAAO,CAChB;oBACD,KAAK,EAAE,OAAO,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAlYD,4CAkYC"}
|
|
@@ -26,6 +26,10 @@ class BluetoothProcessor {
|
|
|
26
26
|
}
|
|
27
27
|
async simulateAdapter(params) {
|
|
28
28
|
const context = this.#browsingContextStorage.getContext(params.context);
|
|
29
|
+
// Bluetooth spec requires overriding the existing adapter (step 6). From the CDP
|
|
30
|
+
// perspective, we need to disable the emulation first.
|
|
31
|
+
// https://webbluetoothcg.github.io/web-bluetooth/#bluetooth-simulateAdapter-command
|
|
32
|
+
await context.cdpTarget.browserCdpClient.sendCommand('BluetoothEmulation.disable');
|
|
29
33
|
await context.cdpTarget.browserCdpClient.sendCommand('BluetoothEmulation.enable', {
|
|
30
34
|
state: params.state,
|
|
31
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BluetoothProcessor.js","sourceRoot":"","sources":["../../../../../src/bidiMapper/modules/bluetooth/BluetoothProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAOH,MAAa,kBAAkB;IAC7B,aAAa,CAAe;IAC5B,uBAAuB,CAAyB;IAEhD,YACE,YAA0B,EAC1B,sBAA8C;QAE9C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,sBAAsB,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,MAA2C;QAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAClD,2BAA2B,EAC3B;YACE,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,8BAA8B,CAClC,MAA0D;QAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAClD,mDAAmD,EACnD;YACE,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,MAAiD;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAClD,0CAA0C,EAC1C;YACE,KAAK,EAAE,MAAM,CAAC,SAAS;SACxB,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,kBAAkB,CAAC,SAAoB;QACrC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,EAAE;YACrE,IAAI,CAAC,aAAa,CAAC,aAAa,CAC9B;gBACE,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,sCAAsC;gBAC9C,MAAM,EAAE;oBACN,OAAO,EAAE,SAAS,CAAC,EAAE;oBACrB,MAAM,EAAE,KAAK,CAAC,EAAE;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,EACD,SAAS,CAAC,EAAE,CACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,MAAqD;QAErD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAExE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAC3C,2BAA2B,EAC3B;gBACE,EAAE,EAAE,MAAM,CAAC,MAAM;gBACjB,QAAQ,EAAE,MAAM,CAAC,MAAM;aACxB,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAC3C,2BAA2B,EAC3B;gBACE,EAAE,EAAE,MAAM,CAAC,MAAM;aAClB,CACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"BluetoothProcessor.js","sourceRoot":"","sources":["../../../../../src/bidiMapper/modules/bluetooth/BluetoothProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { type EmptyResult, type Browser } from '../../../protocol/protocol.js';
|
|
18
18
|
import type { CdpClient } from '../../BidiMapper.js';
|
|
19
|
+
import type { BrowsingContextStorage } from '../context/BrowsingContextStorage';
|
|
19
20
|
export declare class BrowserProcessor {
|
|
20
21
|
#private;
|
|
21
|
-
constructor(browserCdpClient: CdpClient);
|
|
22
|
+
constructor(browserCdpClient: CdpClient, browsingContextStorage: BrowsingContextStorage);
|
|
22
23
|
close(): EmptyResult;
|
|
23
24
|
createUserContext(params: Record<string, any>): Promise<Browser.CreateUserContextResult>;
|
|
24
25
|
removeUserContext(params: Browser.RemoveUserContextParameters): Promise<EmptyResult>;
|
|
25
26
|
getUserContexts(): Promise<Browser.GetUserContextsResult>;
|
|
27
|
+
getClientWindows(): Promise<Browser.GetClientWindowsResult>;
|
|
26
28
|
}
|
|
@@ -20,8 +20,10 @@ exports.BrowserProcessor = void 0;
|
|
|
20
20
|
const protocol_js_1 = require("../../../protocol/protocol.js");
|
|
21
21
|
class BrowserProcessor {
|
|
22
22
|
#browserCdpClient;
|
|
23
|
-
|
|
23
|
+
#browsingContextStorage;
|
|
24
|
+
constructor(browserCdpClient, browsingContextStorage) {
|
|
24
25
|
this.#browserCdpClient = browserCdpClient;
|
|
26
|
+
this.#browsingContextStorage = browsingContextStorage;
|
|
25
27
|
}
|
|
26
28
|
close() {
|
|
27
29
|
// Ensure that it is put at the end of the event loop.
|
|
@@ -76,6 +78,35 @@ class BrowserProcessor {
|
|
|
76
78
|
],
|
|
77
79
|
};
|
|
78
80
|
}
|
|
81
|
+
async #getWindowInfo(targetId) {
|
|
82
|
+
const windowInfo = await this.#browserCdpClient.sendCommand('Browser.getWindowForTarget', { targetId });
|
|
83
|
+
return {
|
|
84
|
+
// `active` is not supported in CDP yet.
|
|
85
|
+
active: false,
|
|
86
|
+
clientWindow: `${windowInfo.windowId}`,
|
|
87
|
+
state: windowInfo.bounds.windowState ?? 'normal',
|
|
88
|
+
height: windowInfo.bounds.height ?? 0,
|
|
89
|
+
width: windowInfo.bounds.width ?? 0,
|
|
90
|
+
x: windowInfo.bounds.left ?? 0,
|
|
91
|
+
y: windowInfo.bounds.top ?? 0,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async getClientWindows() {
|
|
95
|
+
const topLevelTargetIds = this.#browsingContextStorage
|
|
96
|
+
.getTopLevelContexts()
|
|
97
|
+
.map((b) => b.cdpTarget.id);
|
|
98
|
+
const clientWindows = await Promise.all(topLevelTargetIds.map(async (targetId) => await this.#getWindowInfo(targetId)));
|
|
99
|
+
const uniqueClientWindowIds = new Set();
|
|
100
|
+
const uniqueClientWindows = new Array();
|
|
101
|
+
// Filter out duplicated client windows.
|
|
102
|
+
for (const window of clientWindows) {
|
|
103
|
+
if (!uniqueClientWindowIds.has(window.clientWindow)) {
|
|
104
|
+
uniqueClientWindowIds.add(window.clientWindow);
|
|
105
|
+
uniqueClientWindows.push(window);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { clientWindows: uniqueClientWindows };
|
|
109
|
+
}
|
|
79
110
|
}
|
|
80
111
|
exports.BrowserProcessor = BrowserProcessor;
|
|
81
112
|
//# sourceMappingURL=BrowserProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserProcessor.js","sourceRoot":"","sources":["../../../../../src/bidiMapper/modules/browser/BrowserProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH,+DAKuC;
|
|
1
|
+
{"version":3,"file":"BrowserProcessor.js","sourceRoot":"","sources":["../../../../../src/bidiMapper/modules/browser/BrowserProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ const assert_js_1 = require("../../../utils/assert.js");
|
|
|
24
24
|
const Deferred_js_1 = require("../../../utils/Deferred.js");
|
|
25
25
|
const log_js_1 = require("../../../utils/log.js");
|
|
26
26
|
const unitConversions_js_1 = require("../../../utils/unitConversions.js");
|
|
27
|
+
const UrlHelpers_js_1 = require("../../../utils/UrlHelpers.js");
|
|
27
28
|
const uuid_js_1 = require("../../../utils/uuid.js");
|
|
28
29
|
const WindowRealm_js_1 = require("../script/WindowRealm.js");
|
|
29
30
|
class BrowsingContextImpl {
|
|
@@ -73,6 +74,11 @@ class BrowsingContextImpl {
|
|
|
73
74
|
// Set if there is a pending navigation initiated by `BrowsingContext.navigate` command.
|
|
74
75
|
// The promise is resolved when the navigation is finished or rejected when canceled.
|
|
75
76
|
#pendingCommandNavigation;
|
|
77
|
+
// Flags if the initial navigation to `about:blank` is in progress.
|
|
78
|
+
#initialNavigation = true;
|
|
79
|
+
// Flags if the navigation is initiated by `browsingContext.navigate` or
|
|
80
|
+
// `browsingContext.reload` command.
|
|
81
|
+
#navigationInitiatedByCommand = false;
|
|
76
82
|
#originalOpener;
|
|
77
83
|
// Set when the user prompt is opened. Required to provide the type in closing event.
|
|
78
84
|
#lastUserPromptType;
|
|
@@ -335,24 +341,29 @@ class BrowsingContextImpl {
|
|
|
335
341
|
if (this.id !== params.frameId) {
|
|
336
342
|
return;
|
|
337
343
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
344
|
+
if (this.#navigationInitiatedByCommand) {
|
|
345
|
+
// In case of the navigation is initiated by `browsingContext.navigate` or
|
|
346
|
+
// `browsingContext.reload` commands, the `Page.frameRequestedNavigation` is not
|
|
347
|
+
// emitted, which means the `NavigationStarted` is not emitted.
|
|
348
|
+
// TODO: consider emit it right after the CDP command `navigate` or `reload` is finished.
|
|
349
|
+
// The URL of the navigation that is currently in progress. Although the URL
|
|
350
|
+
// is not yet known in case of user-initiated navigations, it is possible to
|
|
351
|
+
// provide the URL in case of BiDi-initiated navigations.
|
|
352
|
+
// TODO: provide proper URL in case of user-initiated navigations.
|
|
353
|
+
const url = this.#pendingNavigationUrl ?? 'UNKNOWN';
|
|
354
|
+
this.#navigationId = this.#pendingNavigationId ?? (0, uuid_js_1.uuidv4)();
|
|
355
|
+
this.#pendingNavigationId = undefined;
|
|
356
|
+
this.#eventManager.registerEvent({
|
|
357
|
+
type: 'event',
|
|
358
|
+
method: protocol_js_1.ChromiumBidi.BrowsingContext.EventNames.NavigationStarted,
|
|
359
|
+
params: {
|
|
360
|
+
context: this.id,
|
|
361
|
+
navigation: this.#navigationId,
|
|
362
|
+
timestamp: _a.getTimestamp(),
|
|
363
|
+
url,
|
|
364
|
+
},
|
|
365
|
+
}, this.id);
|
|
366
|
+
}
|
|
356
367
|
});
|
|
357
368
|
// TODO: don't use deprecated `Page.frameScheduledNavigation` event.
|
|
358
369
|
this.#cdpTarget.cdpClient.on('Page.frameScheduledNavigation', (params) => {
|
|
@@ -377,8 +388,30 @@ class BrowsingContextImpl {
|
|
|
377
388
|
url: this.#url,
|
|
378
389
|
},
|
|
379
390
|
}, this.id);
|
|
380
|
-
this.#pendingCommandNavigation.reject(protocol_js_1.
|
|
391
|
+
this.#pendingCommandNavigation.reject(new protocol_js_1.UnknownErrorException('navigation aborted'));
|
|
381
392
|
this.#pendingCommandNavigation = undefined;
|
|
393
|
+
this.#navigationInitiatedByCommand = false;
|
|
394
|
+
}
|
|
395
|
+
if (!(0, UrlHelpers_js_1.urlMatchesAboutBlank)(params.url)) {
|
|
396
|
+
// If the url does not match about:blank, do not consider it is an initial
|
|
397
|
+
// navigation and emit all the required events.
|
|
398
|
+
// https://github.com/GoogleChromeLabs/chromium-bidi/issues/2793.
|
|
399
|
+
this.#initialNavigation = false;
|
|
400
|
+
}
|
|
401
|
+
if (!this.#initialNavigation) {
|
|
402
|
+
// Do not emit the event for the initial navigation to `about:blank`.
|
|
403
|
+
this.#navigationId = this.#pendingNavigationId ?? (0, uuid_js_1.uuidv4)();
|
|
404
|
+
this.#pendingNavigationId = undefined;
|
|
405
|
+
this.#eventManager.registerEvent({
|
|
406
|
+
type: 'event',
|
|
407
|
+
method: protocol_js_1.ChromiumBidi.BrowsingContext.EventNames.NavigationStarted,
|
|
408
|
+
params: {
|
|
409
|
+
context: this.id,
|
|
410
|
+
navigation: this.#navigationId,
|
|
411
|
+
timestamp: _a.getTimestamp(),
|
|
412
|
+
url: params.url,
|
|
413
|
+
},
|
|
414
|
+
}, this.id);
|
|
382
415
|
}
|
|
383
416
|
this.#pendingNavigationUrl = params.url;
|
|
384
417
|
});
|
|
@@ -407,29 +440,37 @@ class BrowsingContextImpl {
|
|
|
407
440
|
const timestamp = _a.getTimestamp();
|
|
408
441
|
switch (params.name) {
|
|
409
442
|
case 'DOMContentLoaded':
|
|
410
|
-
this.#
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
443
|
+
if (!this.#initialNavigation) {
|
|
444
|
+
// Do not emit for the initial navigation.
|
|
445
|
+
this.#eventManager.registerEvent({
|
|
446
|
+
type: 'event',
|
|
447
|
+
method: protocol_js_1.ChromiumBidi.BrowsingContext.EventNames.DomContentLoaded,
|
|
448
|
+
params: {
|
|
449
|
+
context: this.id,
|
|
450
|
+
navigation: this.#navigationId,
|
|
451
|
+
timestamp,
|
|
452
|
+
url: this.#url,
|
|
453
|
+
},
|
|
454
|
+
}, this.id);
|
|
455
|
+
}
|
|
420
456
|
this.#lifecycle.DOMContentLoaded.resolve();
|
|
421
457
|
break;
|
|
422
458
|
case 'load':
|
|
423
|
-
this.#
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
459
|
+
if (!this.#initialNavigation) {
|
|
460
|
+
// Do not emit for the initial navigation.
|
|
461
|
+
this.#eventManager.registerEvent({
|
|
462
|
+
type: 'event',
|
|
463
|
+
method: protocol_js_1.ChromiumBidi.BrowsingContext.EventNames.Load,
|
|
464
|
+
params: {
|
|
465
|
+
context: this.id,
|
|
466
|
+
navigation: this.#navigationId,
|
|
467
|
+
timestamp,
|
|
468
|
+
url: this.#url,
|
|
469
|
+
},
|
|
470
|
+
}, this.id);
|
|
471
|
+
}
|
|
472
|
+
// The initial navigation is finished.
|
|
473
|
+
this.#initialNavigation = false;
|
|
433
474
|
this.#lifecycle.load.resolve();
|
|
434
475
|
break;
|
|
435
476
|
}
|
|
@@ -635,6 +676,7 @@ class BrowsingContextImpl {
|
|
|
635
676
|
const navigationId = (0, uuid_js_1.uuidv4)();
|
|
636
677
|
this.#pendingNavigationId = navigationId;
|
|
637
678
|
this.#pendingCommandNavigation = new Deferred_js_1.Deferred();
|
|
679
|
+
this.#navigationInitiatedByCommand = true;
|
|
638
680
|
// Navigate and wait for the result. If the navigation fails, the error event is
|
|
639
681
|
// emitted and the promise is rejected.
|
|
640
682
|
const cdpNavigatePromise = (async () => {
|
|
@@ -679,12 +721,13 @@ class BrowsingContextImpl {
|
|
|
679
721
|
]).catch((e) => {
|
|
680
722
|
// Aborting navigation should not fail the original navigation command for now.
|
|
681
723
|
// https://github.com/w3c/webdriver-bidi/issues/799#issue-2605618955
|
|
682
|
-
if (e !==
|
|
724
|
+
if (e.message !== 'navigation aborted') {
|
|
683
725
|
throw e;
|
|
684
726
|
}
|
|
685
727
|
});
|
|
686
728
|
// `#pendingCommandNavigation` can be already rejected and set to undefined.
|
|
687
729
|
this.#pendingCommandNavigation?.resolve();
|
|
730
|
+
this.#navigationInitiatedByCommand = false;
|
|
688
731
|
this.#pendingCommandNavigation = undefined;
|
|
689
732
|
return {
|
|
690
733
|
navigation: navigationId,
|
|
@@ -712,6 +755,7 @@ class BrowsingContextImpl {
|
|
|
712
755
|
async reload(ignoreCache, wait) {
|
|
713
756
|
await this.targetUnblockedOrThrow();
|
|
714
757
|
this.#resetLifecycleIfFinished();
|
|
758
|
+
this.#navigationInitiatedByCommand = true;
|
|
715
759
|
await this.#cdpTarget.cdpClient.sendCommand('Page.reload', {
|
|
716
760
|
ignoreCache,
|
|
717
761
|
});
|