OLD | NEW |
(Empty) | |
| 1 (async function(testRunner) { |
| 2 let {page, session, dp} = await testRunner.startBlank(''); |
| 3 |
| 4 await session.evaluate(` |
| 5 window.worker = new Worker('${testRunner.url('resources/dedicated-worker-loo
p.js')}'); |
| 6 var resolve; |
| 7 window.workerMessageReceivedPromise = new Promise(f => resolve = f); |
| 8 window.worker.onmessage = function(event) { |
| 9 if (event.data === 'WorkerMessageReceived') |
| 10 resolve(); |
| 11 }; |
| 12 `); |
| 13 testRunner.log('Started worker'); |
| 14 |
| 15 var workerId; |
| 16 var workerRequestId = 1; |
| 17 function sendCommandToWorker(method, params) { |
| 18 var message = {method, params, id: workerRequestId}; |
| 19 dp.Target.sendMessageToTarget({targetId: workerId, message: JSON.stringify(m
essage)}); |
| 20 return workerRequestId++; |
| 21 } |
| 22 |
| 23 dp.Target.setAutoAttach({autoAttach: true, waitForDebuggerOnStart: false}); |
| 24 |
| 25 var debuggerEnableRequestId = -1; |
| 26 var evaluateRequestId = -1; |
| 27 |
| 28 dp.Target.onReceivedMessageFromTarget(async messageObject => { |
| 29 var message = JSON.parse(messageObject.params.message); |
| 30 if (message.id === debuggerEnableRequestId) { |
| 31 testRunner.log('Did enable debugger'); |
| 32 // Start tight loop in the worker. |
| 33 await dp.Runtime.evaluate({expression: 'worker.postMessage(1)' }); |
| 34 testRunner.log('Did post message to worker'); |
| 35 } |
| 36 if (message.id === evaluateRequestId) { |
| 37 var value = message.result.result.value; |
| 38 if (value === true) |
| 39 testRunner.log('SUCCESS: evaluated, result: ' + value); |
| 40 else |
| 41 testRunner.log('FAIL: evaluated, result: ' + value); |
| 42 testRunner.completeTest(); |
| 43 } |
| 44 }); |
| 45 |
| 46 workerId = (await dp.Target.onceAttachedToTarget()).params.targetInfo.targetId
; |
| 47 testRunner.log('Worker created'); |
| 48 testRunner.log('didConnectToWorker'); |
| 49 // Enable debugger so that V8 can interrupt and handle inspector commands whil
e there is a script running in a tight loop. |
| 50 debuggerEnableRequestId = sendCommandToWorker('Debugger.enable', {}); |
| 51 |
| 52 await session.evaluateAsync('workerMessageReceivedPromise'); |
| 53 evaluateRequestId = sendCommandToWorker('Runtime.evaluate', { 'expression': 'm
essage_id > 1'}); |
| 54 }) |
OLD | NEW |