mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 19:59:17 +00:00
LibWeb: Update run_timer_initialization_steps
to the latest spec
This fixes a number of WPT tests, which expect an error to be reported if an exception is thrown in the timer callback.
This commit is contained in:
parent
1f57df34f1
commit
4a6e457d4b
Notes:
github-actions[bot]
2024-12-19 15:26:45 +00:00
Author: https://github.com/tcl3
Commit: 4a6e457d4b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2739
Reviewed-by: https://github.com/shannonbooth
5 changed files with 124 additions and 31 deletions
|
@ -0,0 +1,31 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>window.setInterval() reports the exception from its callback in the callback's global object</title>
|
||||
<script src=../../../resources/testharness.js></script>
|
||||
<script src=../../../resources/testharnessreport.js></script>
|
||||
<iframe></iframe>
|
||||
<iframe></iframe>
|
||||
<iframe></iframe>
|
||||
<script>
|
||||
setup({ allow_uncaught_exception: true });
|
||||
|
||||
const onerrorCalls = [];
|
||||
window.onerror = () => { onerrorCalls.push("top"); };
|
||||
frames[0].onerror = () => { onerrorCalls.push("frame0"); };
|
||||
frames[1].onerror = () => { onerrorCalls.push("frame1"); };
|
||||
frames[2].onerror = () => { onerrorCalls.push("frame2"); };
|
||||
|
||||
async_test(t => {
|
||||
window.onload = t.step_func(() => {
|
||||
const id = frames[0].setInterval(new frames[1].Function(`
|
||||
parent.clearThisInterval();
|
||||
throw new parent.frames[2].Error("PASS");
|
||||
`), 4);
|
||||
window.clearThisInterval = () => { frames[0].clearInterval(id); };
|
||||
|
||||
t.step_wait_func_done(() => onerrorCalls.length > 0,
|
||||
() => assert_array_equals(onerrorCalls, ["frame1"]),
|
||||
undefined, 1000, 10);
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,27 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>window.setTimeout() reports the exception from its callback in the callback's global object</title>
|
||||
<script src=../../../resources/testharness.js></script>
|
||||
<script src=../../../resources/testharnessreport.js></script>
|
||||
<iframe></iframe>
|
||||
<iframe></iframe>
|
||||
<iframe></iframe>
|
||||
<script>
|
||||
setup({ allow_uncaught_exception: true });
|
||||
|
||||
const onerrorCalls = [];
|
||||
window.onerror = () => { onerrorCalls.push("top"); };
|
||||
frames[0].onerror = () => { onerrorCalls.push("frame0"); };
|
||||
frames[1].onerror = () => { onerrorCalls.push("frame1"); };
|
||||
frames[2].onerror = () => { onerrorCalls.push("frame2"); };
|
||||
|
||||
async_test(t => {
|
||||
window.onload = t.step_func(() => {
|
||||
frames[0].setTimeout(new frames[1].Function(`throw new parent.frames[2].Error("PASS");`), 4);
|
||||
|
||||
t.step_wait_func_done(() => onerrorCalls.length > 0,
|
||||
() => assert_array_equals(onerrorCalls, ["frame1"]),
|
||||
undefined, 1000, 10);
|
||||
});
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue