Skip to content

Commit

Permalink
Implement auto sizes for lazy-loaded img
Browse files Browse the repository at this point in the history
Auto Sizes allows developers to omit the sizes attribute (or set it to
sizes=auto) for lazy loaded image elements with srcset. For this use
case the image's width should be provided. The browser will use the
layout width of the image in order to select the source url from the
srcset.

Spec PR:
whatwg/html#8008

WPT tests PR:
#34427

Chrome Platform Status link:
https://chromestatus.com/feature/5191555708616704

Intent to Prototype link:
https://groups.google.com/a/chromium.org/g/blink-dev/c/AYoqvNluyeA

R=pdr

Bug: 1359051
Change-Id: I8e9bc836e9582a9209db53d55e0edc96f90499f2
  • Loading branch information
tcaptan-cr authored and chromium-wpt-export-bot committed Jun 6, 2023
1 parent 1678307 commit eec0fc9
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!doctype html>
<title>Auto sizes rendering</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#sizes-attributes">
<meta name="assert" content="auto sizes rendering">
<img
src="/images/green.png"
width="100px"
>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!doctype html>
<html class="reftest-wait">
<title>Auto sizes rendering</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#sizes-attributes">
<link rel="match" href="reference/sizes-auto-rendering-ref.html">
<script src="/common/rendering-utils.js"></script>
<script src="/common/reftest-wait.js"></script>
<meta name="assert" content="auto sizes rendering">
<img
id="testImg"
loading="lazy"
srcset="
/images/red.png 50w,
/images/green.png 100w
"
sizes="auto"
width="100px"
>
<script>
function imageLoaded() {
waitForAtLeastOneFrame().then(takeScreenshot);
}

testImg.addEventListener('load', imageLoaded);
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!doctype html>
<html class="reftest-wait">
<title>Auto sizes rendering</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#sizes-attributes">
<link rel="match" href="reference/sizes-auto-rendering-ref.html">
<script src="/common/rendering-utils.js"></script>
<script src="/common/reftest-wait.js"></script>
<meta name="assert" content="auto sizes rendering">
<img
id="testImg"
loading="lazy"
srcset="
/images/green.png 100w,
/images/red.png 200w
"
sizes="auto"
width="100px"
>
<script>
function imageLoaded() {
waitForAtLeastOneFrame().then(takeScreenshot);
}

testImg.addEventListener('load', imageLoaded);
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!doctype html>
<html class="reftest-wait">
<title>Auto sizes dynamic rendering</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#sizes-attributes">
<link rel="match" href="reference/sizes-auto-rendering-ref.html">
<script src="/common/rendering-utils.js"></script>
<script src="/common/reftest-wait.js"></script>
<meta name="assert" content="auto sizes dynamic rendering">
<img
id="testImg"
loading="lazy"
srcset="
/images/fail.gif 200w,
/images/green.png 100w,
/images/red.png 50w
"
sizes="auto"
width="50px"
>
<script>
function secondImageLoaded() {
waitForAtLeastOneFrame().then(takeScreenshot);
}

function firstImageLoaded() {
testImg.addEventListener('load', secondImageLoaded);
testImg.style.width = '100px';
}

testImg.addEventListener('load', firstImageLoaded, {once: true});
</script>
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!doctype html>
<html class="reftest-wait">
<title>Auto sizes rendering</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#sizes-attributes">
<link rel="match" href="reference/sizes-auto-rendering-ref.html">
<script src="/common/rendering-utils.js"></script>
<script src="/common/reftest-wait.js"></script>
<meta name="assert" content="auto sizes rendering">
<img
id="testImg"
loading="lazy"
srcset="
/images/fail.gif 50w,
/images/green.png 100w,
/images/red.png 200w
"
sizes="auto"
width="100px"
>
<script>
function imageLoaded() {
waitForAtLeastOneFrame().then(takeScreenshot);
}

testImg.addEventListener('load', imageLoaded);
</script>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<!doctype html>
<title>img parse a sizes attribute: sizes=auto</title>
<link rel="help" href="https://html.spec.whatwg.org/multipage/images.html#parse-a-sizes-attribute">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
Expand Down

0 comments on commit eec0fc9

Please sign in to comment.