Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 34f748c71e8db1f627d0cc3a1f55166ebd135404
      
https://github.com/WebKit/WebKit/commit/34f748c71e8db1f627d0cc3a1f55166ebd135404
  Author: Rob Buis <[email protected]>
  Date:   2022-11-01 (Tue, 01 Nov 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-015-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-016-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-017-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-018-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-029-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-035-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-038-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-047-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-072-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-img-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-input-image-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-svg-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-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/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr-expected.txt
    M Source/WebCore/dom/Element.cpp
    M Source/WebCore/page/FrameView.cpp
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerBacking.cpp
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/RenderReplaced.cpp
    M Source/WebCore/rendering/RenderWidget.cpp
    M Source/WebCore/rendering/style/RenderStyle.h
    M Source/WebCore/rendering/style/StyleRareInheritedData.cpp
    M Source/WebCore/rendering/style/StyleRareInheritedData.h
    M Source/WebCore/style/StyleAdjuster.cpp

  Log Message:
  -----------
  Add support for css content-visibility: hidden
https://bugs.webkit.org/show_bug.cgi?id=236710

Reviewed by Antti Koivisto.

This patch implements support for content-visibility: hidden [1].
It introduces the fake inherited property effectiveSkipsContent to keep
track for Elements whether content-visibility is hidden and whether elements
should be skipped for painting and hit testing.

Several points in 4.3. Restrictions and Clarifications [2] are addressed too:
- scrollIntoView is adapted [4.3.5]
- tab-order navigation and focusing take skipped contents into account [3].

[1] https://drafts.csswg.org/css-contain/#using-cv-hidden
[2] https://drafts.csswg.org/css-contain/#cv-notes
[3] https://drafts.csswg.org/css-contain/#valdef-content-visibility-hidden

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-015-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-016-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-017-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-018-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-029-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-035-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-038-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-047-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-072-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-img-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-input-image-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-svg-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-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/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus-expected.txt:
* 
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr-expected.txt:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::isFocusable const): skipped contents are not focusable
* Source/WebCore/page/FrameView.cpp:
(WebCore::FrameView::scrollRectToVisible): do not scroll if the RenderObject is 
skipped content
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintContents): do not paint contents for c-v: hidden
* Source/WebCore/rendering/RenderElement.h:
(WebCore::RenderElement::visibleToHitTesting const): mark skipped content as 
not visible to hit testing
(WebCore::RenderElement::shouldApplyLayoutContainment const): c-v: hidden 
forces containment
(WebCore::RenderElement::shouldApplyPaintContainment const): c-v: hidden forces 
containment
(WebCore::RenderElement::shouldApplyLayoutOrPaintContainment const): c-v: 
hidden forces containment
(WebCore::RenderElement::shouldApplySizeContainment const): c-v: hidden forces 
containment
(WebCore::RenderElement::shouldApplyInlineSizeContainment const): c-v: hidden 
forces containment
(WebCore::RenderElement::shouldApplySizeOrInlineSizeContainment const): c-v: 
hidden forces containment
(WebCore::RenderElement::shouldApplyStyleContainment const): c-v: hidden forces 
containment
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList): do not paint child layers of a c-v: hidden 
container
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAfterDescendants):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::isSkippedContent const):
(WebCore::RenderObject::shouldSkipContent const):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::paint): do not paint contents for content-visibility: 
hidden
* Source/WebCore/rendering/RenderWidget.cpp:
(WebCore::RenderWidget::paint): do not paint contents for content-visibility: 
hidden
* Source/WebCore/rendering/style/RenderStyle.h:
(WebCore::RenderStyle::effectiveSkipsContent const):
(WebCore::RenderStyle::setEffectiveSkipsContent):
* Source/WebCore/rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):
* Source/WebCore/rendering/style/StyleRareInheritedData.h:
* Source/WebCore/style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjust const):

Canonical link: https://commits.webkit.org/256186@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to