| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script src="../../http/tests/inspector/resources/console-test.js"></script> |
| <script src="../../http/tests/inspector/resources/probe-test.js"></script> |
| <script src="resources/breakpoint.js"></script> |
| <script> |
| function test() |
| { |
| InspectorProtocol.sendCommand("Console.enable", {}); |
| InspectorProtocol.sendCommand("Debugger.enable", {}); |
| InspectorProtocol.sendCommand("Debugger.setBreakpointsActive", {active: true}); |
| |
| var isExpectingLogs = false; |
| var isExpectingSounds = false; |
| var isExpectingSamples = false; |
| var logCount = 0; |
| var soundCount = 0; |
| var sampleCount = 0; |
| const expectedLogCount = 6; |
| const expectedSoundCount = 2; |
| const expectedSampleCount = 2; |
| |
| function receivedAllExpectedOutput() { |
| return logCount === expectedLogCount && sampleCount === expectedSampleCount && soundCount === expectedSoundCount; |
| } |
| |
| 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: 18, columnNumber: 0}; |
| var options = { |
| condition: "a > 10", |
| autoContinue: true, |
| actions: [ |
| {"type": "log", "data": "log-action-before"}, |
| {"type": "sound"}, |
| {"type": "evaluate", "data": "(function() { console.log('eval-action', a, b); })()"}, |
| {"type": "log", "data": "log-action-after"}, |
| {"type": "probe", "data": "a"} |
| ] |
| }; |
| |
| InspectorProtocol.sendCommand("Debugger.setBreakpoint", {location: location, options: options}, function(responseObject) { |
| InspectorProtocol.checkForError(responseObject); |
| breakpointIdentifier = responseObject.result.breakpointId; |
| ProtocolTest.log("Running breakpointActions a few times that should not trigger"); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(1)"}); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(2, 12)"}); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(2, {x:1,y:2})"}, function() { |
| isExpectingLogs = true; |
| isExpectingSounds = true; |
| isExpectingSamples = true; |
| ProtocolTest.log("Running breakpointActions to triggering the breakpoint actions"); |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(12, {x:1,y:2})"}, function() { |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "breakpointActions(100, document.body)"}); |
| }); |
| }); |
| }); |
| } |
| } |
| |
| InspectorProtocol.eventHandler["Debugger.paused"] = function(messageObject) |
| { |
| ProtocolTest.log("Hit Breakpoint!"); |
| |
| ProtocolTest.log("FAIL: should not have hit breakpoint, autoContinue was true"); |
| ProtocolTest.completeTest(); |
| } |
| |
| InspectorProtocol.eventHandler["Debugger.playBreakpointActionSound"] = function(messageObject) |
| { |
| if (!isExpectingSounds) { |
| ProtocolTest.log("FAIL: unexpected breakpoint sound."); |
| ProtocolTest.completeTest(); |
| return; |
| } |
| |
| ProtocolTest.log("PASS: Breakpoint Sound"); |
| |
| ++soundCount; |
| |
| if (receivedAllExpectedOutput()) |
| ProtocolTest.completeTest(); |
| } |
| |
| InspectorProtocol.eventHandler["Debugger.didSampleProbe"] = function(messageObject) |
| { |
| if (!isExpectingSamples) { |
| ProtocolTest.log("FAIL: unexpected probe sample, probe samples should only have come from breakpoint actions."); |
| ProtocolTest.completeTest(); |
| return; |
| } |
| |
| var simplifiedSample = ProtocolTest.Probe.sanitizeProbeSample(messageObject); |
| ProtocolTest.log("PASS: Probe sample payload: " + JSON.stringify(simplifiedSample.payload)); |
| |
| ++sampleCount; |
| |
| if (receivedAllExpectedOutput()) |
| ProtocolTest.completeTest(); |
| } |
| |
| InspectorProtocol.eventHandler["Console.messageAdded"] = function(messageObject) |
| { |
| if (!isExpectingLogs) { |
| ProtocolTest.log("FAIL: unexpected log, logs should only have come from breakpoint actions."); |
| ProtocolTest.completeTest(); |
| return; |
| } |
| |
| var message = ProtocolTest.Console.sanitizeConsoleMessage(messageObject); |
| ProtocolTest.log("PASS: Console Message: " + JSON.stringify(message)); |
| |
| ++logCount; |
| |
| if (receivedAllExpectedOutput()) |
| ProtocolTest.completeTest(); |
| } |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Debugger.setBreakpoint options.actions</p> |
| </body> |
| </html> |