[webkit-changes] [WebKit/WebKit] c69be3: Trimmed inline-start margins for flex items in hor...

Sammy Gill noreply at github.com
Fri Apr 7 08:18:20 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c69be377e17c2977681fef9113d13d91b62d1ee4
      https://github.com/WebKit/WebKit/commit/c69be377e17c2977681fef9113d13d91b62d1ee4
  Author: Sammy Gill <sammy.gill at apple.com>
  Date:   2023-04-07 (Fri, 07 Apr 2023)

  Changed paths:
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-inline-start-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-inline-start.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-multi-line-inline-start-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-multi-line-inline-start.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-inline-start-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-inline-start.html
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-multi-line-inline-start-expected.txt
    A LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-multi-line-inline-start.html
    M Source/WebCore/css/ComputedStyleExtractor.cpp
    M Source/WebCore/rendering/RenderBlock.cpp
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderFlexibleBox.cpp

  Log Message:
  -----------
  Trimmed inline-start margins for flex items in horizontal writing mode should be reflected in computed style.
https://bugs.webkit.org/show_bug.cgi?id=253714
rdar://106559056

Reviewed by Alan Baradlay.

Currently, we trim the inline-start margin of a flex item when we call
flexItem.box.setMarginStart inside either RenderFlexibleBox::trimCrossAxisMarginStart
or RenderFlexibleBox::trimMainAxisMarginStart. Instead, we can replace
these calls with setTrimmedMarginForChild with an argument of
MarginTrimType::InlineStart to both trim the margin and set the
appropriate bit in the rare data object. In horizontal writing-mode
this bit should correspond to margin-left. Once layout has finished,
this bit can be used to determine if the box has a trimmed inline-start
margin.

When ComputedStyleExtractor tries to obtain the "margin-left," value, it
will first need to check if this margin has been trimmed. This can be
done by calling box->hasTrimedMargin(PhysicalDirection::Left).
hasTrimmedMargin will first map this PhysicalDirection to a MarginTrimType
and then check if the appropriate rare data bit has been set. If this
returns true, then the box should have a trimmed inline-start (left)
margin and ComputedStyleExtractor should consult the box's m_marginBox
to get the trimmed value.

* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-inline-start-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-inline-start.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-multi-line-inline-start-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-column-multi-line-inline-start.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-inline-start-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-inline-start.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-multi-line-inline-start-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-box/margin-trim/computed-margin-values/flexbox-row-multi-line-inline-start.html: Added.
* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::rendererContainingBlockHasMarginTrim):
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
* Source/WebCore/rendering/RenderBlock.cpp:
(WebCore::RenderBlock::setTrimmedMarginForChild):
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::physicalToFlowRelativeDirectionMapping const):
(WebCore::RenderBox::hasTrimmedMargin const):
* Source/WebCore/rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::trimMainAxisMarginStart):
(WebCore::RenderFlexibleBox::trimCrossAxisMarginStart):

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




More information about the webkit-changes mailing list