Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 88587e7bd5451f3504cfc7576d2f7617ab1b7cf8
https://github.com/WebKit/WebKit/commit/88587e7bd5451f3504cfc7576d2f7617ab1b7cf8
Author: Cathie Chen <[email protected]>
Date: 2023-02-20 (Mon, 20 Feb 2023)
Changed paths:
M LayoutTests/TestExpectations
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-006-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-007-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-008-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-009-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-010-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-011-expected.txt
A
LayoutTests/resize-observer/contain-instrinsic-size-should-not-leak-nodes-expected.txt
A
LayoutTests/resize-observer/contain-instrinsic-size-should-not-leak-nodes.html
M Source/WebCore/dom/ContainerNode.cpp
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/page/ResizeObservation.cpp
M Source/WebCore/page/ResizeObservation.h
M Source/WebCore/page/ResizeObserver.cpp
M Source/WebCore/page/ResizeObserver.h
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp
Log Message:
-----------
Support contain-intrinsic-size auto && <length>
https://bugs.webkit.org/show_bug.cgi?id=239450
Reviewed by Oriol Brufau.
This patch adds support to value auto && <length> for contain-intrinsic-size.
Per [1], with the auto && <length> value,
the last remembered size is the explicit intrinsic size if the box is skipping
its content.
The last remembered size is determined when ResizeObserver events are
delivered. m_resizeObserverForContainIntrinsicSize
in Document is created specifically to handle the last remembered size.
CallbackForContainIntrinsicSize in Document is
used to handle the lastRememberedSize. Because this ResizeObserver is for
inside use, so we create a interface
NativeResizeObserverCallback for native use. Now in ResizeObserver there are
two kinds of callbacks:
JSResizeObserverCallback and NativeResizeObserverCallback, only one could be
initialized.
The resizeObserver would observe the target if contain-intrinsic-size is valued
auto && <length>, otherwise unobserve
it and clear the lastRememberedSize. If an observed target is hidden or
skipping its content, unobserve it. Similarly,
if an observed target is removed from DOM tree, unobserve it and clear the
lastRememberedSize.
[1]
https://www.w3.org/TR/css-sizing-4/#valdef-contain-intrinsic-width-auto--length
* LayoutTests/TestExpectations:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-005-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-006-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-007-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-008-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-009-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-010-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-sizing/contain-intrinsic-size/auto-011-expected.txt:
*
LayoutTests/resize-observer/contain-instrinsic-size-should-not-leak-nodes-expected.txt:
Added.
*
LayoutTests/resize-observer/contain-instrinsic-size-should-not-leak-nodes.html:
Added.
* Source/WebCore/dom/ContainerNode.cpp:
(WebCore::ContainerNode::removeChild):
* Source/WebCore/dom/Document.cpp:
(WebCore::CallbackForContainIntrinsicSize):
(WebCore::Document::gatherResizeObservationsForContainIntrinsicSize):
(WebCore::Document::deliverResizeObservations):
(WebCore::Document::updateResizeObservations):
(WebCore::Document::ensureResizeObserverForContainIntrinsicSize):
(WebCore::Document::observeForContainIntrinsicSize):
(WebCore::Document::unobserveForContainIntrinsicSize):
(WebCore::Document::resetObservationSizeForContainIntrinsicSize):
* Source/WebCore/dom/Document.h:
* Source/WebCore/page/ResizeObservation.cpp:
(WebCore::ResizeObservation::resetObservationSize):
* Source/WebCore/page/ResizeObservation.h:
* Source/WebCore/page/ResizeObserver.cpp:
(WebCore::ResizeObserver::create):
(WebCore::ResizeObserver::createNativeObserver):
(WebCore::ResizeObserver::ResizeObserver):
(WebCore::ResizeObserver::observeInternal):
(WebCore::ResizeObserver::observe):
(WebCore::ResizeObserver::deliverObservations):
(WebCore::ResizeObserver::isJSCallback):
(WebCore::ResizeObserver::isNativeCallback):
(WebCore::ResizeObserver::callbackConcurrently):
(WebCore::ResizeObserver::resetObservationSize):
* Source/WebCore/page/ResizeObserver.h:
(WebCore::ResizeObserver::callbackConcurrently): Deleted.
* Source/WebCore/rendering/style/RenderStyle.h:
(WebCore::RenderStyle::hasAutoLengthContainIntrinsicSize const):
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateElementRenderer):
Canonical link: https://commits.webkit.org/260535@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes