Update web-platform-tests to revision fa5f0edd48aca7acfa7d35f1be31cb0dd65817c6

This commit is contained in:
WPT Sync Bot 2020-06-25 08:21:34 +00:00
parent 6659e9004d
commit a4cebda3db
110 changed files with 1473 additions and 526 deletions

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>