-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This CL adds support for better handling of animated images in LCP: * A new attribute is exposing the first animated frame's paint time (behind a flag). * `startTime` is not changed. * The PageLoadMetrics reported for LCP are set to that first frame paint time for animated images (behind another flag). * Entries are not emitted until the image is loaded. Relevant spec issue: w3c/largest-contentful-paint#83 This Change-Id: I6bb01eacb4f200f9c032ffcfcd9a1a41126a7773 Bug: 1260953
- Loading branch information
1 parent
47f30fc
commit 5e22c43
Showing
7 changed files
with
141 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Timing-Allow-Origin: * | ||
|
28 changes: 28 additions & 0 deletions
28
largest-contentful-paint/animated/observe-animated-image.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<head> | ||
<meta charset=utf-8> | ||
<title>Largest Contentful Paint: observe image.</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="../resources/largest-contentful-paint-helpers.js"></script> | ||
</head> | ||
<body> | ||
<script> | ||
promise_test(async () => { | ||
assert_implements(window.LargestContentfulPaint, | ||
"LargestContentfulPaint is not implemented"); | ||
const beforeLoad = performance.now(); | ||
// 262 is the size of the animated PNG up until the first frame, | ||
// including the chunk that starts the second frame (indicating that | ||
//the first frame data is done). | ||
const url = window.location.origin + | ||
'/images/anim-gr.png?pipe=trickle(262:d1)'; | ||
const entry = await load_and_observe(url); | ||
// anim-gr.png is 100 by 50. | ||
const size = 100 * 50; | ||
checkImage(entry, url, 'image_id', size, beforeLoad, ["animated"]); | ||
}, "Same origin animated image is observable and has a first frame."); | ||
</script> | ||
</body> | ||
</html> |
30 changes: 30 additions & 0 deletions
30
largest-contentful-paint/animated/observe-cross-origin-animated-image.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<head> | ||
<meta charset=utf-8> | ||
<title>Largest Contentful Paint: observe image.</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="../resources/largest-contentful-paint-helpers.js"></script> | ||
<script src="/common/get-host-info.sub.js"></script> | ||
</head> | ||
<body> | ||
<script> | ||
promise_test(async () => { | ||
assert_implements(window.LargestContentfulPaint, | ||
"LargestContentfulPaint is not implemented"); | ||
const beforeLoad = performance.now(); | ||
// 262 is the size of the animated PNG up until the first frame, | ||
// including the chunk that starts the second frame (indicating that | ||
//the first frame data is done). | ||
const {REMOTE_ORIGIN} = get_host_info(); | ||
const url = REMOTE_ORIGIN + | ||
'/images/anim-gr.png?pipe=trickle(262:d1)'; | ||
const entry = await load_and_observe(url); | ||
// anim-gr.png is 100 by 50. | ||
const size = 100 * 50; | ||
checkImage(entry, url, 'image_id', size, beforeLoad, ["renderTimeIs0", "animated-zero"]); | ||
}, "Same origin animated image is observable and has a first frame."); | ||
</script> | ||
</body> | ||
</html> |
30 changes: 30 additions & 0 deletions
30
largest-contentful-paint/animated/observe-cross-origin-tao-animated-image.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<head> | ||
<meta charset=utf-8> | ||
<title>Largest Contentful Paint: observe image.</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="../resources/largest-contentful-paint-helpers.js"></script> | ||
<script src="/common/get-host-info.sub.js"></script> | ||
</head> | ||
<body> | ||
<script> | ||
promise_test(async () => { | ||
assert_implements(window.LargestContentfulPaint, | ||
"LargestContentfulPaint is not implemented"); | ||
const beforeLoad = performance.now(); | ||
// 262 is the size of the animated PNG up until the first frame, | ||
// including the chunk that starts the second frame (indicating that | ||
//the first frame data is done). | ||
const {REMOTE_ORIGIN} = get_host_info(); | ||
const url = REMOTE_ORIGIN + | ||
'/images/anim-tao.png?pipe=trickle(262:d1)'; | ||
const entry = await load_and_observe(url); | ||
// anim-gr.png is 100 by 50. | ||
const size = 100 * 50; | ||
checkImage(entry, url, 'image_id', size, beforeLoad, ["animated"]); | ||
}, "Same origin animated image is observable and has a first frame."); | ||
</script> | ||
</body> | ||
</html> |
27 changes: 27 additions & 0 deletions
27
largest-contentful-paint/animated/observe-non-animated-image.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<!DOCTYPE HTML> | ||
<html> | ||
<head> | ||
<meta charset=utf-8> | ||
<title>Largest Contentful Paint: observe image.</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="../resources/largest-contentful-paint-helpers.js"></script> | ||
</head> | ||
<body> | ||
<script> | ||
promise_test(async () => { | ||
assert_implements(window.LargestContentfulPaint, | ||
"LargestContentfulPaint is not implemented"); | ||
const beforeLoad = performance.now(); | ||
// 262 is the size of the animated PNG up until the first frame, | ||
// including the chunk that starts the second frame (indicating that | ||
//the first frame data is done). | ||
const url = window.location.origin + '/images/blue.png'; | ||
const entry = await load_and_observe(url); | ||
// blue.png is 133 by 106. | ||
const size = 133 * 106; | ||
checkImage(entry, url, 'image_id', size, beforeLoad, ["animated-zero"]); | ||
}, "Same origin animated image is observable and has a first frame."); | ||
</script> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters