callback-cross-realm-report-exception.html (1051B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>IntersectionObserver 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 srcdoc='<div style="height: 100px;">foo</div>'></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 const target = frames[0].document.querySelector("div"); 21 const io = new frames[0].IntersectionObserver(new frames[1].Function(`throw new parent.frames[2].Error("PASS");`)); 22 io.observe(target); 23 24 t.step_timeout(() => { 25 assert_array_equals(onerrorCalls, ["frame1"]); 26 t.done(); 27 }, 100); 28 }); 29 }); 30 </script>