| Index: third_party/WebKit/LayoutTests/inspector-protocol/debugger/debugger-pause-dedicated-worker-loop.js
|
| diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/debugger/debugger-pause-dedicated-worker-loop.js b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/debugger-pause-dedicated-worker-loop.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ec3325fa0798e3fbfc3c5de31b134287c10e3747
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/debugger-pause-dedicated-worker-loop.js
|
| @@ -0,0 +1,54 @@
|
| +(async function(testRunner) {
|
| + let {page, session, dp} = await testRunner.startBlank('');
|
| +
|
| + await session.evaluate(`
|
| + window.worker = new Worker('${testRunner.url('resources/dedicated-worker-loop.js')}');
|
| + var resolve;
|
| + window.workerMessageReceivedPromise = new Promise(f => resolve = f);
|
| + window.worker.onmessage = function(event) {
|
| + if (event.data === 'WorkerMessageReceived')
|
| + resolve();
|
| + };
|
| + `);
|
| + testRunner.log('Started worker');
|
| +
|
| + var workerId;
|
| + var workerRequestId = 1;
|
| + function sendCommandToWorker(method, params) {
|
| + var message = {method, params, id: workerRequestId};
|
| + dp.Target.sendMessageToTarget({targetId: workerId, message: JSON.stringify(message)});
|
| + return workerRequestId++;
|
| + }
|
| +
|
| + dp.Target.setAutoAttach({autoAttach: true, waitForDebuggerOnStart: false});
|
| +
|
| + var debuggerEnableRequestId = -1;
|
| + var evaluateRequestId = -1;
|
| +
|
| + dp.Target.onReceivedMessageFromTarget(async messageObject => {
|
| + var message = JSON.parse(messageObject.params.message);
|
| + if (message.id === debuggerEnableRequestId) {
|
| + testRunner.log('Did enable debugger');
|
| + // Start tight loop in the worker.
|
| + await dp.Runtime.evaluate({expression: 'worker.postMessage(1)' });
|
| + testRunner.log('Did post message to worker');
|
| + }
|
| + if (message.id === evaluateRequestId) {
|
| + var value = message.result.result.value;
|
| + if (value === true)
|
| + testRunner.log('SUCCESS: evaluated, result: ' + value);
|
| + else
|
| + testRunner.log('FAIL: evaluated, result: ' + value);
|
| + testRunner.completeTest();
|
| + }
|
| + });
|
| +
|
| + workerId = (await dp.Target.onceAttachedToTarget()).params.targetInfo.targetId;
|
| + testRunner.log('Worker created');
|
| + testRunner.log('didConnectToWorker');
|
| + // Enable debugger so that V8 can interrupt and handle inspector commands while there is a script running in a tight loop.
|
| + debuggerEnableRequestId = sendCommandToWorker('Debugger.enable', {});
|
| +
|
| + await session.evaluateAsync('workerMessageReceivedPromise');
|
| + evaluateRequestId = sendCommandToWorker('Runtime.evaluate', { 'expression': 'message_id > 1'});
|
| +})
|
|
|