| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script src="resources/breakpoint.js"></script> |
| |
| <script> |
| // Put this here instead of on <body onload> to prevent an extra Debugger.scriptParsed event. |
| window.onload = runTest; |
| |
| function test() |
| { |
| // This test setting 2 breakpoints in DFG compiled functions: one inlined, |
| // and one not inlined. |
| |
| InspectorProtocol.sendCommand("Debugger.enable", {}); |
| InspectorProtocol.sendCommand("Debugger.setBreakpointsActive", {active: true}); |
| |
| var dfgNonInlinedBreakpointId = null; |
| var dfgInlinedBreakpointId = null; |
| var scriptIdentifier = 0; |
| var startLine = 0; |
| |
| InspectorProtocol.eventHandler["Debugger.scriptParsed"] = function(messageObject) |
| { |
| if (/resources\/breakpoint\.js$/.test(messageObject.params.url)) { |
| ProtocolTest.log("Found breakpoint.js"); |
| scriptIdentifier = messageObject.params.scriptId; |
| startLine = messageObject.params.startLine; |
| |
| InspectorProtocol.sendCommand("Runtime.evaluate", { |
| expression: "dfgWithoutInline(); dfgWithInline();" |
| }, function(responseObject) { |
| ProtocolTest.log("dfg functions warmed up\n"); |
| |
| var location1 = {scriptId: scriptIdentifier, lineNumber: 22, columnNumber: 0}; |
| |
| InspectorProtocol.sendCommand("Debugger.setBreakpoint", {location: location1}, function(responseObject) { |
| InspectorProtocol.checkForError(responseObject); |
| ProtocolTest.log("Breakpoint set in notInlineable()"); |
| |
| dfgNonInlinedBreakpointId = responseObject.result.breakpointId; |
| var location2 = {scriptId: scriptIdentifier, lineNumber: 28, columnNumber: 0}; |
| InspectorProtocol.sendCommand("Debugger.setBreakpoint", {location: location2}, function(responseObject) { |
| InspectorProtocol.checkForError(responseObject); |
| ProtocolTest.log("Breakpoint set in inlineable()\n"); |
| |
| dfgInlinedBreakpointId = responseObject.result.breakpointId; |
| InspectorProtocol.sendCommand("Runtime.evaluate", { |
| expression: "dfgWithoutInline(); dfgWithInline();" |
| }); |
| }); |
| }); |
| }); |
| } |
| } |
| |
| var breakpointsHit = 0; |
| InspectorProtocol.eventHandler["Debugger.paused"] = function(messageObject) |
| { |
| var breakpointId = null; |
| breakpointsHit++; |
| ProtocolTest.log("Hit Breakpoint " + breakpointsHit + "!"); |
| if (breakpointsHit == 1) |
| breakpointId = dfgNonInlinedBreakpointId; |
| else if (breakpointsHit == 2) |
| breakpointId = dfgInlinedBreakpointId; |
| else |
| ProtocolTest.log("Unexpected breakpoint"); |
| |
| InspectorProtocol.sendCommand("Debugger.removeBreakpoint", {"breakpointId": breakpointId}, function(responseObject) { |
| ProtocolTest.log("Removed Breakpoint " + breakpointsHit + "!"); |
| InspectorProtocol.sendCommand("Debugger.resume", {}, function(responseObject) { |
| if (breakpointsHit == 2) { |
| ProtocolTest.log("PASS"); |
| ProtocolTest.completeTest(); |
| } |
| }); |
| }); |
| } |
| } |
| </script> |
| </head> |
| <body> |
| <p>Debugger.setBreakpoint in DFG compiled functions.</p> |
| </body> |
| </html> |