Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0d63417844a1f3efbec6c8cece36bf78d39c9263
https://github.com/WebKit/WebKit/commit/0d63417844a1f3efbec6c8cece36bf78d39c9263
Author: Alice Tang <[email protected]>
Date: 2026-07-13 (Mon, 13 Jul 2026)
Changed paths:
M LayoutTests/TestExpectations
A
LayoutTests/fast/css/object-view-box-subset-obscures-background-no-repaint-expected.txt
A
LayoutTests/fast/css/object-view-box-subset-obscures-background-no-repaint.html
A
LayoutTests/fast/css/object-view-box-superset-does-not-obscure-background-repaint-expected.txt
A
LayoutTests/fast/css/object-view-box-superset-does-not-obscure-background-repaint.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom.html
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-new-image-expected.html
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-new-image.html
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-old-image-expected.html
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-old-image.html
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/platform/wk2/TestExpectations
M Source/WebCore/platform/graphics/GeometryUtilities.cpp
M Source/WebCore/platform/graphics/GeometryUtilities.h
M Source/WebCore/rendering/RenderHTMLCanvas.cpp
M Source/WebCore/rendering/RenderImage.cpp
M Source/WebCore/rendering/RenderReplaced.cpp
M Source/WebCore/rendering/RenderReplaced.h
M Source/WebCore/rendering/RenderVideo.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.cpp
M Source/WebCore/rendering/RenderViewTransitionCapture.h
M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp
M Source/WebCore/style/StyleDifference.cpp
Log Message:
-----------
CSS object-view-box: implement rendering and natural sizes
https://bugs.webkit.org/show_bug.cgi?id=316882
rdar://179304860
Reviewed by Simon Fraser.
Implements rendering and natural size computation for the CSS object-view-box
property across replaced elements (img, canvas, video) and view-transition
pseudo-elements.
For replaced elements (RenderImage, RenderHTMLCanvas, RenderVideo):
- resolveObjectViewBox() computes the view-box rect from inset/rect/xywh values
- replacedContentRect() uses the view-box dimensions as the effective intrinsic
size for object-fit/object-position calculations
- paintReplaced() draws the full image scaled/translated so the view-box region
maps onto the replaced content rect, clipped to the content box
For view-transition captures (RenderViewTransitionCapture):
- paintReplaced() uses an explicit srcRect to draw only the view-box sub-region
of the snapshot, preventing bilinear bleed at the view-box boundary
- image() returns null when object-view-box is set, routing rendering through
the software paint path (paintReplaced) rather than CA direct compositing
- layout() computes m_viewBoxLocalContentsRect for the CA contentsRect geometry
- canUseExistingLayers() accounts for object-view-box when deciding whether to
reuse existing CA layers
Layout tests:
- 36/36 css-images object-view-box WPT tests pass, plus 2 new tests added by
this patch (object-view-box-auto-size-relayout.html,
object-view-box-zoom.html)
- 4/4 css-view-transitions object-view-box WPT tests pass (object-view-box-old/
new-image use scale3d in expected refs and maxDifference=85/totalPixels=600
fuzzy tolerance to account for snapshot-vs-live rendering quality difference;
old/new-content-with-object-view-box.html are skipped on iOS due to a 1px
device-pixel rounding difference)
- Adds 2 new fast/css repaint tests verifying the opaque-foreground optimization
still behaves correctly with subset/superset object-view-box insets
- Removes 25 ImageOnlyFailure entries from TestExpectations
* LayoutTests/TestExpectations:
*
LayoutTests/fast/css/object-view-box-subset-obscures-background-no-repaint-expected.txt:
Added.
*
LayoutTests/fast/css/object-view-box-subset-obscures-background-no-repaint.html:
Added.
*
LayoutTests/fast/css/object-view-box-superset-does-not-obscure-background-repaint-expected.txt:
Added.
*
LayoutTests/fast/css/object-view-box-superset-does-not-obscure-background-repaint.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-auto-size-relayout.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-images/object-view-box-zoom.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-new-image-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-new-image.html:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-old-image-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/object-view-box-old-image.html:
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/platform/wk2/TestExpectations:
* Source/WebCore/platform/graphics/GeometryUtilities.cpp:
* Source/WebCore/platform/graphics/GeometryUtilities.h:
* Source/WebCore/rendering/RenderHTMLCanvas.cpp:
* Source/WebCore/rendering/RenderImage.cpp:
* Source/WebCore/rendering/RenderReplaced.cpp:
* Source/WebCore/rendering/RenderReplaced.h:
* Source/WebCore/rendering/RenderVideo.cpp:
* Source/WebCore/rendering/RenderViewTransitionCapture.cpp:
* Source/WebCore/rendering/RenderViewTransitionCapture.h:
* Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp:
* Source/WebCore/style/StyleDifference.cpp:
Canonical link: https://commits.webkit.org/317112@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications