OLD | NEW |
1 (async function(testRunner) { | 1 (async function(testRunner) { |
2 let {page, session, dp} = await testRunner.startBlank(''); | 2 let {page, session, dp} = await testRunner.startBlank(''); |
3 | 3 |
4 await session.evaluate(` | 4 await session.evaluate(` |
5 var worker = null; | 5 var worker = null; |
6 var onMessageCallbacks = {}; | 6 var onMessageCallbacks = {}; |
7 | 7 |
8 function startWorker() { | 8 function startWorker() { |
9 var callback; | 9 var callback; |
10 var promise = new Promise((fulfill) => callback = fulfill); | 10 var promise = new Promise((fulfill) => callback = fulfill); |
(...skipping 21 matching lines...) Expand all Loading... |
32 worker.terminate(); | 32 worker.terminate(); |
33 worker = null; | 33 worker = null; |
34 } | 34 } |
35 `); | 35 `); |
36 | 36 |
37 var workerEventHandler = {}; | 37 var workerEventHandler = {}; |
38 dp.Target.onAttachedToTarget(onWorkerCreated); | 38 dp.Target.onAttachedToTarget(onWorkerCreated); |
39 dp.Target.onReceivedMessageFromTarget(onWorkerMessage); | 39 dp.Target.onReceivedMessageFromTarget(onWorkerMessage); |
40 workerEventHandler['Runtime.consoleAPICalled'] = onConsoleAPICalledFromWorker; | 40 workerEventHandler['Runtime.consoleAPICalled'] = onConsoleAPICalledFromWorker; |
41 | 41 |
42 var workerId; | 42 var workerSessionId; |
43 | 43 |
44 function onWorkerCreated(payload) { | 44 function onWorkerCreated(payload) { |
45 testRunner.log('Worker.created'); | 45 testRunner.log('Worker.created'); |
46 workerId = payload.params.targetInfo.targetId; | 46 workerSessionId = payload.params.sessionId; |
47 } | 47 } |
48 | 48 |
49 var requestId = 0; | 49 var requestId = 0; |
50 var dispatchTable = []; | 50 var dispatchTable = []; |
51 | 51 |
52 function sendCommandToWorker(method, params, callback) { | 52 function sendCommandToWorker(method, params, callback) { |
53 dispatchTable[++requestId] = callback; | 53 dispatchTable[++requestId] = callback; |
54 var messageObject = { | 54 var messageObject = { |
55 'method': method, | 55 'method': method, |
56 'params': params, | 56 'params': params, |
57 'id': requestId | 57 'id': requestId |
58 }; | 58 }; |
59 dp.Target.sendMessageToTarget({ | 59 dp.Target.sendMessageToTarget({ |
60 targetId: workerId, | 60 sessionId: workerSessionId, |
61 message: JSON.stringify(messageObject) | 61 message: JSON.stringify(messageObject) |
62 }); | 62 }); |
63 } | 63 } |
64 | 64 |
65 function onWorkerMessage(payload) { | 65 function onWorkerMessage(payload) { |
66 if (payload.params.targetId !== workerId) | 66 if (payload.params.sessionId !== workerSessionId) |
67 testRunner.log('targetId mismatch'); | 67 testRunner.log('targetId mismatch'); |
68 var messageObject = JSON.parse(payload.params.message); | 68 var messageObject = JSON.parse(payload.params.message); |
69 var messageId = messageObject['id']; | 69 var messageId = messageObject['id']; |
70 if (typeof messageId === 'number') { | 70 if (typeof messageId === 'number') { |
71 var handler = dispatchTable[messageId]; | 71 var handler = dispatchTable[messageId]; |
72 dispatchTable[messageId] = null; | 72 dispatchTable[messageId] = null; |
73 if (handler && typeof handler === 'function') | 73 if (handler && typeof handler === 'function') |
74 handler(messageObject); | 74 handler(messageObject); |
75 } else { | 75 } else { |
76 var eventName = messageObject['method']; | 76 var eventName = messageObject['method']; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 if (!steps.length) { | 235 if (!steps.length) { |
236 testRunner.completeTest(); | 236 testRunner.completeTest(); |
237 return; | 237 return; |
238 } | 238 } |
239 var nextStep = steps.shift(); | 239 var nextStep = steps.shift(); |
240 nextStep(runNextStep); | 240 nextStep(runNextStep); |
241 } | 241 } |
242 | 242 |
243 runNextStep(); | 243 runNextStep(); |
244 }) | 244 }) |
OLD | NEW |