| <!doctype html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script src="resources/async-stack-trace-test.js"></script> |
| <script> |
| |
| function triggerRequestAnimationFrame() { |
| requestAnimationFrame(function handleAnimationFrame() { |
| debugger; |
| }); |
| } |
| |
| function triggerNestedRequestAnimationFrame() { |
| requestAnimationFrame(function handleAnimationFrame1() { |
| requestAnimationFrame(function handleAnimationFrame2() { |
| debugger; |
| }); |
| }); |
| } |
| |
| function triggerSetTimeout() { |
| setTimeout(function handleTimeout() { |
| debugger; |
| }); |
| } |
| |
| function triggerNestedSetTimeout() { |
| setTimeout(function handleTimeout1() { |
| setTimeout(function handleTimeout2() { |
| debugger; |
| }); |
| }); |
| } |
| |
| function triggerSetInterval() { |
| let timer = setInterval(function handleInterval() { |
| clearInterval(timer); |
| debugger; |
| }); |
| } |
| |
| function triggerNestedSetInterval() { |
| let outerTimer = setInterval(function handleInterval1() { |
| clearInterval(outerTimer); |
| let innerTimer = setInterval(function handleInterval2() { |
| clearInterval(innerTimer); |
| debugger; |
| }); |
| }); |
| } |
| |
| function triggerPostMessage() { |
| let frame = document.createElement("iframe"); |
| frame.srcdoc = `<script>window.parent.postMessage(42, "*");<\/script>`; |
| document.body.appendChild(frame); |
| |
| window.addEventListener("message", function handleMessage() { |
| window.removeEventListener("message", handleMessage); |
| debugger; |
| }); |
| } |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("AsyncStackTrace.Basic"); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.RequestAnimationFrame", |
| expression: "triggerRequestAnimationFrame()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.NestedRequestAnimationFrame", |
| expression: "triggerNestedRequestAnimationFrame()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.SetTimeout", |
| expression: "triggerSetTimeout()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.NestedSetTimeout", |
| expression: "triggerNestedSetTimeout()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.SetInterval", |
| expression: "triggerSetInterval()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.NestedSetInterval", |
| expression: "triggerNestedSetInterval()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.NestedSetInterval", |
| expression: "triggerNestedSetInterval()", |
| }); |
| |
| addAsyncStackTraceTestCase(suite, { |
| name: "AsyncStackTrace.Basic.PostMessage", |
| expression: "triggerPostMessage()", |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for checking that async stack traces exist when pausing in asynchronous callbacks: requestAnimationFrame, setTimeout, setInterval, and postMessage.</p> |
| </body> |
| </html> |