chromium-bidi 0.0.0

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.
Files changed (34) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +245 -0
  3. package/package.json +58 -0
  4. package/src/.build/bidiMapper/mapper.js +26071 -0
  5. package/src/.build/bidiMapper/mapper.js.map +1 -0
  6. package/src/.build/bidiServer/bidiServerRunner.js +148 -0
  7. package/src/.build/bidiServer/bidiServerRunner.js.map +1 -0
  8. package/src/.build/bidiServer/cdp/cdpClient.js +122 -0
  9. package/src/.build/bidiServer/cdp/cdpClient.js.map +1 -0
  10. package/src/.build/bidiServer/cdp/cdpClient.spec.js +194 -0
  11. package/src/.build/bidiServer/cdp/cdpClient.spec.js.map +1 -0
  12. package/src/.build/bidiServer/cdp/cdpConnection.js +120 -0
  13. package/src/.build/bidiServer/cdp/cdpConnection.js.map +1 -0
  14. package/src/.build/bidiServer/cdp/cdpConnection.spec.js +154 -0
  15. package/src/.build/bidiServer/cdp/cdpConnection.spec.js.map +1 -0
  16. package/src/.build/bidiServer/cdp/cdpMessage.js +19 -0
  17. package/src/.build/bidiServer/cdp/cdpMessage.js.map +1 -0
  18. package/src/.build/bidiServer/cdp/index.js +24 -0
  19. package/src/.build/bidiServer/cdp/index.js.map +1 -0
  20. package/src/.build/bidiServer/cdp/websocketTransport.js +43 -0
  21. package/src/.build/bidiServer/cdp/websocketTransport.js.map +1 -0
  22. package/src/.build/bidiServer/index.js +95 -0
  23. package/src/.build/bidiServer/index.js.map +1 -0
  24. package/src/.build/bidiServer/mapperReader.js +28 -0
  25. package/src/.build/bidiServer/mapperReader.js.map +1 -0
  26. package/src/.build/bidiServer/mapperServer.js +137 -0
  27. package/src/.build/bidiServer/mapperServer.js.map +1 -0
  28. package/src/.build/bidiServer/tests/stubTransport.spec.js +44 -0
  29. package/src/.build/bidiServer/tests/stubTransport.spec.js.map +1 -0
  30. package/src/.build/bidiServer/utils/log.js +44 -0
  31. package/src/.build/bidiServer/utils/log.js.map +1 -0
  32. package/src/.build/bidiServer/utils/transport.js +19 -0
  33. package/src/.build/bidiServer/utils/transport.js.map +1 -0
  34. package/src/index.ts +110 -0
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ const cdpConnection_1 = require("./cdpConnection");
46
+ const stubTransport_spec_1 = require("../tests/stubTransport.spec");
47
+ const chai = __importStar(require("chai"));
48
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
49
+ chai.use(chai_as_promised_1.default);
50
+ const sinon = __importStar(require("sinon"));
51
+ const TEST_TARGET_ID = 'TargetA';
52
+ const ANOTHER_TARGET_ID = 'TargetB';
53
+ describe('CdpClient tests.', function () {
54
+ it(`given CdpClient, when some command is called, then cdpBindings should be
55
+ called with proper values`, async function () {
56
+ const expectedMessageStr = JSON.stringify({
57
+ id: 0,
58
+ method: 'Target.activateTarget',
59
+ params: {
60
+ targetId: TEST_TARGET_ID,
61
+ },
62
+ });
63
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
64
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
65
+ const cdpClient = cdpConnection.browserClient();
66
+ cdpClient.Target.activateTarget({ targetId: TEST_TARGET_ID });
67
+ sinon.assert.calledOnceWithExactly(mockCdpServer.sendMessage, expectedMessageStr);
68
+ });
69
+ it(`given some command is called, when CDP command is done, then
70
+ 'sendMessage' promise is resolved`, async function () {
71
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
72
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
73
+ const cdpClient = cdpConnection.browserClient();
74
+ // Send CDP command and store returned promise.
75
+ const commandPromise = cdpClient.Target.activateTarget({
76
+ targetId: TEST_TARGET_ID,
77
+ });
78
+ // Verify CDP command was sent.
79
+ sinon.assert.calledOnce(mockCdpServer.sendMessage);
80
+ // Notify 'cdpClient' the CDP command is finished.
81
+ await mockCdpServer.emulateIncomingMessage({ id: 0, result: {} });
82
+ // Assert 'cdpClient' resolved message promise.
83
+ chai.assert.eventually.deepEqual(commandPromise, {});
84
+ });
85
+ it(`given some command is called 2 times, when CDP commands are done, then
86
+ each command promise is resolved with proper results`, async function () {
87
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
88
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
89
+ const cdpClient = cdpConnection.browserClient();
90
+ const expectedResult1 = {
91
+ someResult: 1,
92
+ };
93
+ const expectedResult2 = {
94
+ anotherResult: 2,
95
+ };
96
+ const commandResult1 = { id: 0, result: expectedResult1 };
97
+ const commandResult2 = { id: 1, result: expectedResult2 };
98
+ // Send 2 CDP commands and store returned promises.
99
+ const commandPromise1 = cdpClient.Target.attachToTarget({
100
+ targetId: TEST_TARGET_ID,
101
+ });
102
+ const commandPromise2 = cdpClient.Target.attachToTarget({
103
+ targetId: ANOTHER_TARGET_ID,
104
+ });
105
+ // Verify CDP command was sent.
106
+ sinon.assert.calledTwice(mockCdpServer.sendMessage);
107
+ // Notify 'cdpClient' the command2 is finished.
108
+ await mockCdpServer.emulateIncomingMessage(commandResult2);
109
+ // Assert second message promise is resolved.
110
+ const actualResult2 = await commandPromise2;
111
+ // Notify 'cdpClient' the command1 is finished.
112
+ await mockCdpServer.emulateIncomingMessage(commandResult1);
113
+ // Assert first message promise is resolved.
114
+ const actualResult1 = await commandPromise1;
115
+ chai.assert.deepEqual(actualResult1, expectedResult1);
116
+ chai.assert.deepEqual(actualResult2, expectedResult2);
117
+ });
118
+ it('gets event callbacks when events are received from CDP', async function () {
119
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
120
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
121
+ const cdpClient = cdpConnection.browserClient();
122
+ // Register event callbacks.
123
+ const genericCallback = sinon.fake();
124
+ cdpClient.on('event', genericCallback);
125
+ const typedCallback = sinon.fake();
126
+ cdpClient.Target.on('attachedToTarget', typedCallback);
127
+ // Send a CDP event.
128
+ await mockCdpServer.emulateIncomingMessage({
129
+ method: 'Target.attachedToTarget',
130
+ params: { targetId: TEST_TARGET_ID },
131
+ });
132
+ // Verify that callbacks are called.
133
+ sinon.assert.calledOnceWithExactly(genericCallback, 'Target.attachedToTarget', { targetId: TEST_TARGET_ID });
134
+ genericCallback.resetHistory();
135
+ sinon.assert.calledOnceWithExactly(typedCallback, {
136
+ targetId: TEST_TARGET_ID,
137
+ });
138
+ typedCallback.resetHistory();
139
+ // Unregister callbacks.
140
+ cdpClient.off('event', genericCallback);
141
+ cdpClient.Target.off('Target.attachedToTarget', typedCallback);
142
+ // Send another CDP event.
143
+ await mockCdpServer.emulateIncomingMessage({
144
+ params: { targetId: TEST_TARGET_ID },
145
+ });
146
+ sinon.assert.notCalled(genericCallback);
147
+ sinon.assert.notCalled(typedCallback);
148
+ });
149
+ describe('sendCommand()', function () {
150
+ it('sends a raw CDP messages and returns a promise that will be resolved with the result', async function () {
151
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
152
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
153
+ const cdpClient = cdpConnection.browserClient();
154
+ // Send CDP command and store returned promise.
155
+ const commandPromise = cdpClient.sendCommand('Target.attachToTarget', {
156
+ targetId: TEST_TARGET_ID,
157
+ });
158
+ // Verify CDP command was sent.
159
+ sinon.assert.calledOnce(mockCdpServer.sendMessage);
160
+ // Notify 'cdpClient' the CDP command is finished.
161
+ await mockCdpServer.emulateIncomingMessage({
162
+ id: 0,
163
+ result: { targetId: TEST_TARGET_ID },
164
+ });
165
+ // Assert sendCommand resolved message promise.
166
+ chai.assert.eventually.deepEqual(commandPromise, {
167
+ targetId: TEST_TARGET_ID,
168
+ });
169
+ });
170
+ it('sends a raw CDP messages and returns a promise that will reject on error', async function () {
171
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
172
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
173
+ const cdpClient = cdpConnection.browserClient();
174
+ const expectedError = {
175
+ code: 'some error',
176
+ message: 'something happened',
177
+ };
178
+ // Send CDP command and store returned promise.
179
+ const commandPromise = cdpClient.sendCommand('Target.attachToTarget', {
180
+ targetId: TEST_TARGET_ID,
181
+ });
182
+ // Verify CDP command was sent.
183
+ sinon.assert.calledOnce(mockCdpServer.sendMessage);
184
+ // Notify 'cdpClient' the CDP command is finished.
185
+ await mockCdpServer.emulateIncomingMessage({
186
+ id: 0,
187
+ error: expectedError,
188
+ });
189
+ // Assert sendCommand rejects with error.
190
+ chai.assert.isRejected(commandPromise, expectedError);
191
+ });
192
+ });
193
+ });
194
+ //# sourceMappingURL=cdpClient.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpClient.spec.js","sourceRoot":"","sources":["../../../cdp/cdpClient.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.CdpConnection = void 0;
20
+ const cdpClient_1 = require("./cdpClient");
21
+ const log_1 = require("../utils/log");
22
+ const logCdp = (0, log_1.log)('cdp');
23
+ /**
24
+ * Represents a high-level CDP connection to the browser backend.
25
+ * Manages a CdpClient instance for each active CDP session.
26
+ */
27
+ class CdpConnection {
28
+ _transport;
29
+ _browserCdpClient;
30
+ _sessionCdpClients = new Map();
31
+ _commandCallbacks = new Map();
32
+ _nextId;
33
+ constructor(_transport) {
34
+ this._transport = _transport;
35
+ this._nextId = 0;
36
+ this._transport.setOnMessage(this._onMessage);
37
+ this._browserCdpClient = (0, cdpClient_1.createClient)(this, null);
38
+ }
39
+ /**
40
+ * Close the connection to the browser.
41
+ */
42
+ close() {
43
+ this._transport.close();
44
+ for (const [_id, { reject }] of this._commandCallbacks) {
45
+ reject(new Error('Disconnected'));
46
+ }
47
+ this._commandCallbacks.clear();
48
+ this._sessionCdpClients.clear();
49
+ }
50
+ /**
51
+ * @returns The CdpClient object attached to the root browser session.
52
+ */
53
+ browserClient() {
54
+ return this._browserCdpClient;
55
+ }
56
+ /**
57
+ * Get a CdpClient instance by sessionId.
58
+ * @param sessionId The sessionId of the CdpClient to retrieve.
59
+ * @returns The CdpClient object attached to the given session, or null if the session is not attached.
60
+ */
61
+ getCdpClient(sessionId) {
62
+ const cdpClient = this._sessionCdpClients.get(sessionId);
63
+ if (!cdpClient) {
64
+ throw new Error('Unknown CDP session ID');
65
+ }
66
+ return cdpClient;
67
+ }
68
+ sendCommand(method, params, sessionId) {
69
+ return new Promise((resolve, reject) => {
70
+ const id = this._nextId++;
71
+ this._commandCallbacks.set(id, { resolve, reject });
72
+ let messageObj = { id, method, params };
73
+ if (sessionId) {
74
+ messageObj.sessionId = sessionId;
75
+ }
76
+ const messageStr = JSON.stringify(messageObj);
77
+ this._transport.sendMessage(messageStr);
78
+ logCdp('sent > ' + messageStr);
79
+ });
80
+ }
81
+ _onMessage = async (message) => {
82
+ logCdp('received < ' + message);
83
+ const parsed = JSON.parse(message);
84
+ // Update client map if a session is attached or detached.
85
+ // Listen for these events on every session.
86
+ if (parsed.method === 'Target.attachedToTarget') {
87
+ const { sessionId } = parsed.params;
88
+ this._sessionCdpClients.set(sessionId, (0, cdpClient_1.createClient)(this, sessionId));
89
+ }
90
+ else if (parsed.method === 'Target.detachedFromTarget') {
91
+ const { sessionId } = parsed.params;
92
+ const client = this._sessionCdpClients.get(sessionId);
93
+ if (client) {
94
+ this._sessionCdpClients.delete(sessionId);
95
+ }
96
+ }
97
+ if (parsed.id !== undefined) {
98
+ // Handle command response.
99
+ const callbacks = this._commandCallbacks.get(parsed.id);
100
+ if (callbacks) {
101
+ if (parsed.result) {
102
+ callbacks.resolve(parsed.result);
103
+ }
104
+ else if (parsed.error) {
105
+ callbacks.reject(parsed.error);
106
+ }
107
+ }
108
+ }
109
+ else if (parsed.method) {
110
+ const client = parsed.sessionId
111
+ ? this._sessionCdpClients.get(parsed.sessionId)
112
+ : this._browserCdpClient;
113
+ if (client) {
114
+ client._onCdpEvent(parsed.method, parsed.params || {});
115
+ }
116
+ }
117
+ };
118
+ }
119
+ exports.CdpConnection = CdpConnection;
120
+ //# sourceMappingURL=cdpConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpConnection.js","sourceRoot":"","sources":["../../../cdp/cdpConnection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ const stubTransport_spec_1 = require("../tests/stubTransport.spec");
46
+ const chai = __importStar(require("chai"));
47
+ const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
48
+ chai.use(chai_as_promised_1.default);
49
+ const sinon = __importStar(require("sinon"));
50
+ const cdpConnection_1 = require("./cdpConnection");
51
+ const SOME_SESSION_ID = 'ABCD';
52
+ const ANOTHER_SESSION_ID = 'EFGH';
53
+ describe('CdpConnection', function () {
54
+ it('can send a command message for a CdpClient', async function () {
55
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
56
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
57
+ const browserMessage = JSON.stringify({
58
+ id: 0,
59
+ method: 'Browser.getVersion',
60
+ });
61
+ cdpConnection.browserClient().Browser.getVersion();
62
+ sinon.assert.calledOnceWithExactly(mockCdpServer.sendMessage, browserMessage);
63
+ });
64
+ it('creates a CdpClient for a session when the Target.attachedToTarget event is received', async function () {
65
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
66
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
67
+ chai.assert.throws(() => cdpConnection.getCdpClient(SOME_SESSION_ID), 'Unknown CDP session ID');
68
+ await mockCdpServer.emulateIncomingMessage({
69
+ method: 'Target.attachedToTarget',
70
+ params: { sessionId: SOME_SESSION_ID },
71
+ });
72
+ const cdpClient = cdpConnection.getCdpClient(SOME_SESSION_ID);
73
+ chai.assert.isNotNull(cdpClient);
74
+ });
75
+ it('removes the CdpClient for a session when the Target.detachedFromTarget event is received', async function () {
76
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
77
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
78
+ await mockCdpServer.emulateIncomingMessage({
79
+ method: 'Target.attachedToTarget',
80
+ params: { sessionId: SOME_SESSION_ID },
81
+ });
82
+ const cdpClient = cdpConnection.getCdpClient(SOME_SESSION_ID);
83
+ chai.assert.isNotNull(cdpClient);
84
+ await mockCdpServer.emulateIncomingMessage({
85
+ method: 'Target.detachedFromTarget',
86
+ params: { sessionId: SOME_SESSION_ID },
87
+ });
88
+ chai.assert.throws(() => cdpConnection.getCdpClient(SOME_SESSION_ID), 'Unknown CDP session ID');
89
+ });
90
+ it('routes event messages to the correct handler based on sessionId', async function () {
91
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
92
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
93
+ const browserMessage = { method: 'Browser.downloadWillBegin' };
94
+ const sessionMessage = {
95
+ sessionId: SOME_SESSION_ID,
96
+ method: 'Page.frameNavigated',
97
+ };
98
+ const othersessionMessage = {
99
+ sessionId: ANOTHER_SESSION_ID,
100
+ method: 'Page.loadEventFired',
101
+ };
102
+ const browserCallback = sinon.fake();
103
+ const sessionCallback = sinon.fake();
104
+ const otherSessionCallback = sinon.fake();
105
+ // Register for browser message callbacks.
106
+ const browserClient = cdpConnection.browserClient();
107
+ browserClient.Browser.on('downloadWillBegin', browserCallback);
108
+ // Verify that the browser callback receives the message.
109
+ await mockCdpServer.emulateIncomingMessage(browserMessage);
110
+ sinon.assert.calledOnceWithExactly(browserCallback, {});
111
+ browserCallback.resetHistory();
112
+ // Attach session A.
113
+ await mockCdpServer.emulateIncomingMessage({
114
+ method: 'Target.attachedToTarget',
115
+ params: { sessionId: SOME_SESSION_ID },
116
+ });
117
+ const sessionClient = cdpConnection.getCdpClient(SOME_SESSION_ID);
118
+ chai.assert.isNotNull(sessionClient);
119
+ sessionClient.Page.on('frameNavigated', sessionCallback);
120
+ // Send another message for the browser and verify that only the browser callback receives it.
121
+ // Verifies that adding another client doesn't affect routing for existing clients.
122
+ await mockCdpServer.emulateIncomingMessage(browserMessage);
123
+ sinon.assert.notCalled(sessionCallback);
124
+ sinon.assert.calledOnceWithExactly(browserCallback, {});
125
+ browserCallback.resetHistory();
126
+ // Send a message for session A and verify that it is received.
127
+ await mockCdpServer.emulateIncomingMessage(sessionMessage);
128
+ sinon.assert.notCalled(browserCallback);
129
+ sinon.assert.calledOnceWithExactly(sessionCallback, {});
130
+ sessionCallback.resetHistory();
131
+ // Attach session B.
132
+ await mockCdpServer.emulateIncomingMessage({
133
+ method: 'Target.attachedToTarget',
134
+ params: { sessionId: ANOTHER_SESSION_ID },
135
+ });
136
+ const otherSessionClient = cdpConnection.getCdpClient(ANOTHER_SESSION_ID);
137
+ chai.assert.isNotNull(otherSessionClient);
138
+ otherSessionClient.Page.on('loadEventFired', otherSessionCallback);
139
+ // Send a message for session B and verify that only the session B callback receives it.
140
+ // Verifies that a message is sent only to the session client it is intended for.
141
+ await mockCdpServer.emulateIncomingMessage(othersessionMessage);
142
+ sinon.assert.notCalled(browserCallback);
143
+ sinon.assert.notCalled(sessionCallback);
144
+ sinon.assert.calledOnceWithExactly(otherSessionCallback, {});
145
+ otherSessionCallback.resetHistory();
146
+ });
147
+ it('closes the transport connection when closed', async function () {
148
+ const mockCdpServer = new stubTransport_spec_1.StubTransport();
149
+ const cdpConnection = new cdpConnection_1.CdpConnection(mockCdpServer);
150
+ cdpConnection.close();
151
+ sinon.assert.calledOnce(mockCdpServer.close);
152
+ });
153
+ });
154
+ //# sourceMappingURL=cdpConnection.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpConnection.spec.js","sourceRoot":"","sources":["../../../cdp/cdpConnection.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ //# sourceMappingURL=cdpMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpMessage.js","sourceRoot":"","sources":["../../../cdp/cdpMessage.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.WebSocketTransport = exports.CdpConnection = void 0;
20
+ var cdpConnection_1 = require("./cdpConnection");
21
+ Object.defineProperty(exports, "CdpConnection", { enumerable: true, get: function () { return cdpConnection_1.CdpConnection; } });
22
+ var websocketTransport_1 = require("./websocketTransport");
23
+ Object.defineProperty(exports, "WebSocketTransport", { enumerable: true, get: function () { return websocketTransport_1.WebSocketTransport; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../cdp/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAGH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2021 Google LLC.
4
+ * Copyright (c) Microsoft Corporation.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.WebSocketTransport = void 0;
20
+ class WebSocketTransport {
21
+ _ws;
22
+ _onMessage = null;
23
+ constructor(_ws) {
24
+ this._ws = _ws;
25
+ this._ws.on('message', (message) => {
26
+ if (this._onMessage) {
27
+ this._onMessage.call(null, message);
28
+ }
29
+ });
30
+ }
31
+ setOnMessage(onMessage) {
32
+ this._onMessage = onMessage;
33
+ }
34
+ async sendMessage(message) {
35
+ this._ws.send(message);
36
+ }
37
+ close() {
38
+ this._onMessage = null;
39
+ this._ws.close();
40
+ }
41
+ }
42
+ exports.WebSocketTransport = WebSocketTransport;
43
+ //# sourceMappingURL=websocketTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocketTransport.js","sourceRoot":"","sources":["../../../cdp/websocketTransport.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAKH,MAAa,kBAAkB;IAGT;IAFZ,UAAU,GAAuC,IAAI,CAAC;IAE9D,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;QAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAe,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,SAAoC;QAC/C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF;AAvBD,gDAuBC"}