mirror of
https://github.com/servo/servo.git
synced 2025-10-17 08:49:21 +01:00
Update web-platform-tests to revision fa5f0edd48aca7acfa7d35f1be31cb0dd65817c6
This commit is contained in:
parent
6659e9004d
commit
a4cebda3db
110 changed files with 1473 additions and 526 deletions
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>Iframes with loading='lazy' can be lazy loaded multiple times</title>
|
||||
<link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/urls-and-fetching.html#lazy-loading-attributes">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This is used to represent the top of the viewport, so we can scroll the
|
||||
below-viewport iframe out-of-view later in the test -->
|
||||
<div id="top_div"></div>
|
||||
<div style="height:1000vh;"></div>
|
||||
<iframe id="below_viewport" loading="lazy" src="resources/unload-reporter.html?first"></iframe>
|
||||
|
||||
<script>
|
||||
const t = async_test();
|
||||
const iframe = document.querySelector('#below_viewport');
|
||||
const top_div = document.querySelector('#top_div');
|
||||
|
||||
let has_window_load_fired = false;
|
||||
let iframe_being_unloaded = false;
|
||||
|
||||
// This should be triggered first.
|
||||
window.addEventListener('load', t.step_func(() => {
|
||||
has_window_load_fired = true;
|
||||
// Scroll the loading=lazy below-viewport iframe into view, so that it loads.
|
||||
iframe.scrollIntoView();
|
||||
}));
|
||||
|
||||
window.addEventListener('message', t.step_func(msg => {
|
||||
if (msg.data === 'unloading')
|
||||
iframe_being_unloaded = true;
|
||||
}));
|
||||
|
||||
iframe.onload = t.step_func(() => {
|
||||
assert_true(has_window_load_fired,
|
||||
"The loading=lazy below-viewport iframe should not block the " +
|
||||
"window load event");
|
||||
changeIframeSourceAndScrollToTop();
|
||||
});
|
||||
|
||||
function changeIframeSourceAndScrollToTop() {
|
||||
top_div.scrollIntoView();
|
||||
|
||||
// Lazily load a "different" iframe.
|
||||
iframe.src = 'resources/unload-reporter.html?second';
|
||||
iframe.onload =
|
||||
t.unreached_func("The loading=lazy below-viewport iframe should lazily " +
|
||||
"load its second resource, and not load it eagerly " +
|
||||
"when the `src` attribute is changed");
|
||||
|
||||
// In 1s, scroll the iframe *back* into view, and record that it loads
|
||||
// successfully.
|
||||
t.step_timeout(() => {
|
||||
assert_false(iframe_being_unloaded,
|
||||
"The iframe's old resource is not eagerly unloaded");
|
||||
|
||||
iframe.onload = t.step_func_done(() => {
|
||||
assert_true(iframe_being_unloaded,
|
||||
"The iframe's old resources was unloaded correctly");
|
||||
});
|
||||
|
||||
iframe.scrollIntoView();
|
||||
}, 1000);
|
||||
}
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>Below-viewport iframes with loading='lazy' load when set to
|
||||
loading='eager' or the `loading` attribute is removed</title>
|
||||
<link rel="author" title="Dom Farolino" href="mailto:domfarolino@gmail.com">
|
||||
<link rel="help" href="https://github.com/whatwg/html/pull/5579">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<script>
|
||||
const t = async_test("Below-viewport iframes with loading='lazy' load when " +
|
||||
"set to loading='eager' or the `loading` attribute is " +
|
||||
"removed");
|
||||
|
||||
const iframe_1_onload = t.unreached_func("#iframe_1 should not load before " +
|
||||
"the window load event");
|
||||
const iframe_2_onload = t.unreached_func("#iframe_2 should not load before " +
|
||||
"the window load event");
|
||||
|
||||
window.addEventListener("load", t.step_func(() => {
|
||||
const iframe_1 = document.querySelector('#iframe_1');
|
||||
const iframe_2 = document.querySelector('#iframe_2');
|
||||
|
||||
const iframe_1_promise = new Promise((resolve, reject) => {
|
||||
iframe_1.onerror = reject;
|
||||
iframe_1.onload = resolve;
|
||||
});
|
||||
|
||||
const iframe_2_promise = new Promise((resolve, reject) => {
|
||||
iframe_2.onerror = reject;
|
||||
iframe_2.onload = resolve;
|
||||
});
|
||||
|
||||
Promise.all([iframe_1_promise, iframe_2_promise])
|
||||
.then(t.step_func_done())
|
||||
.catch(t.unreached_func("The iframes should load successfully"));
|
||||
|
||||
// Kick off the requests.
|
||||
iframe_1.loading = 'eager';
|
||||
iframe_2.removeAttribute('loading'); // unset the attribute, putting it in
|
||||
// the default (eager) state.
|
||||
}));
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<div style="height:1000vh;"></div>
|
||||
<iframe id="iframe_1"
|
||||
src="resources/subframe.html?1"
|
||||
loading="lazy" onload="iframe_1_onload();"></iframe>
|
||||
<iframe id="iframe_2"
|
||||
src="resources/subframe.html?2"
|
||||
loading="lazy" onload="iframe_2_onload();"></iframe>
|
||||
</body>
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<h1>I'll report to my parent when I'm unloaded</h1>
|
||||
|
||||
<script>
|
||||
window.onbeforeunload = e => {
|
||||
parent.postMessage('unloading', '*');
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>Below-viewport images with loading='lazy' load when set to
|
||||
loading='eager' or the `loading` attribute is removed</title>
|
||||
<link rel="author" title="Dom Farolino" href="mailto:domfarolino@gmail.com">
|
||||
<link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-loading">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
|
||||
<script>
|
||||
const t = async_test("Below-viewport images with loading='lazy' load when " +
|
||||
"set to loading='eager' or the `loading` attribute is " +
|
||||
"removed");
|
||||
|
||||
const img_1_onload = t.unreached_func("#img_1 should not load before the " +
|
||||
"window load event");
|
||||
const img_2_onload = t.unreached_func("#img_2 should not load before the " +
|
||||
"window load event");
|
||||
|
||||
window.addEventListener("load", t.step_func(() => {
|
||||
const img_1 = document.querySelector('#img_1');
|
||||
const img_2 = document.querySelector('#img_2');
|
||||
|
||||
const img_1_promise = new Promise((resolve, reject) => {
|
||||
img_1.onerror = reject;
|
||||
img_1.onload = resolve;
|
||||
});
|
||||
|
||||
const img_2_promise = new Promise((resolve, reject) => {
|
||||
img_2.onerror = reject;
|
||||
img_2.onload = resolve;
|
||||
});
|
||||
|
||||
Promise.all([img_1_promise, img_2_promise])
|
||||
.then(t.step_func_done())
|
||||
.catch(t.unreached_func("The images should load successfully"));
|
||||
|
||||
// Kick off the requests.
|
||||
img_1.loading = 'eager';
|
||||
img_2.removeAttribute('loading'); // unset the attribute, putting it in
|
||||
// the default (eager) state.
|
||||
}));
|
||||
|
||||
</script>
|
||||
|
||||
<body>
|
||||
<div style="height:1000vh;"></div>
|
||||
<img id="img_1"
|
||||
src="resources/image.png?1"
|
||||
loading="lazy" onload="img_1_onload();">
|
||||
<img id="img_2"
|
||||
src="resources/image.png?2"
|
||||
loading="lazy" onload="img_2_onload();">
|
||||
</body>
|
Loading…
Add table
Add a link
Reference in a new issue