97 lines
4.7 KiB
HTML
97 lines
4.7 KiB
HTML
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
|
|
<script src="resources/breakpoint.js"></script>
|
|
<script>
|
|
|
|
function test()
|
|
{
|
|
InspectorProtocol.sendCommand("Debugger.enable", {});
|
|
InspectorProtocol.sendCommand("Debugger.setBreakpointsActive", {active: true});
|
|
|
|
var inBreakpoint = false;
|
|
var breakpointTriggered = 0;
|
|
|
|
function disableDebuggerAndCompleteTest()
|
|
{
|
|
delete InspectorProtocol.eventHandler["Debugger.scriptParsed"];
|
|
delete InspectorProtocol.eventHandler["Debugger.paused"];
|
|
delete InspectorProtocol.eventHandler["Debugger.resumed"];
|
|
|
|
InspectorProtocol.sendCommand("Debugger.disable");
|
|
ProtocolTest.log("Test is complete, disabling breakpoints.");
|
|
ProtocolTest.completeTest();
|
|
}
|
|
|
|
InspectorProtocol.eventHandler["Debugger.scriptParsed"] = function(messageObject)
|
|
{
|
|
if (/resources\/breakpoint\.js$/.test(messageObject.params.url)) {
|
|
ProtocolTest.log("Found breakpoint.js");
|
|
var scriptIdentifier = messageObject.params.scriptId;
|
|
var location = {scriptId: scriptIdentifier, lineNumber: 8, columnNumber: 0};
|
|
var options = {condition: "(a + b) > 10"};
|
|
InspectorProtocol.sendCommand("Debugger.setBreakpoint", {location: location, options: options}, function(responseObject) {
|
|
InspectorProtocol.checkForError(responseObject);
|
|
ProtocolTest.log("Running breakpointWithCondition multiple times");
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(1, 2)"});
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(5, 5)"});
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(7, 4)"});
|
|
});
|
|
}
|
|
}
|
|
|
|
InspectorProtocol.eventHandler["Debugger.paused"] = function(messageObject)
|
|
{
|
|
ProtocolTest.log("Hit Breakpoint!");
|
|
inBreakpoint = true;
|
|
++breakpointTriggered;
|
|
|
|
var callFrameIdentifier = messageObject.params.callFrames[0].callFrameId;
|
|
if (breakpointTriggered === 1) {
|
|
InspectorProtocol.sendCommand("Debugger.evaluateOnCallFrame", {callFrameId: callFrameIdentifier, expression: "a"}, function(messageObject) {
|
|
ProtocolTest.log("Evaluted value of `a` (expecting number 7) was: " + JSON.stringify(messageObject.result.result));
|
|
InspectorProtocol.sendCommand("Debugger.evaluateOnCallFrame", {callFrameId: callFrameIdentifier, expression: "b"}, function(messageObject) {
|
|
ProtocolTest.log("Evaluted value of `b` (expecting number 4) was: " + JSON.stringify(messageObject.result.result));
|
|
InspectorProtocol.sendCommand("Debugger.resume", {});
|
|
});
|
|
});
|
|
} else if (breakpointTriggered === 2) {
|
|
InspectorProtocol.sendCommand("Debugger.evaluateOnCallFrame", {callFrameId: callFrameIdentifier, expression: "a"}, function(messageObject) {
|
|
ProtocolTest.log("Evaluted value of `a` (expecting number 4) was: " + JSON.stringify(messageObject.result.result));
|
|
InspectorProtocol.sendCommand("Debugger.evaluateOnCallFrame", {callFrameId: callFrameIdentifier, expression: "b"}, function(messageObject) {
|
|
ProtocolTest.log("Evaluted value of `b` (expecting number 7) was: " + JSON.stringify(messageObject.result.result));
|
|
|
|
ProtocolTest.log("PASS: hit breakpoints with expected values");
|
|
disableDebuggerAndCompleteTest();
|
|
});
|
|
});
|
|
} else {
|
|
ProtocolTest.log("FAIL: hit too many breakpoints.");
|
|
disableDebuggerAndCompleteTest();
|
|
}
|
|
}
|
|
|
|
InspectorProtocol.eventHandler["Debugger.resumed"] = function(messageObject)
|
|
{
|
|
ProtocolTest.log("Resumed, running breakpointWithCondition multiple times again");
|
|
inBreakpoint = false;
|
|
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(9, 0)"});
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(12, -4)"});
|
|
InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointWithCondition(4, 7)"}, function() {
|
|
setTimeout(function() {
|
|
if (!inBreakpoint) {
|
|
ProtocolTest.log("FAIL: Did not hit conditional breakpoint the second time");
|
|
disableDebuggerAndCompleteTest();
|
|
}
|
|
}, 100);
|
|
});
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Debugger.setBreakpoint options.condition</p>
|
|
</body>
|
|
</html>
|