mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 11:49:44 +00:00
LibWeb: Implement window.stop()
Fixes a handful of timeouts on WPT.
This commit is contained in:
parent
fdee82d203
commit
3f461b96df
Notes:
github-actions[bot]
2024-12-05 11:39:56 +00:00
Author: https://github.com/awesomekling
Commit: 3f461b96df
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2778
Reviewed-by: https://github.com/gmta ✅
11 changed files with 94 additions and 0 deletions
|
@ -0,0 +1,8 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="../../../../resources/testharness.js"></script>
|
||||
<script src="../../../../resources/testharnessreport.js"></script>
|
||||
|
||||
<div id=log></div>
|
||||
<script src="../../../../html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js"></script>
|
|
@ -0,0 +1,31 @@
|
|||
// document.open() bails out early if there is an active parser with non-zero
|
||||
// script nesting level or if a load was aborted while there was an active
|
||||
// parser. window.stop() aborts the current parser, so once it has been called
|
||||
// while a parser is active, document.open() will no longer do anything to that
|
||||
// document,
|
||||
|
||||
window.handlers = {};
|
||||
|
||||
async_test(t => {
|
||||
const frame = document.body.appendChild(document.createElement("iframe"));
|
||||
t.add_cleanup(() => frame.remove());
|
||||
frame.src = "resources/aborted-parser-frame.html";
|
||||
window.handlers.afterOpen = t.step_func_done(() => {
|
||||
const openCalled = frame.contentDocument.childNodes.length === 0;
|
||||
assert_false(openCalled, "child document should not be empty");
|
||||
assert_equals(frame.contentDocument.querySelector("p").textContent,
|
||||
"Text", "Should still have our paragraph");
|
||||
});
|
||||
}, "document.open() after parser is aborted");
|
||||
|
||||
async_test(t => {
|
||||
const frame = document.body.appendChild(document.createElement("iframe"));
|
||||
t.add_cleanup(() => frame.remove());
|
||||
frame.src = "resources/aborted-parser-async-frame.html";
|
||||
window.handlers.afterOpenAsync = t.step_func_done(() => {
|
||||
const openCalled = frame.contentDocument.childNodes.length === 0;
|
||||
assert_false(openCalled, "child document should not be empty");
|
||||
assert_equals(frame.contentDocument.querySelector("p").textContent,
|
||||
"Text", "Should still have our paragraph");
|
||||
});
|
||||
}, "async document.open() after parser is aborted");
|
|
@ -0,0 +1,9 @@
|
|||
<!doctype html>
|
||||
<p>Text</p>
|
||||
<script>
|
||||
window.stop();
|
||||
parent.step_timeout(() => {
|
||||
document.open();
|
||||
parent.handlers.afterOpenAsync();
|
||||
}, 10);
|
||||
</script>
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<p>Text</p>
|
||||
<script>
|
||||
window.stop();
|
||||
document.open();
|
||||
parent.handlers.afterOpen();
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue