Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 6cbd9be5b0cdb8c19994ec061b24460e70da260e
https://github.com/WebKit/WebKit/commit/6cbd9be5b0cdb8c19994ec061b24460e70da260e
Author: Simon Fraser <[email protected]>
Date: 2025-10-16 (Thu, 16 Oct 2025)
Changed paths:
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
M Source/WebCore/dom/ElementRareData.cpp
M Source/WebCore/dom/ElementRareData.h
M Source/WebCore/html/HTMLImageElement.cpp
M Source/WebCore/html/HTMLImageElement.h
M Source/WebCore/page/LargestContentfulPaintData.cpp
M Source/WebCore/page/LargestContentfulPaintData.h
Log Message:
-----------
[LCP] Use ElementRareData to store LCP-related data
https://bugs.webkit.org/show_bug.cgi?id=300945
rdar://162818522
Reviewed by Ryosuke Niwa.
We can save a few weak hash map/set lookups and traversals by storing
LCP-related
data in ElementRareData, so make `ElementLargestContentfulPaintData` accessible
from
Element just like `ResizeObserverData` and `IntersectionObserverData` (while
fixing
their accessors to be const).
LCP for images requires storing data per CachedImage on each element, so use a
Vector
to hold per-image data (since there will be few, a HashMap is overkill).
Usually,
`didLoadImage` will append data for an image to this vector with `loadTime`,
and `didPaintImage`
will annotate it with a rectangle.
A minor optimization is to call `scheduleRenderingUpdate` just once for both
new image
and text paints, via the `m_haveNewCandidate` flag.
Tested by WPTs.
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::intersectionObserverDataIfExists const):
(WebCore::Element::resizeObserverDataIfExists const):
(WebCore::Element::ensureLargestContentfulPaintData):
(WebCore::Element::largestContentfulPaintDataIfExists const):
(WebCore::Element::intersectionObserverDataIfExists): Deleted.
(WebCore::Element::resizeObserverDataIfExists): Deleted.
* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/ElementRareData.cpp:
* Source/WebCore/dom/ElementRareData.h:
(WebCore::ElementRareData::largestContentfulPaintData):
(WebCore::ElementRareData::setLargestContentfulPaintData):
* Source/WebCore/html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::intersectionObserverDataIfExists const):
(WebCore::HTMLImageElement::intersectionObserverDataIfExists): Deleted.
* Source/WebCore/html/HTMLImageElement.h:
* Source/WebCore/page/LargestContentfulPaintData.cpp:
(WebCore::LargestContentfulPaintData::potentiallyAddLargestContentfulPaintEntry):
(WebCore::LargestContentfulPaintData::generateLargestContentfulPaintEntry):
(WebCore::LargestContentfulPaintData::didLoadImage):
(WebCore::LargestContentfulPaintData::didPaintImage):
(WebCore::LargestContentfulPaintData::didPaintText):
(WebCore::LargestContentfulPaintData::scheduleRenderingUpdateIfNecessary):
* Source/WebCore/page/LargestContentfulPaintData.h:
Canonical link: https://commits.webkit.org/301688@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