Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / ManualTests / inspector / hidden-evals.html
blobc507bcd70092473a629a8a605bd37657a905f542
2 <p><b>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=30212">Bug 30212</a> - Each JS execution in console adds extra item into "scripts" combo</b>
4 <p>The following manual test creates functions via <tt>eval()</tt> and the
5 <tt>Function()</tt> constructor, some functions are named using the
6 <code>//@sourceURL=</code> directive, some aren't. Some contain
7 <tt>debugger</tt> commands, some don't.
9 <p>The functions named <tt>f_named_X</tt> are 'named' via the
10 <code>//@sourceURL=</code> directive, the ones named <tt>f_unnamed_X</tt>
11 are not. The 'named' functions should show up in the Scripts select element used
12 to select a resource/script to view, the 'unnamed' ones should not.
14 <ul>
15 <li><p>open this page with Web Inspector
16 <li><p>switch to the Scripts panel, enabling debug if required
17 <li><p>the available scripts in the select element should be:
18 <ul>
19 <li>(program): f_named_1.eval
20 <li>(program): f_named_2.eval
21 <li>(program): f_named_3.eval
22 <li>hidden-evals.html
23 </ul>
24 <li><p>click this button: <input id=button type=button value="click me">
25 <li><p>debugger should stop in the <code>clickHandler</code> function
26 <li><p>at this point, start stepping <b>into</b> the code
27 <li><p>you should be able to step into functions <code>f_unnamed_1()</code>
28 and <code>f_unnamed_2()</code>. There are no resource/scripts in the
29 select element that contain these functions, until you actually are paused
30 in them. At that point, entries for these functions will be in the select element,
31 named: "(program)". After pausing in both functions, there will be two "(program)"
32 entries.
33 <li><p>you should be able to use the next/prev buttons (to the left of the select element)
34 to switch to other resources/scripts that have been opened, including the ones
35 containing these functions
36 <li><p>you should be able to click on the functions that exist in the 'hidden'
37 resources from the Call Stack, and be shown the source; click around the
38 stack trace entries to verify
39 <li><p>rather than stepping into the <code>f_named_3()</code> call, press the
40 resume button
41 <li><p>the debugger should stop in <code>f_named_3()</code> because of the
42 <code>debugger</code> command
43 <li><p>rather than stepping into the <code>f_unnamed_3()</code> call, press the
44 resume button
45 <li><p>the debugger should stop in <code>f_unnamed_3()</code> because of the
46 <code>debugger</code> command. At this point, a third "(program)" entry for
47 this function is added to the select element.
48 </ul>
50 <script>
52 function doNothing() { /* allows multi-line functions, easier to debug */ };
54 eval([
55 "function f_named_1() {",
56 " doNothing();",
57 " return 'named_1';",
58 "}",
59 "//@sourceURL=f_named_1.eval"
60 ].join("\n"));
62 eval([
63 "function f_unnamed_1() {",
64 " doNothing();",
65 " return 'unnamed_1';",
66 "}"
67 ].join("\n"));
69 f_named_2 = Function([
70 "",
71 " doNothing();",
72 " return 'named_2';",
73 "//@sourceURL=f_named_2.eval"
74 ].join("\n"));
76 f_unnamed_2 = Function([
77 "",
78 " doNothing();",
79 " return 'unnamed_2';"
80 ].join("\n"));
82 f_named_3 = Function([
83 "",
84 " debugger;",
85 " doNothing();",
86 " return 'named_3';",
87 "//@sourceURL=f_named_3.eval"
88 ].join("\n"));
90 f_unnamed_3 = Function([
91 "",
92 " debugger;",
93 " doNothing();",
94 " return 'unnamed_3';"
95 ].join("\n"));
97 var button = document.getElementById("button");
99 button.addEventListener("click", clickHandler, false);
101 function clickHandler() {
102 debugger;
103 f_named_1();
104 f_unnamed_1();
105 f_named_2();
106 f_unnamed_2();
108 // press "resume" at this point
109 console.log("press resume before calling f_named_3()");
110 f_named_3();
112 // press "resume" at this point
113 console.log("press resume before calling f_unnamed_3()");
114 f_unnamed_3();
117 </script>
118 <!-- End -->