Commit d777232f authored by Dominic Farolino's avatar Dominic Farolino Committed by Commit Bot

Add iframe loading=lazy data: and Blob URL WPTs

R=sclittle@chromium.org

Bug: 1047909
Change-Id: Ic5e1ef207e8483ae1a56a4ee090d7ad6317a3a3f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2303859
Commit-Queue: Dominic Farolino <dom@chromium.org>
Reviewed-by: default avatarScott Little <sclittle@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789314}
parent b30ad4a0
This is a testharness.js-based test.
PASS In-viewport iframes load eagerly
PASS In-viewport srcdoc iframes load eagerly
PASS Below-viewport iframes load lazily
FAIL Below-viewport srcdoc iframes load lazily assert_true: The window load event should have fired before the below-viewport srcdoc iframe's subresource loads expected true got false
FAIL Below-viewport data: url iframes load lazily assert_true: The window load event should have fired before the below-viewport data url iframe loads expected true got false
FAIL Below-viewport blob url iframes load lazily assert_true: The window load event should have fired before the below-viewport blob url iframe loads expected true got false
Harness: the test ran to completion.
......@@ -11,12 +11,22 @@
<script>
const t_in_viewport =
async_test('In-viewport iframes load eagerly');
const t_in_viewport_srcdoc=
async_test('In-viewport srcdoc iframes load eagerly');
const t_below_viewport =
async_test('Below-viewport iframes load lazily');
const t_below_viewport_srcdoc =
async_test('Below-viewport srcdoc iframes load lazily');
const t_below_viewport_data_url =
async_test('Below-viewport data: url iframes load lazily');
const t_below_viewport_blob_url =
async_test('Below-viewport blob url iframes load lazily');
document.addEventListener('DOMContentLoaded', e => {
const blob_url_iframe = document.querySelector('#below_viewport_blob_url');
const blob = new Blob(['<p>Blob subframe</p>'], {type: 'text/html'});
const url = URL.createObjectURL(blob);
blob_url_iframe.src = url;
});
let has_window_loaded = false;
......@@ -25,11 +35,6 @@
"The in_viewport iframe should not block the load event");
});
const in_viewport_srcdoc_iframe_onload = t_in_viewport_srcdoc.step_func_done(() => {
assert_false(has_window_loaded,
"The in_viewport srcdoc iframe should not block the load event");
});
window.addEventListener("load", () => {
has_window_loaded = true;
document.getElementById("below_viewport_srcdoc").scrollIntoView();
......@@ -41,6 +46,7 @@
"the below-viewport iframe loads");
});
// Onload handlers for below-viewport srcdoc iframe.
// Must make this accessible to the srcdoc iframe's body.
window.below_viewport_srcdoc_iframe_subresource_onload = t_below_viewport_srcdoc.step_func(() => {
assert_true(has_window_loaded,
......@@ -53,16 +59,27 @@
"The window load event should have fired before " +
"the below-viewport srcdoc iframe loads");
});
// Onload handler for below-viewport data url iframe.
const below_viewport_data_url_iframe_onload = t_below_viewport_data_url.step_func_done(() => {
assert_true(has_window_loaded,
"The window load event should have fired before " +
"the below-viewport data url iframe loads");
});
// Onload handler for below-viewport blob url iframe.
const below_viewport_blob_url_iframe_onload = t_below_viewport_blob_url.step_func_done(() => {
assert_true(has_window_loaded,
"The window load event should have fired before " +
"the below-viewport blob url iframe loads");
});
</script>
<body>
<iframe id="in_viewport" src="resources/subframe.html?in-viewport"
loading="lazy" width="200px" height="100px"
onload="in_viewport_iframe_onload();"></iframe>
<iframe id="in_viewport_srcdoc"
srcdoc="<body><img src='/common/square.png?in-viewport'></body>"
loading="lazy" width="200px" height="100px"
onload="in_viewport_srcdoc_iframe_onload();"></iframe>
<div style="height:2000vh;"></div>
<iframe id="below_viewport" src="resources/subframe.html?below-viewport"
......@@ -73,6 +90,15 @@
onload='parent.below_viewport_srcdoc_iframe_subresource_onload();'></body>"
loading="lazy" width="200px" height="100px"
onload="below_viewport_srcdoc_iframe_onload();"></iframe>
<iframe id="below_viewport_data_url"
src="data:text/html,<p>Subframe</p>"
loading="lazy" width="200px" height="100px"
onload="below_viewport_data_url_iframe_onload();"></iframe>
<!-- This iframe has its `src` set to a blob URL dynamically above -->
<iframe id="below_viewport_blob_url"
loading="lazy" width="200px" height="100px"
onload="below_viewport_blob_url_iframe_onload();"></iframe>
<!-- This async script loads very slowly in order to ensure that, if the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment