queue-microtask-cross-realm-callback-report-exception.html (893B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>queueMicrotask() reports the exception from its callback in the callback's global object</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <iframe></iframe> 7 <iframe></iframe> 8 <iframe></iframe> 9 <script> 10 setup({ allow_uncaught_exception: true }); 11 12 const onerrorCalls = []; 13 window.onerror = () => { onerrorCalls.push("top"); }; 14 frames[0].onerror = () => { onerrorCalls.push("frame0"); }; 15 frames[1].onerror = () => { onerrorCalls.push("frame1"); }; 16 frames[2].onerror = () => { onerrorCalls.push("frame2"); }; 17 18 async_test(t => { 19 window.onload = t.step_func(() => { 20 frames[0].queueMicrotask(new frames[1].Function(`throw new parent.frames[2].Error("PASS");`)); 21 22 t.step_timeout(() => { 23 assert_array_equals(onerrorCalls, ["frame1"]); 24 t.done(); 25 }, 4); 26 }); 27 }); 28 </script>