3 <script src="../../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../../http/tests/inspector/debugger-test.js"></script>
7 var images = [ document.createElement("img"), document.createElement("img"), document.createElement("img"), document.createElement("img") ];
9 function testFunction()
11 setTimeout(timeoutOffCapturing, 0);
14 function timeoutOffCapturing()
16 images[0].addEventListener("click", clickedOffCapturing, false);
17 images[2].addEventListener("click", clickedOffCapturing, false);
18 images[0].addEventListener("error", imageErrorOffCapturing, false);
19 images[2].addEventListener("error", imageErrorOffCapturing, false);
20 setTimeout(timeoutOffCapturing2, 0);
21 debugger; // Will start capturing async stacks from this point.
22 setTimeout(timeoutOnCapturing, 0);
25 function timeoutOffCapturing2()
27 function shouldBeNoAsyncStack()
32 var node = document.createElement("div");
33 node.addEventListener("click", shouldBeNoAsyncStack, false);
37 function timeoutOnCapturing()
40 images[1].addEventListener("click", clickedOnCapturing, false);
41 images[3].addEventListener("click", clickedOnCapturing, false);
42 images[1].addEventListener("error", imageErrorOnCapturing, false);
43 images[3].addEventListener("error", imageErrorOnCapturing, false);
48 setImageNonExistingSrc(0);
51 function clickedOffCapturing(e) { onClick(e.target); }
52 function clickedOnCapturing(e) { onClick(e.target); }
56 var index = images.indexOf(img);
73 function imageErrorOffCapturing(e) { onImageError(e.target); }
74 function imageErrorOnCapturing(e) { onImageError(e.target); }
76 var imageErrorsCount = 0;
77 function onImageError(img)
79 var index = images.indexOf(img);
82 setImageNonExistingSrc(1);
85 setImageNonExistingSrc(2);
88 setImageNonExistingSrc(3);
97 function setImageNonExistingSrc(imgIndex)
99 images[imgIndex].src = "/non_existing.png?count=" + (++imageErrorsCount) + "&now=" + Date.now();
102 var test = function()
104 var totalDebuggerStatements = 7;
105 var maxAsyncCallStackDepth = 4;
107 InspectorTest.setQuiet(true);
108 InspectorTest.startDebuggerTest(step1);
112 DebuggerAgent.setAsyncCallStackDepth(0, step2);
117 InspectorTest.runTestFunctionAndWaitUntilPaused(didPaused);
120 function resumeExecution()
122 InspectorTest.resumeExecution(InspectorTest.waitUntilPaused.bind(InspectorTest, didPaused));
126 var callStacksOutput = [];
127 function didPaused(callFrames, reason, breakpointIds, asyncStackTrace)
131 DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, resumeExecution);
135 callStacksOutput.push(InspectorTest.captureStackTraceIntoString(callFrames, asyncStackTrace) + "\n");
136 if (step < totalDebuggerStatements) {
139 InspectorTest.addResult("Captured call stacks in no particular order:");
140 callStacksOutput.sort();
141 InspectorTest.addResults(callStacksOutput);
142 InspectorTest.completeDebuggerTest();
150 <body onload="runTest()">
152 Tests that capturing asynchronous call stacks in debugger works if started after some time since the page loads.