Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 88587e7bd5451f3504cfc7576d2f7617ab1b7cf8
      
https://github.com/WebKit/WebKit/commit/88587e7bd5451f3504cfc7576d2f7617ab1b7cf8
  Author: Cathie Chen <cathiec...@igalia.com>
  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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to