| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| // We expect the "oops!" exception to be reported to the global error handler. |
| setup({allow_uncaught_exception: true}); |
| |
| // This test fails if exceptions from the error callback are not properly |
| // caught (and may interfere with the code that schedules the test to end |
| // in a microtask). |
| async_test(t => { |
| var pc = new RTCPeerConnection(); |
| pc.close(); |
| t.step_timeout(() => { |
| pc.createOffer( |
| t.unreached_func("closed connection should not create offer"), |
| () => { throw new Error("oops!"); }); |
| |
| // Reasonableness check: while the harness' built-in uncaught exception |
| // handling is disabled, check that we only see the expected exception |
| // as uncaught. |
| addEventListener("error", t.step_func(e => { |
| assert_equals(e.error.message, "oops!"); |
| })); |
| |
| // Finish the test only after the error callback should have run. |
| // This is where weird stuff happens if exceptions aren't handled |
| // properly. |
| Promise.resolve().then(t.step_func_done()); |
| }, 0); |
| }, "Exceptions from error callback shouldn't break things."); |
| </script> |