blob: aa6e782753e7ed24955d34068cb6839714eb9761 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script type="text/javascript" src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script type="text/javascript" src="./resources/break-on-exception-tests.js"></script>
<script>
function test() {
function doExceptionTest(testName, exceptionBreakType, resumeAction)
{
var pauses = 0;
var index = 0;
function runTestCase(test) {
InspectorTest.evaluateInPage("setTimeout(" + test + ", 50)");
}
WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded, function(event) {
var scriptObject = event.data.script;
if (!/break-on-exception-tests\.js$/.test(scriptObject.url))
return;
if (exceptionBreakType == 'AllExceptions')
WebInspector.debuggerManager.allExceptionsBreakpoint.disabled = false;
else
WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint.disabled = false;
runTestCase(testName);
});
WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange, function(event) {
var callFrame = WebInspector.debuggerManager.activeCallFrame;
if (callFrame) {
// Pausing.
InspectorTest.assert(WebInspector.debuggerManager.pauseReason == "exception");
var funcName = callFrame.functionName || "<anonymous>";
var location = callFrame.sourceCodeLocation;
var line = location.lineNumber + 1;
var column = location.columnNumber + 1;
InspectorTest.log("PAUSE #" + (++pauses) + " AT: " + funcName + ":" + line + ":" + column);
WebInspector.debuggerManager.resume();
} else {
// Resuming.
if (resumeAction == 'FinishOnResume')
InspectorTest.completeTest();
}
});
// This is a signal mechanism for the web process to tell us that the test is done.
// The web process fires the signal by doing console.log("DONE").
WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded, function(event) {
var message = event.data.message;
if (!message.parameters || message.parameters.length !== 1)
return;
if (message.parameters[0].type !== "string" || message.parameters[0].description !== "DONE")
return;
InspectorTest.completeTest();
});
InspectorTest.reloadPage();
}
doExceptionTest('testThrowingInPromiseWithRethrowInCatch', 'UncaughtExceptions', 'FinishOnResume');
}
</script>
</head>
<body onload="runTest()">
<p>Checking pause locations when pausing on uncaught exceptions.</p>
</body>
</html>