| Index: LayoutTests/inspector/sources/debugger/debugger-pause-on-promise-rejection.html
|
| diff --git a/LayoutTests/inspector/sources/debugger/debugger-pause-on-promise-rejection.html b/LayoutTests/inspector/sources/debugger/debugger-pause-on-promise-rejection.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2918ab8249f2a00454224d60e2b9c8030227fb5c
|
| --- /dev/null
|
| +++ b/LayoutTests/inspector/sources/debugger/debugger-pause-on-promise-rejection.html
|
| @@ -0,0 +1,92 @@
|
| +<html>
|
| +<head>
|
| +<script src="../../../http/tests/inspector/inspector-test.js"></script>
|
| +<script src="../../../http/tests/inspector/debugger-test.js"></script>
|
| +<script>
|
| +
|
| +function createPromise()
|
| +{
|
| + var result = {};
|
| + var p = new Promise(function(resolve, reject) {
|
| + result.resolve = resolve;
|
| + result.reject = reject;
|
| + });
|
| + result.promise = p;
|
| + return result;
|
| +}
|
| +
|
| +function testFunction()
|
| +{
|
| + var resolved = createPromise();
|
| + var caught = createPromise();
|
| + var uncaught = createPromise();
|
| +
|
| + caught.promise
|
| + .then(function c1() {})
|
| + .then(function c2() {})
|
| + .catch(function c3() {});
|
| + uncaught.promise
|
| + .then(function f1() {})
|
| + .then(function f2() {})
|
| + .then(function f3() {}); // Last is uncaught.
|
| +
|
| + resolved.resolve(42); // Should not pause.
|
| + caught.reject(new Error("caught"));
|
| + uncaught.reject(new Error("uncaught"));
|
| +}
|
| +
|
| +var test = function()
|
| +{
|
| + InspectorTest.setQuiet(true);
|
| + InspectorTest.startDebuggerTest(step1);
|
| +
|
| + function waitUntilPausedNTimes(count, callback)
|
| + {
|
| + function inner()
|
| + {
|
| + if (count--)
|
| + InspectorTest.waitUntilPausedAndDumpStackAndResume(inner);
|
| + else
|
| + callback();
|
| + }
|
| + inner();
|
| + }
|
| +
|
| + function step1()
|
| + {
|
| + DebuggerAgent.setPauseOnExceptions(WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnUncaughtExceptions);
|
| + InspectorTest.showScriptSource("debugger-pause-on-promise-rejection.html", step2);
|
| + }
|
| +
|
| + function step2()
|
| + {
|
| + InspectorTest.addResult("=== Pausing only on uncaught exceptions ===");
|
| + InspectorTest.runTestFunction();
|
| + waitUntilPausedNTimes(1, step3);
|
| + }
|
| +
|
| + function step3()
|
| + {
|
| + DebuggerAgent.setPauseOnExceptions(WebInspector.DebuggerModel.PauseOnExceptionsState.PauseOnAllExceptions);
|
| + InspectorTest.addResult("\n=== Pausing on all exceptions ===");
|
| + InspectorTest.runTestFunction();
|
| + waitUntilPausedNTimes(2, step4);
|
| + }
|
| +
|
| + function step4()
|
| + {
|
| + DebuggerAgent.setPauseOnExceptions(WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions);
|
| + InspectorTest.completeDebuggerTest();
|
| + }
|
| +}
|
| +
|
| +</script>
|
| +</head>
|
| +
|
| +<body onload="runTest()">
|
| +<p>
|
| +Tests that pause on promise rejection works.
|
| +</p>
|
| +
|
| +</body>
|
| +</html>
|
|
|