Skip to content

Commit

Permalink
[content-visibility] Make c-v: auto add auto to contain-intrinsic-size
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=259645

Reviewed by Tim Nguyen.

This was approved here:
w3c/csswg-drafts#8407 (comment)

Already implemented in Chromium and gecko.

* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/content-visibility/content-visibility-068-expected.txt:
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/RenderStyleSetters.h:
(WebCore::RenderStyle::containIntrinsicWidthAddAuto):
(WebCore::RenderStyle::containIntrinsicHeightAddAuto):
* Source/WebCore/style/StyleAdjuster.cpp:
(WebCore::Style::Adjuster::adjust const):

Canonical link: https://commits.webkit.org/267180@main
  • Loading branch information
rwlbuis committed Aug 23, 2023
1 parent d76ee32 commit 3c2445f
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

FAIL Content Visibility: off-screen focus assert_equals: step5 height expected 10 but got 100
PASS Content Visibility: off-screen focus

2 changes: 2 additions & 0 deletions Source/WebCore/rendering/style/RenderStyle.h
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,8 @@ class RenderStyle {
inline bool containIntrinsicHeightHasAuto() const;
inline bool containIntrinsicLogicalWidthHasAuto() const;
inline bool containIntrinsicLogicalHeightHasAuto() const;
inline void containIntrinsicWidthAddAuto();
inline void containIntrinsicHeightAddAuto();
inline std::optional<Length> containIntrinsicWidth() const;
inline std::optional<Length> containIntrinsicHeight() const;
inline bool hasAutoLengthContainIntrinsicSize() const;
Expand Down
16 changes: 16 additions & 0 deletions Source/WebCore/rendering/style/RenderStyleSetters.h
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,22 @@ inline bool RenderStyle::setZoom(float zoomLevel)
return true;
}

inline void RenderStyle::containIntrinsicWidthAddAuto()
{
if (containIntrinsicWidthType() == ContainIntrinsicSizeType::None)
setContainIntrinsicWidthType(ContainIntrinsicSizeType::AutoAndNone);
else if (containIntrinsicWidthType() == ContainIntrinsicSizeType::Length)
setContainIntrinsicWidthType(ContainIntrinsicSizeType::AutoAndLength);
}

inline void RenderStyle::containIntrinsicHeightAddAuto()
{
if (containIntrinsicHeightType() == ContainIntrinsicSizeType::None)
setContainIntrinsicHeightType(ContainIntrinsicSizeType::AutoAndNone);
else if (containIntrinsicHeightType() == ContainIntrinsicSizeType::Length)
setContainIntrinsicHeightType(ContainIntrinsicSizeType::AutoAndLength);
}

#if ENABLE(CSS_COMPOSITING)

inline void RenderStyle::setBlendMode(BlendMode mode)
Expand Down
5 changes: 5 additions & 0 deletions Source/WebCore/style/StyleAdjuster.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,11 @@ void Adjuster::adjust(RenderStyle& style, const RenderStyle* userAgentAppearance
if (isSkippedContentRoot(style, m_element) && m_parentStyle.contentVisibility() != ContentVisibility::Hidden)
style.setSkippedContentReason(style.contentVisibility());

if (style.contentVisibility() == ContentVisibility::Auto) {
style.containIntrinsicWidthAddAuto();
style.containIntrinsicHeightAddAuto();
}

adjustForSiteSpecificQuirks(style);
}

Expand Down

0 comments on commit 3c2445f

Please sign in to comment.