Home | History | Annotate | Download | only in inspector
      1 
      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>
      3 
      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.
      8 
      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.
     13 
     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>
     49 
     50 <script>
     51 
     52 function doNothing() { /* allows multi-line functions, easier to debug */ };
     53 
     54 eval([
     55     "function f_named_1() {",
     56     "   doNothing();",
     57     "   return 'named_1';",
     58     "}",
     59     "//@sourceURL=f_named_1.eval"
     60 ].join("\n"));
     61 
     62 eval([
     63     "function f_unnamed_1() {",
     64     "   doNothing();",
     65     "   return 'unnamed_1';",
     66     "}"
     67 ].join("\n"));
     68 
     69 f_named_2 = Function([
     70     "",
     71     "   doNothing();",
     72     "   return 'named_2';",
     73     "//@sourceURL=f_named_2.eval"
     74 ].join("\n"));
     75 
     76 f_unnamed_2 = Function([
     77     "",
     78     "   doNothing();",
     79     "   return 'unnamed_2';"
     80 ].join("\n"));
     81 
     82 f_named_3 = Function([
     83     "",
     84     "   debugger;",
     85     "   doNothing();",
     86     "   return 'named_3';",
     87     "//@sourceURL=f_named_3.eval"
     88 ].join("\n"));
     89 
     90 f_unnamed_3 = Function([
     91     "",
     92     "   debugger;",
     93     "   doNothing();",
     94     "   return 'unnamed_3';"
     95 ].join("\n"));
     96 
     97 var button = document.getElementById("button");
     98 
     99 button.addEventListener("click", clickHandler, false);
    100 
    101 function clickHandler() {
    102     debugger;
    103     f_named_1();
    104     f_unnamed_1();
    105     f_named_2();
    106     f_unnamed_2();
    107     
    108     // press "resume" at this point
    109     console.log("press resume before calling f_named_3()");
    110     f_named_3();
    111     
    112     // press "resume" at this point
    113     console.log("press resume before calling f_unnamed_3()");
    114     f_unnamed_3();
    115 }
    116 
    117 </script>
    118 <!-- End -->
    119