Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0c32fdb167371576029b2ffb6d99aa9f720989c8
https://github.com/WebKit/WebKit/commit/0c32fdb167371576029b2ffb6d99aa9f720989c8
Author: Simon Fraser <[email protected]>
Date: 2025-09-29 (Mon, 29 Sep 2025)
Changed paths:
M LayoutTests/TestExpectations
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/animated/observe-non-animated-image.tentative-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/contracted-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/cross-origin-image.sub-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/expanded-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-TAO.sub-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-inside-svg-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-not-fully-visible-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-removed-before-load-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-src-change-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/invisible-images-composited-1-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/invisible-images-composited-2-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/multiple-image-same-src-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/multiple-redirects-TAO-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-css-generated-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-background-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-data-uri-background-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-data-uri-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/placeholder-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/progressively-loaded-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/redirects-tao-star-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/repeated-image-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/resized-image-not-reconsidered-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/same-origin-redirects-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/toJSON-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/transparent-text-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/video-poster-expected.txt
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/page/LargestContentfulPaintData.cpp
M Source/WebCore/page/LargestContentfulPaintData.h
M Source/WebCore/rendering/BackgroundPainter.cpp
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderImage.cpp
M Source/WebCore/rendering/RenderInline.cpp
M Source/WebCore/rendering/svg/RenderSVGImage.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp
M Source/WebCore/style/Styleable.h
M Source/WebCore/style/values/backgrounds/StyleFillLayers.h
Log Message:
-----------
[LCP] Implement `loadTime` for image paints
https://bugs.webkit.org/show_bug.cgi?id=299556
rdar://161361009
Reviewed by Ryosuke Niwa.
The LargestContentfulPaint entry for an image includes `loadTime`[1], which
indicates the time
at which the image became available to paint, as specified by paint-timing [2].
This is not the resource load time, and there's
some ambiguity about what it means for elements that are appended to the DOM
after the image
load is complete [3], but we'll track it as the time that
`CachedImageClient::imageChanged()` is called, and if the
image is already available for a new renderer, use the paint time.
Bottleneck through `Document::didLoadImage()` which checks the setting.
Have RenderBox, RenderInline, RenderSVGImage and LegacyRenderSVGImage call
imageDidLoad.
Move `findLayerUsedImage()` to StyleFillLayers since both RenderBox and
RenderInline use it now.
Track `loadTime` and match it with a subsequent image paint by having
`LargestContentfulPaintData`
store it in the per-element image->PendingImageData hash set.
[1]
https://w3c.github.io/largest-contentful-paint/#dom-largestcontentfulpaint-loadtime
[2] https://w3c.github.io/paint-timing/#process-image-that-finished-loading
[3] https://github.com/w3c/largest-contentful-paint/issues/146
Tested by `-platform-tests/largest-contentful-paint` tests.
* LayoutTests/TestExpectations:
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/animated/observe-non-animated-image.tentative-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/contracted-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/cross-origin-image.sub-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/expanded-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-TAO.sub-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-inside-svg-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-not-fully-visible-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-removed-before-load-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/image-src-change-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/invisible-images-composited-1-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/invisible-images-composited-2-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/multiple-image-same-src-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/multiple-redirects-TAO-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-after-untrusted-scroll-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-css-generated-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-background-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-data-uri-background-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-data-uri-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/observe-svg-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/placeholder-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/progressively-loaded-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/redirects-tao-star-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/repeated-image-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/resized-image-not-reconsidered-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/same-origin-redirects-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/toJSON-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/transparent-text-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/largest-contentful-paint/video-poster-expected.txt:
Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::didLoadImage const):
* Source/WebCore/dom/Document.h:
* Source/WebCore/page/LargestContentfulPaintData.cpp:
(WebCore::LargestContentfulPaintData::potentiallyAddLargestContentfulPaintEntry):
(WebCore::LargestContentfulPaintData::takePendingEntry):
(WebCore::LargestContentfulPaintData::didLoadImage):
(WebCore::LargestContentfulPaintData::didPaintImage):
* Source/WebCore/page/LargestContentfulPaintData.h:
* Source/WebCore/rendering/BackgroundPainter.cpp:
(WebCore::BackgroundPainter::paintFillLayerImpl const): Call
currentFrameIsComplete() to only count fully
renderable images for LCP.
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::imageChanged):
(WebCore::findLayerUsedImage): Deleted.
* Source/WebCore/rendering/RenderImage.cpp:
(WebCore::RenderImage::imageChanged):
(WebCore::RenderImage::paintReplaced):
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::imageChanged):
* Source/WebCore/rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::imageChanged):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp:
(WebCore::LegacyRenderSVGImage::imageChanged):
* Source/WebCore/style/Styleable.h:
(WebCore::Styleable::protectedElement const): Add to fix some Safer Cpp
warnings.
* Source/WebCore/style/values/backgrounds/StyleFillLayers.h:
(WebCore::Style::FillLayers<Layer>::findLayerUsedImage const):
Canonical link: https://commits.webkit.org/300723@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes