| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script src="resources/exception.js"></script> |
| <script> |
| function test() |
| { |
| let expectPause = false; |
| let testIndex = 0; |
| let statementsWithUncaughtExceptions = [ |
| "({}).a.b.c.d;", |
| "exceptionBasic();", |
| "exceptionDOM();", |
| "exceptionInHostFunction();", |
| "throwString();", |
| "throwParam({x:1});", |
| "throwParam(new Error('error message'));" |
| ]; |
| |
| function triggerNextUncaughtException() |
| { |
| // Evaluate statement and expect to pause. |
| if (testIndex < statementsWithUncaughtExceptions.length) { |
| var statement = statementsWithUncaughtExceptions[testIndex++]; |
| InspectorProtocol.sendCommand("Runtime.evaluate", {expression: "setTimeout(function() { " + statement + " }, 0);"}); |
| return; |
| } |
| |
| // Done evaluating statements to pause. Evaluate some more we do not expect to pause. |
| ProtocolTest.log("PASS - paused for each uncaught exception"); |
| ProtocolTest.completeTest(); |
| } |
| |
| InspectorProtocol.sendCommand("Debugger.enable", {}); |
| InspectorProtocol.sendCommand("Debugger.setBreakpointsActive", {active: true}); |
| InspectorProtocol.sendCommand("Debugger.setPauseOnExceptions", {state: "uncaught"}, function(responseObject) { |
| InspectorProtocol.checkForError(responseObject); |
| expectPause = true; |
| triggerNextUncaughtException(); |
| }); |
| |
| InspectorProtocol.eventHandler["Debugger.paused"] = function(messageObject) |
| { |
| if (!expectPause) { |
| ProtocolTest.log("FAIL - debugger paused when we did not expect to"); |
| ProtocolTest.completeTest(); |
| return; |
| } |
| |
| ProtocolTest.log("[" + testIndex + "] Testing statement '" + statementsWithUncaughtExceptions[testIndex - 1] + "'"); |
| ProtocolTest.log("[" + testIndex + "] Paused and about to step"); |
| InspectorProtocol.sendCommand("Debugger.stepOver", {}); |
| } |
| |
| InspectorProtocol.eventHandler["Debugger.resumed"] = function(messageObject) |
| { |
| ProtocolTest.log("[" + testIndex + "] Resumed"); |
| triggerNextUncaughtException(); |
| } |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Regression test for https://bugs.webkit.org/show_bug.cgi?id=133182</p> |
| <p>Stepping after breaking on uncaught exceptions should not crash.</p> |
| </body> |
| </html> |