| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <link rel="help" href="https://html.spec.whatwg.org/#runtime-script-errors"> |
| <link rel="help" href="https://html.spec.whatwg.org/#unhandled-promise-rejections"> |
| <script> |
| 'use strict'; |
| setup({ |
| allow_uncaught_exception: true |
| }); |
| async_test(function(t) { |
| var e = new Error('e'); |
| var e2 = new Error('e2'); |
| |
| window.onerror = function (msg, url, line, col, error) { |
| t.step(function() { |
| assert_true(msg.includes('e2')); |
| assert_equals(error, e2); |
| }); |
| t.done(); |
| }; |
| |
| window.onrejectionhandled = function() { |
| // This should cause onerror |
| throw e2; |
| }; |
| |
| var p = Promise.reject(e); |
| queueTask(function() { |
| queueTask(t.step_func(function() { |
| // This will cause onrejectionhandled |
| p.catch(function() {}); |
| })); |
| }); |
| }, 'Throwing inside an unhandledrejection handler invokes the error handler.'); |
| |
| // This function queues a task in "DOM manipulation task source" |
| function queueTask(f) { |
| var d = document.createElement("details"); |
| d.ontoggle = function() { |
| f(); |
| }; |
| |
| d.setAttribute("open", ""); |
| } |
| </script> |