Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector / sources / debugger / async-callstack-middle-run.html
1 <html>
2 <head>
3 <script src="../../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../../http/tests/inspector/debugger-test.js"></script>
5 <script>
6
7 var images = [ document.createElement("img"), document.createElement("img"), document.createElement("img"), document.createElement("img") ];
8
9 function testFunction()
10 {
11     setTimeout(timeoutOffCapturing, 0);
12 }
13
14 function timeoutOffCapturing()
15 {
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);
23 }
24
25 function timeoutOffCapturing2()
26 {
27     function shouldBeNoAsyncStack()
28     {
29         debugger;
30     }
31
32     var node = document.createElement("div");
33     node.addEventListener("click", shouldBeNoAsyncStack, false);
34     node.click();
35 }
36
37 function timeoutOnCapturing()
38 {
39     debugger;
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);
44
45     images[0].click();
46     images[1].click();
47
48     setImageNonExistingSrc(0);
49 }
50
51 function clickedOffCapturing(e) { onClick(e.target); }
52 function clickedOnCapturing(e) { onClick(e.target); }
53
54 function onClick(img)
55 {
56     var index = images.indexOf(img);
57     switch (index) {
58     case 0:
59         images[1].click();
60         break;
61     case 1:
62         images[2].click();
63         break;
64     case 2:
65         images[3].click();
66         break;
67     case 3:
68         debugger;
69         break;
70     }
71 }
72
73 function imageErrorOffCapturing(e) { onImageError(e.target); }
74 function imageErrorOnCapturing(e) { onImageError(e.target); }
75
76 var imageErrorsCount = 0;
77 function onImageError(img)
78 {
79     var index = images.indexOf(img);
80     switch (index) {
81     case 0:
82         setImageNonExistingSrc(1);
83         break;
84     case 1:
85         setImageNonExistingSrc(2);
86         break;
87     case 2:
88         setImageNonExistingSrc(3);
89         debugger;
90         break;
91     case 3:
92         debugger;
93         break;
94     }
95 }
96
97 function setImageNonExistingSrc(imgIndex)
98 {
99     images[imgIndex].src = "/non_existing.png?count=" + (++imageErrorsCount) + "&now=" + Date.now();
100 }
101
102 var test = function()
103 {
104     var totalDebuggerStatements = 7;
105     var maxAsyncCallStackDepth = 4;
106
107     InspectorTest.setQuiet(true);
108     InspectorTest.startDebuggerTest(step1);
109
110     function step1()
111     {
112         DebuggerAgent.setAsyncCallStackDepth(0, step2);
113     }
114
115     function step2()
116     {
117         InspectorTest.runTestFunctionAndWaitUntilPaused(didPaused);
118     }
119
120     function resumeExecution()
121     {
122         InspectorTest.resumeExecution(InspectorTest.waitUntilPaused.bind(InspectorTest, didPaused));
123     }
124
125     var step = 0;
126     var callStacksOutput = [];
127     function didPaused(callFrames, reason, breakpointIds, asyncStackTrace)
128     {
129         ++step;
130         if (step === 1) {
131             DebuggerAgent.setAsyncCallStackDepth(maxAsyncCallStackDepth, resumeExecution);
132             return;
133         }
134
135         callStacksOutput.push(InspectorTest.captureStackTraceIntoString(callFrames, asyncStackTrace) + "\n");
136         if (step < totalDebuggerStatements) {
137             resumeExecution();
138         } else {
139             InspectorTest.addResult("Captured call stacks in no particular order:");
140             callStacksOutput.sort();
141             InspectorTest.addResults(callStacksOutput);
142             InspectorTest.completeDebuggerTest();
143         }
144     }
145 }
146
147 </script>
148 </head>
149
150 <body onload="runTest()">
151 <p>
152 Tests that capturing asynchronous call stacks in debugger works if started after some time since the page loads.
153 </p>
154
155 </body>
156 </html>