Web Inspector: Remove recompileAllJSFunctions timer in ScriptDebugServer
[WebKit-https.git] / LayoutTests / inspector-protocol / debugger / call-frame-this-host.html
1 <html>
2 <head>
3 <script src="../../http/tests/inspector-protocol/resources/protocol-test.js"></script>
4 <script>
5 // Put this here instead of on <body onload> to prevent an extra Debugger.scriptParsed event.
6 window.onload = runTest;
7
8 function test()
9 {
10     // This test sets a breakpoint on line:column in the <script> below.
11     // We set a breakpoint before evaluating 'sum += ...', and verify that
12     // call frame this values are what we expect.
13
14     InspectorTest.sendCommand("Debugger.enable", {});
15
16     InspectorTest.eventHandler["Debugger.scriptParsed"] = function(messageObject)
17     {
18         if (/call-frame-this-host\.html$/.test(messageObject.params.url) && messageObject.params.startLine > 10) {
19             InspectorTest.log("Found <script>");
20             var scriptIdentifier = messageObject.params.scriptId;
21             var lineNumber = messageObject.params.startLine + 6;
22             var columnNumber = 12;
23             var location = {scriptId: scriptIdentifier, lineNumber: lineNumber, columnNumber: columnNumber};
24             InspectorTest.sendCommand("Debugger.setBreakpoint", {location: location}, function() {
25                 InspectorTest.log("Running testFunction");
26                 InspectorTest.sendCommand("Runtime.evaluate", {expression: "testFunction()"});
27             });
28         }
29     }
30
31     InspectorTest.eventHandler["Debugger.paused"] = function(messageObject)
32     {
33         InspectorTest.log("Hit Breakpoint!");
34         var thisValues = [ ];
35         var i;
36         for (i = 0; i < 3; i++)
37             thisValues[i] = messageObject.params.callFrames[i].this;
38         
39         function assertThisValue(index, actual, expected) {
40             var success = true;
41             if (actual.type != expected.type) {
42                 InspectorTest.log('FAIL: frame[' + index + '] expect type "' + expected.type + '", actual "' + actual.type + '"');
43                 success = false;
44             }
45
46             if (actual.className != expected.className) {
47                 InspectorTest.log('FAIL: frame[' + index + '] expect className "' + expected.className + '", actual "' + actual.className + '"');
48                 success = false;
49             }
50
51             if (success)
52                 InspectorTest.log('PASS: frame[' + index + '] type "' + actual.type + '" className "' + actual.className + '"');
53         }
54
55         // frame 0 should be the anonymous inner function.
56         assertThisValue(0, thisValues[0], {
57             "type": "object",
58             "className": "Window"
59         });
60
61         // frame 1 should be "forEach" (an internal/host function).
62         assertThisValue(1, thisValues[1], {
63             "type": "object",
64             "className": "Array"
65         });
66
67         // frame 2 should be "testFunction".
68         assertThisValue(2, thisValues[2], {
69             "type": "object",
70             "className": "Window"
71         });
72         InspectorTest.completeTest();
73     }
74 }
75 </script>
76 </head>
77 <body>
78 <p>Debugger.setBreakpoint on line:column in &lt;script&gt;</p>
79 <script>// Line 0
80 function testFunction() { // Line 1
81     try { // Line 2
82         var array = [2, 5, 7]; // Line 3
83         var sum = 0; // Line 4
84         array.forEach(function(value) { // Line 5
85             sum += array[value]; // Line 6
86         });
87     } catch (e) {
88         console.log("Exception: " + e);
89     }
90 }
91 </script>
92 </body>
93 </html>