| Index: third_party/WebKit/LayoutTests/inspector-protocol/debugger/suspend-setTimeout-on-pause-in-dedicated-worker.js
|
| diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/debugger/suspend-setTimeout-on-pause-in-dedicated-worker.js b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/suspend-setTimeout-on-pause-in-dedicated-worker.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f5ffb9670d7992f4a79839feccffb00b8802a36f
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/inspector-protocol/debugger/suspend-setTimeout-on-pause-in-dedicated-worker.js
|
| @@ -0,0 +1,49 @@
|
| +(async function(testRunner) {
|
| + let {page, session, dp} = await testRunner.startBlank('Tests that setTimeout callback will not fire while script execution is paused.Bug 377926.');
|
| +
|
| + 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: true});
|
| + await session.evaluate(`
|
| + window.worker = new Worker('${testRunner.url('resources/dedicated-worker-suspend-setTimeout.js')}');
|
| + window.worker.onmessage = function(event) { };
|
| + window.worker.postMessage(1);
|
| + `);
|
| + testRunner.log('Started worker');
|
| +
|
| + var messageObject = await dp.Target.onceAttachedToTarget();
|
| + workerId = messageObject.params.targetInfo.targetId;
|
| + testRunner.log('Worker created');
|
| +
|
| + sendCommandToWorker('Debugger.enable', {});
|
| + sendCommandToWorker('Runtime.runIfWaitingForDebugger', {});
|
| +
|
| + var pauseCount = 0;
|
| + var evalRequestId;
|
| + dp.Target.onReceivedMessageFromTarget(async messageObject => {
|
| + var message = JSON.parse(messageObject.params.message);
|
| + if (message.method === 'Debugger.paused') {
|
| + testRunner.log('SUCCESS: Worker paused');
|
| + if (++pauseCount === 1) {
|
| + evalRequestId = sendCommandToWorker('Runtime.evaluate', {expression: 'global_value'});
|
| + } else {
|
| + testRunner.log('FAIL: debugger paused second time');
|
| + testRunner.completeTest();
|
| + }
|
| + } else if (evalRequestId && message.id === evalRequestId) {
|
| + var value = message.result.result.value;
|
| + if (value === 1)
|
| + testRunner.log('SUCCESS: global_value is 1');
|
| + else
|
| + testRunner.log('FAIL: setTimeout callback fired while script execution was paused');
|
| + sendCommandToWorker('Debugger.disable', {});
|
| + testRunner.completeTest();
|
| + }
|
| + });
|
| +})
|
|
|