Some document.write() WPTs made the assumption that a setTimeout() in the parent window will run after the load event in the child frame, and there's no such guarantee per spec. The focus fixup rule test similarly relied on the rendering not being suppressed by the time the test run. Do that by awaiting an animation frame, not just a timeout. Differential Revision: https://phabricator.services.mozilla.com/D301259
30 lines
1.0 KiB
HTML
30 lines
1.0 KiB
HTML
<!doctype html>
|
|
<title>document.write in an imported module</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<div id="log"></div>
|
|
<script>
|
|
async_test(t => {
|
|
// Expose {test} in the iframe for using the step_timeout helper.
|
|
document.test = t;
|
|
|
|
const iframe = document.createElement("iframe");
|
|
|
|
iframe.onunhandledrejection = t.unreached_func("Unhandled promise rejection detected");
|
|
iframe.onerror = t.unreached_func("Error loading iframe");
|
|
|
|
iframe.onload = t.step_func(() => {
|
|
assert_equals(iframe.contentDocument.body.textContent, "Initial body contents\n");
|
|
iframe.onload = null;
|
|
});
|
|
document.addEventListener("documentWriteDone", t.step_func_done(() => {
|
|
// If the timer fires before load, ignore the load listener.
|
|
iframe.onload = null;
|
|
assert_equals(iframe.contentDocument.body.textContent, "document.write body contents\n");
|
|
}));
|
|
|
|
iframe.src = "module-tla-delayed-iframe.html";
|
|
document.body.appendChild(iframe);
|
|
});
|
|
</script>
|