Changeset 252862 in webkit


Ignore:
Timestamp:
Nov 25, 2019 8:19:42 AM (4 years ago)
Author:
Alan Bujtas
Message:

[LFC] Pass UsedHorizontal/VerticalValues in by const reference
https://bugs.webkit.org/show_bug.cgi?id=204563
<rdar://problem/57464129>

Reviewed by Antti Koivisto.

UsedHorizontal/VerticalValues have grown a bit so let's pass them in by reference.

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):

  • layout/blockformatting/BlockFormattingContext.h:
  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalAndVerticalGeometry):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):

Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252861 r252862  
     12019-11-25  Zalan Bujtas  <zalan@apple.com>
     2
     3        [LFC] Pass UsedHorizontal/VerticalValues in by const reference
     4        https://bugs.webkit.org/show_bug.cgi?id=204563
     5        <rdar://problem/57464129>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        UsedHorizontal/VerticalValues have grown a bit so let's pass them in by reference.
     10
     11        * layout/FormattingContext.h:
     12        * layout/FormattingContextGeometry.cpp:
     13        (WebCore::Layout::FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned const):
     14        (WebCore::Layout::FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned const):
     15        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
     16        (WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
     17        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
     18        (WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
     19        (WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
     20        (WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
     21        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
     22        (WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
     23        (WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
     24        (WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):
     25        (WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
     26        (WebCore::Layout::FormattingContext::Geometry::floatingWidthAndMargin):
     27        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
     28        (WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
     29        (WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
     30        (WebCore::Layout::FormattingContext::Geometry::computedPadding const):
     31        (WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
     32        (WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
     33        * layout/blockformatting/BlockFormattingContext.h:
     34        * layout/blockformatting/BlockFormattingContextGeometry.cpp:
     35        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
     36        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
     37        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin const):
     38        (WebCore::Layout::BlockFormattingContext::Geometry::staticVerticalPosition const):
     39        (WebCore::Layout::BlockFormattingContext::Geometry::staticHorizontalPosition const):
     40        (WebCore::Layout::BlockFormattingContext::Geometry::staticPosition const):
     41        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
     42        (WebCore::Layout::BlockFormattingContext::Geometry::inFlowWidthAndMargin):
     43        * layout/inlineformatting/InlineFormattingContext.cpp:
     44        (WebCore::Layout::InlineFormattingContext::lineLayout):
     45        (WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
     46        (WebCore::Layout::InlineFormattingContext::computeHorizontalAndVerticalGeometry):
     47        (WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
     48        (WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
     49        (WebCore::Layout::InlineFormattingContext::computeHorizontalMargin):
     50        (WebCore::Layout::InlineFormattingContext::computeWidthAndMargin):
     51        (WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
     52        (WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
     53        (WebCore::Layout::InlineFormattingContext::constraintsForLine):
     54        (WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
     55        * layout/inlineformatting/InlineFormattingContext.h:
     56        * layout/inlineformatting/InlineFormattingContextGeometry.cpp:
     57        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):
     58        (WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):
     59
    1602019-11-25  Zalan Bujtas  <zalan@apple.com>
    261
  • trunk/Source/WebCore/layout/FormattingContext.h

    r252532 r252862  
    110110    class Geometry {
    111111    public:
    112         VerticalGeometry outOfFlowVerticalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    113         HorizontalGeometry outOfFlowHorizontalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues);
    114 
    115         ContentHeightAndMargin floatingHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    116         ContentWidthAndMargin floatingWidthAndMargin(const Box&, UsedHorizontalValues);
    117 
    118         ContentHeightAndMargin inlineReplacedHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    119         ContentWidthAndMargin inlineReplacedWidthAndMargin(const Box&, UsedHorizontalValues, Optional<UsedVerticalValues> = WTF::nullopt) const;
    120 
    121         LayoutSize inFlowPositionedPositionOffset(const Box&, UsedHorizontalValues) const;
    122 
    123         ContentHeightAndMargin complicatedCases(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
     112        VerticalGeometry outOfFlowVerticalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     113        HorizontalGeometry outOfFlowHorizontalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
     114
     115        ContentHeightAndMargin floatingHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     116        ContentWidthAndMargin floatingWidthAndMargin(const Box&, const UsedHorizontalValues&);
     117
     118        ContentHeightAndMargin inlineReplacedHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     119        ContentWidthAndMargin inlineReplacedWidthAndMargin(const Box&, const UsedHorizontalValues&, Optional<UsedVerticalValues> = WTF::nullopt) const;
     120
     121        LayoutSize inFlowPositionedPositionOffset(const Box&, const UsedHorizontalValues&) const;
     122
     123        ContentHeightAndMargin complicatedCases(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
    124124        LayoutUnit shrinkToFitWidth(const Box&, LayoutUnit availableWidth);
    125125
    126126        Edges computedBorder(const Box&) const;
    127         Optional<Edges> computedPadding(const Box&, UsedHorizontalValues) const;
    128 
    129         ComputedHorizontalMargin computedHorizontalMargin(const Box&, UsedHorizontalValues) const;
    130         ComputedVerticalMargin computedVerticalMargin(const Box&, UsedHorizontalValues) const;
     127        Optional<Edges> computedPadding(const Box&, const UsedHorizontalValues&) const;
     128
     129        ComputedHorizontalMargin computedHorizontalMargin(const Box&, const UsedHorizontalValues&) const;
     130        ComputedVerticalMargin computedVerticalMargin(const Box&, const UsedHorizontalValues&) const;
    131131
    132132        Optional<LayoutUnit> computedValueIfNotAuto(const Length& geometryProperty, LayoutUnit containingBlockWidth) const;
     
    157157
    158158    private:
    159         VerticalGeometry outOfFlowReplacedVerticalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    160         HorizontalGeometry outOfFlowReplacedHorizontalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    161 
    162         VerticalGeometry outOfFlowNonReplacedVerticalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    163         HorizontalGeometry outOfFlowNonReplacedHorizontalGeometry(const Box&, UsedHorizontalValues);
    164 
    165         ContentHeightAndMargin floatingReplacedHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    166         ContentWidthAndMargin floatingReplacedWidthAndMargin(const Box&, UsedHorizontalValues) const;
    167 
    168         ContentWidthAndMargin floatingNonReplacedWidthAndMargin(const Box&, UsedHorizontalValues);
    169 
    170         LayoutUnit staticVerticalPositionForOutOfFlowPositioned(const Box&, UsedVerticalValues) const;
    171         LayoutUnit staticHorizontalPositionForOutOfFlowPositioned(const Box&, UsedHorizontalValues) const;
     159        VerticalGeometry outOfFlowReplacedVerticalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     160        HorizontalGeometry outOfFlowReplacedHorizontalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     161
     162        VerticalGeometry outOfFlowNonReplacedVerticalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     163        HorizontalGeometry outOfFlowNonReplacedHorizontalGeometry(const Box&, const UsedHorizontalValues&);
     164
     165        ContentHeightAndMargin floatingReplacedHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     166        ContentWidthAndMargin floatingReplacedWidthAndMargin(const Box&, const UsedHorizontalValues&) const;
     167
     168        ContentWidthAndMargin floatingNonReplacedWidthAndMargin(const Box&, const UsedHorizontalValues&);
     169
     170        LayoutUnit staticVerticalPositionForOutOfFlowPositioned(const Box&, const UsedVerticalValues&) const;
     171        LayoutUnit staticHorizontalPositionForOutOfFlowPositioned(const Box&, const UsedHorizontalValues&) const;
    172172
    173173        const FormattingContext& m_formattingContext;
  • trunk/Source/WebCore/layout/FormattingContextGeometry.cpp

    r251238 r252862  
    213213}
    214214
    215 LayoutUnit FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned(const Box& layoutBox, UsedVerticalValues usedVerticalValues) const
     215LayoutUnit FormattingContext::Geometry::staticVerticalPositionForOutOfFlowPositioned(const Box& layoutBox, const UsedVerticalValues& usedVerticalValues) const
    216216{
    217217    ASSERT(layoutBox.isOutOfFlowPositioned());
     
    248248}
    249249
    250 LayoutUnit FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     250LayoutUnit FormattingContext::Geometry::staticHorizontalPositionForOutOfFlowPositioned(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    251251{
    252252    ASSERT(layoutBox.isOutOfFlowPositioned());
     
    296296}
    297297
    298 VerticalGeometry FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     298VerticalGeometry FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    299299{
    300300    ASSERT(layoutBox.isOutOfFlowPositioned() && !layoutBox.replaced());
     
    415415}
    416416
    417 HorizontalGeometry FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
     417HorizontalGeometry FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    418418{
    419419    ASSERT(layoutBox.isOutOfFlowPositioned() && !layoutBox.replaced());
     
    558558}
    559559
    560 VerticalGeometry FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     560VerticalGeometry FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    561561{
    562562    ASSERT(layoutBox.isOutOfFlowPositioned() && layoutBox.replaced());
     
    640640}
    641641
    642 HorizontalGeometry FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     642HorizontalGeometry FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    643643{
    644644    ASSERT(layoutBox.isOutOfFlowPositioned() && layoutBox.replaced());
     
    744744}
    745745
    746 ContentHeightAndMargin FormattingContext::Geometry::complicatedCases(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     746ContentHeightAndMargin FormattingContext::Geometry::complicatedCases(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    747747{
    748748    ASSERT(!layoutBox.replaced());
     
    775775}
    776776
    777 ContentWidthAndMargin FormattingContext::Geometry::floatingNonReplacedWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
     777ContentWidthAndMargin FormattingContext::Geometry::floatingNonReplacedWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    778778{
    779779    ASSERT(layoutBox.isFloatingPositioned() && !layoutBox.replaced());
     
    797797}
    798798
    799 ContentHeightAndMargin FormattingContext::Geometry::floatingReplacedHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     799ContentHeightAndMargin FormattingContext::Geometry::floatingReplacedHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    800800{
    801801    ASSERT(layoutBox.isFloatingPositioned() && layoutBox.replaced());
     
    807807}
    808808
    809 ContentWidthAndMargin FormattingContext::Geometry::floatingReplacedWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     809ContentWidthAndMargin FormattingContext::Geometry::floatingReplacedWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    810810{
    811811    ASSERT(layoutBox.isFloatingPositioned() && layoutBox.replaced());
     
    818818
    819819    LOG_WITH_STREAM(FormattingContextLayout, stream << "[Height][Margin] -> floating replaced -> redirected to inline replaced");
    820     usedHorizontalValues.margin = UsedHorizontalMargin { computedHorizontalMargin.start.valueOr(0), computedHorizontalMargin.end.valueOr(0) };
    821     return inlineReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
    822 }
    823 
    824 VerticalGeometry FormattingContext::Geometry::outOfFlowVerticalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     820    auto usedMargin = UsedHorizontalMargin { computedHorizontalMargin.start.valueOr(0), computedHorizontalMargin.end.valueOr(0) };
     821    return inlineReplacedWidthAndMargin(layoutBox, UsedHorizontalValues { usedHorizontalValues.constraints, usedHorizontalValues.width, usedMargin });
     822}
     823
     824VerticalGeometry FormattingContext::Geometry::outOfFlowVerticalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    825825{
    826826    ASSERT(layoutBox.isOutOfFlowPositioned());
     
    831831}
    832832
    833 HorizontalGeometry FormattingContext::Geometry::outOfFlowHorizontalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     833HorizontalGeometry FormattingContext::Geometry::outOfFlowHorizontalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    834834{
    835835    ASSERT(layoutBox.isOutOfFlowPositioned());
     
    840840}
    841841
    842 ContentHeightAndMargin FormattingContext::Geometry::floatingHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     842ContentHeightAndMargin FormattingContext::Geometry::floatingHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    843843{
    844844    ASSERT(layoutBox.isFloatingPositioned());
     
    849849}
    850850
    851 ContentWidthAndMargin FormattingContext::Geometry::floatingWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedValues)
     851ContentWidthAndMargin FormattingContext::Geometry::floatingWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    852852{
    853853    ASSERT(layoutBox.isFloatingPositioned());
    854854
    855855    if (!layoutBox.replaced())
    856         return floatingNonReplacedWidthAndMargin(layoutBox, usedValues);
    857     return floatingReplacedWidthAndMargin(layoutBox, usedValues);
    858 }
    859 
    860 ContentHeightAndMargin FormattingContext::Geometry::inlineReplacedHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     856        return floatingNonReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
     857    return floatingReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
     858}
     859
     860ContentHeightAndMargin FormattingContext::Geometry::inlineReplacedHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    861861{
    862862    ASSERT((layoutBox.isOutOfFlowPositioned() || layoutBox.isFloatingPositioned() || layoutBox.isInFlow()) && layoutBox.replaced());
     
    904904}
    905905
    906 ContentWidthAndMargin FormattingContext::Geometry::inlineReplacedWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, Optional<UsedVerticalValues> usedVerticalValues) const
     906ContentWidthAndMargin FormattingContext::Geometry::inlineReplacedWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, Optional<UsedVerticalValues> usedVerticalValues) const
    907907{
    908908    ASSERT((layoutBox.isOutOfFlowPositioned() || layoutBox.isFloatingPositioned() || layoutBox.isInFlow()) && layoutBox.replaced());
     
    973973}
    974974
    975 LayoutSize FormattingContext::Geometry::inFlowPositionedPositionOffset(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     975LayoutSize FormattingContext::Geometry::inFlowPositionedPositionOffset(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    976976{
    977977    ASSERT(layoutBox.isInFlowPositioned());
     
    10581058}
    10591059
    1060 Optional<Edges> FormattingContext::Geometry::computedPadding(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     1060Optional<Edges> FormattingContext::Geometry::computedPadding(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    10611061{
    10621062    if (!layoutBox.isPaddingApplicable())
     
    10721072}
    10731073
    1074 ComputedHorizontalMargin FormattingContext::Geometry::computedHorizontalMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     1074ComputedHorizontalMargin FormattingContext::Geometry::computedHorizontalMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    10751075{
    10761076    auto& style = layoutBox.style();
     
    10791079}
    10801080
    1081 ComputedVerticalMargin FormattingContext::Geometry::computedVerticalMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     1081ComputedVerticalMargin FormattingContext::Geometry::computedVerticalMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    10821082{
    10831083    auto& style = layoutBox.style();
  • trunk/Source/WebCore/layout/blockformatting/BlockFormattingContext.h

    r252460 r252862  
    7575    class Geometry : public FormattingContext::Geometry {
    7676    public:
    77         ContentHeightAndMargin inFlowHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues);
    78         ContentWidthAndMargin inFlowWidthAndMargin(const Box&, UsedHorizontalValues);
     77        ContentHeightAndMargin inFlowHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
     78        ContentWidthAndMargin inFlowWidthAndMargin(const Box&, const UsedHorizontalValues&);
    7979
    80         Point staticPosition(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    81         LayoutUnit staticVerticalPosition(const Box&, UsedVerticalValues) const;
    82         LayoutUnit staticHorizontalPosition(const Box&, UsedHorizontalValues) const;
     80        Point staticPosition(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     81        LayoutUnit staticVerticalPosition(const Box&, const UsedVerticalValues&) const;
     82        LayoutUnit staticHorizontalPosition(const Box&, const UsedHorizontalValues&) const;
    8383
    8484        IntrinsicWidthConstraints intrinsicWidthConstraints(const Box&);
     
    8888        Geometry(const BlockFormattingContext&);
    8989
    90         ContentHeightAndMargin inFlowNonReplacedHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues);
    91         ContentWidthAndMargin inFlowNonReplacedWidthAndMargin(const Box&, UsedHorizontalValues) const;
    92         ContentWidthAndMargin inFlowReplacedWidthAndMargin(const Box&, UsedHorizontalValues) const;
     90        ContentHeightAndMargin inFlowNonReplacedHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
     91        ContentWidthAndMargin inFlowNonReplacedWidthAndMargin(const Box&, const UsedHorizontalValues&) const;
     92        ContentWidthAndMargin inFlowReplacedWidthAndMargin(const Box&, const UsedHorizontalValues&) const;
    9393        Point staticPositionForOutOfFlowPositioned(const Box&) const;
    9494
  • trunk/Source/WebCore/layout/blockformatting/BlockFormattingContextGeometry.cpp

    r251281 r252862  
    3838namespace Layout {
    3939
    40 ContentHeightAndMargin BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedValues)
     40ContentHeightAndMargin BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    4141{
    4242    ASSERT(layoutBox.isInFlow() && !layoutBox.replaced());
    4343    ASSERT(layoutBox.isOverflowVisible());
    4444
    45     auto compute = [&]() -> ContentHeightAndMargin {
     45    auto compute = [&](const auto& usedVerticalValues) -> ContentHeightAndMargin {
    4646
    4747        // 10.6.3 Block-level non-replaced elements in normal flow when 'overflow' computes to 'visible'
     
    6262        auto nonCollapsedMargin = UsedVerticalMargin::NonCollapsedValues { computedVerticalMargin.before.valueOr(0), computedVerticalMargin.after.valueOr(0) };
    6363        auto borderAndPaddingTop = boxGeometry.borderTop() + boxGeometry.paddingTop().valueOr(0);
    64         auto height = usedValues.height ? usedValues.height.value() : computedContentHeight(layoutBox);
     64        auto height = usedVerticalValues.height ? usedVerticalValues.height.value() : computedContentHeight(layoutBox);
    6565
    6666        if (height)
     
    102102
    103103    // 10.6.7 'Auto' heights for block formatting context roots
    104     auto isAutoHeight = !usedValues.height && !computedContentHeight(layoutBox);
     104    auto isAutoHeight = !usedVerticalValues.height && !computedContentHeight(layoutBox);
    105105    if (isAutoHeight && layoutBox.establishesBlockFormattingContext())
    106         usedValues.height = contentHeightForFormattingContextRoot(layoutBox);
    107     auto contentHeightAndMargin = compute();
    108     LOG_WITH_STREAM(FormattingContextLayout, stream << "[Height][Margin] -> inflow non-replaced -> height(" << contentHeightAndMargin.contentHeight << "px) margin(" << contentHeightAndMargin.nonCollapsedMargin.before << "px, " << contentHeightAndMargin.nonCollapsedMargin.after << "px) -> layoutBox(" << &layoutBox << ")");
    109     return contentHeightAndMargin;
    110 }
    111 
    112 ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     106        return compute( UsedVerticalValues { usedVerticalValues.constraints, contentHeightForFormattingContextRoot(layoutBox) });
     107    return compute(usedVerticalValues);
     108}
     109
     110ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    113111{
    114112    ASSERT(layoutBox.isInFlow());
     
    200198}
    201199
    202 ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedValues) const
     200ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowReplacedWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    203201{
    204202    ASSERT(layoutBox.isInFlow() && layoutBox.replaced());
     
    210208
    211209    // #1
    212     usedValues.width = inlineReplacedWidthAndMargin(layoutBox, usedValues).contentWidth;
     210    auto usedWidth = inlineReplacedWidthAndMargin(layoutBox, usedHorizontalValues).contentWidth;
    213211    // #2
    214     auto nonReplacedWidthAndMargin = inFlowNonReplacedWidthAndMargin(layoutBox, usedValues);
    215 
    216     LOG_WITH_STREAM(FormattingContextLayout, stream << "[Width][Margin] -> inflow replaced -> width(" << *usedValues.width << "px) margin(" << nonReplacedWidthAndMargin.usedMargin.start << "px, " << nonReplacedWidthAndMargin.usedMargin.end << "px) -> layoutBox(" << &layoutBox << ")");
    217     return { *usedValues.width, nonReplacedWidthAndMargin.usedMargin, nonReplacedWidthAndMargin.computedMargin };
    218 }
    219 
    220 LayoutUnit BlockFormattingContext::Geometry::staticVerticalPosition(const Box& layoutBox, UsedVerticalValues usedVerticalValues) const
     212    auto nonReplacedWidthAndMargin = inFlowNonReplacedWidthAndMargin(layoutBox, UsedHorizontalValues { usedHorizontalValues.constraints, usedWidth, usedHorizontalValues.margin });
     213
     214    LOG_WITH_STREAM(FormattingContextLayout, stream << "[Width][Margin] -> inflow replaced -> width(" << usedWidth << "px) margin(" << nonReplacedWidthAndMargin.usedMargin.start << "px, " << nonReplacedWidthAndMargin.usedMargin.end << "px) -> layoutBox(" << &layoutBox << ")");
     215    return { usedWidth, nonReplacedWidthAndMargin.usedMargin, nonReplacedWidthAndMargin.computedMargin };
     216}
     217
     218LayoutUnit BlockFormattingContext::Geometry::staticVerticalPosition(const Box& layoutBox, const UsedVerticalValues& usedVerticalValues) const
    221219{
    222220    // https://www.w3.org/TR/CSS22/visuren.html#block-formatting
     
    231229}
    232230
    233 LayoutUnit BlockFormattingContext::Geometry::staticHorizontalPosition(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues) const
     231LayoutUnit BlockFormattingContext::Geometry::staticHorizontalPosition(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues) const
    234232{
    235233    // https://www.w3.org/TR/CSS22/visuren.html#block-formatting
     
    238236}
    239237
    240 Point BlockFormattingContext::Geometry::staticPosition(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     238Point BlockFormattingContext::Geometry::staticPosition(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    241239{
    242240    return { staticHorizontalPosition(layoutBox, usedHorizontalValues), staticVerticalPosition(layoutBox, usedVerticalValues) };
    243241}
    244242
    245 ContentHeightAndMargin BlockFormattingContext::Geometry::inFlowHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     243ContentHeightAndMargin BlockFormattingContext::Geometry::inFlowHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    246244{
    247245    ASSERT(layoutBox.isInFlow());
     
    275273}
    276274
    277 ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
     275ContentWidthAndMargin BlockFormattingContext::Geometry::inFlowWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    278276{
    279277    ASSERT(layoutBox.isInFlow());
    280278
    281279    if (!layoutBox.replaced()) {
    282         if (layoutBox.establishesTableFormattingContext()) {
    283             // This is a special table "fit-content size" behavior handling. Not in the spec though.
    284             // Table returns its final width as min/max. Use this final width value to computed horizontal margins etc.
    285             usedHorizontalValues.width = usedHorizontalValues.width ? usedHorizontalValues.width : shrinkToFitWidth(layoutBox, usedHorizontalValues.constraints.width);
    286         }
    287         return inFlowNonReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
     280        if (!layoutBox.establishesTableFormattingContext())
     281            return inFlowNonReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
     282        // This is a special table "fit-content size" behavior handling. Not in the spec though.
     283        // Table returns its final width as min/max. Use this final width value to computed horizontal margins etc.
     284        auto usedWidth = usedHorizontalValues.width ? usedHorizontalValues.width : shrinkToFitWidth(layoutBox, usedHorizontalValues.constraints.width);
     285        return inFlowNonReplacedWidthAndMargin(layoutBox, UsedHorizontalValues { usedHorizontalValues.constraints, usedWidth, usedHorizontalValues.margin });
    288286    }
    289287    return inFlowReplacedWidthAndMargin(layoutBox, usedHorizontalValues);
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp

    r252861 r252862  
    9090}
    9191
    92 void InlineFormattingContext::lineLayout(UsedHorizontalValues usedHorizontalValues)
     92void InlineFormattingContext::lineLayout(const UsedHorizontalValues& usedHorizontalValues)
    9393{
    9494    auto& inlineItems = formattingState().inlineItems();
     
    130130}
    131131
    132 void InlineFormattingContext::layoutFormattingContextRoot(const Box& formattingContextRoot, InvalidationState& invalidationState, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     132void InlineFormattingContext::layoutFormattingContextRoot(const Box& formattingContextRoot, InvalidationState& invalidationState, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    133133{
    134134    ASSERT(formattingContextRoot.isFloatingPositioned() || formattingContextRoot.isInlineBlockBox());
     
    149149}
    150150
    151 void InlineFormattingContext::computeHorizontalAndVerticalGeometry(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     151void InlineFormattingContext::computeHorizontalAndVerticalGeometry(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    152152{
    153153    if (is<Container>(layoutBox)) {
     
    229229}
    230230
    231 LayoutUnit InlineFormattingContext::computedIntrinsicWidthForConstraint(UsedHorizontalValues usedHorizontalValues) const
     231LayoutUnit InlineFormattingContext::computedIntrinsicWidthForConstraint(const UsedHorizontalValues& usedHorizontalValues) const
    232232{
    233233    auto& inlineItems = formattingState().inlineItems();
     
    250250}
    251251
    252 void InlineFormattingContext::computeIntrinsicWidthForFormattingRoot(const Box& formattingRoot, UsedHorizontalValues usedHorizontalValues)
     252void InlineFormattingContext::computeIntrinsicWidthForFormattingRoot(const Box& formattingRoot, const UsedHorizontalValues& usedHorizontalValues)
    253253{
    254254    ASSERT(formattingRoot.establishesFormattingContext());
     
    267267}
    268268
    269 void InlineFormattingContext::computeHorizontalMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
     269void InlineFormattingContext::computeHorizontalMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    270270{
    271271    auto computedHorizontalMargin = geometry().computedHorizontalMargin(layoutBox, usedHorizontalValues);
     
    275275}
    276276
    277 void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues)
     277void InlineFormattingContext::computeWidthAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues)
    278278{
    279279    ContentWidthAndMargin contentWidthAndMargin;
     
    293293}
    294294
    295 void InlineFormattingContext::computeHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     295void InlineFormattingContext::computeHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    296296{
    297297    ContentHeightAndMargin contentHeightAndMargin;
     
    310310}
    311311
    312 void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues)
     312void InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues)
    313313{
    314314    ASSERT(!layoutBox.isContainer());
     
    372372}
    373373
    374 Line::Constraints InlineFormattingContext::constraintsForLine(UsedHorizontalValues usedHorizontalValues, const LayoutUnit lineLogicalTop)
     374Line::Constraints InlineFormattingContext::constraintsForLine(const UsedHorizontalValues& usedHorizontalValues, const LayoutUnit lineLogicalTop)
    375375{
    376376    auto lineLogicalLeft = geometryForBox(root()).contentBoxLeft();
     
    408408}
    409409
    410 void InlineFormattingContext::setDisplayBoxesForLine(const LineLayout::LineContent& lineContent, UsedHorizontalValues usedHorizontalValues)
     410void InlineFormattingContext::setDisplayBoxesForLine(const LineLayout::LineContent& lineContent, const UsedHorizontalValues& usedHorizontalValues)
    411411{
    412412    auto& formattingState = this->formattingState();
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.h

    r252859 r252862  
    6565    class Geometry : public FormattingContext::Geometry {
    6666    public:
    67         ContentHeightAndMargin inlineBlockHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues) const;
    68         ContentWidthAndMargin inlineBlockWidthAndMargin(const Box&, UsedHorizontalValues);
     67        ContentHeightAndMargin inlineBlockHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&) const;
     68        ContentWidthAndMargin inlineBlockWidthAndMargin(const Box&, const UsedHorizontalValues&);
    6969
    7070    private:
     
    7777    InlineFormattingContext::Geometry geometry() const { return Geometry(*this); }
    7878
    79     void lineLayout(UsedHorizontalValues);
    80     void layoutFormattingContextRoot(const Box&, InvalidationState&, UsedHorizontalValues, UsedVerticalValues);
    81     void computeHorizontalAndVerticalGeometry(const Box&, UsedHorizontalValues, UsedVerticalValues);
     79    void lineLayout(const UsedHorizontalValues&);
     80    void layoutFormattingContextRoot(const Box&, InvalidationState&, const UsedHorizontalValues&, const UsedVerticalValues&);
     81    void computeHorizontalAndVerticalGeometry(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
    8282
    83     void computeIntrinsicWidthForFormattingRoot(const Box&, UsedHorizontalValues);
    84     void computeWidthAndHeightForReplacedInlineBox(const Box&, UsedHorizontalValues, UsedVerticalValues);
    85     LayoutUnit computedIntrinsicWidthForConstraint(UsedHorizontalValues) const;
     83    void computeIntrinsicWidthForFormattingRoot(const Box&, const UsedHorizontalValues&);
     84    void computeWidthAndHeightForReplacedInlineBox(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
     85    LayoutUnit computedIntrinsicWidthForConstraint(const UsedHorizontalValues&) const;
    8686
    87     void computeHorizontalMargin(const Box&, UsedHorizontalValues);
    88     void computeHeightAndMargin(const Box&, UsedHorizontalValues, UsedVerticalValues);
    89     void computeWidthAndMargin(const Box&, UsedHorizontalValues);
     87    void computeHorizontalMargin(const Box&, const UsedHorizontalValues&);
     88    void computeHeightAndMargin(const Box&, const UsedHorizontalValues&, const UsedVerticalValues&);
     89    void computeWidthAndMargin(const Box&, const UsedHorizontalValues&);
    9090
    9191    void collectInlineContentIfNeeded();
    92     Line::Constraints constraintsForLine(UsedHorizontalValues, const LayoutUnit lineLogicalTop);
    93     void setDisplayBoxesForLine(const LineLayout::LineContent&, UsedHorizontalValues);
     92    Line::Constraints constraintsForLine(const UsedHorizontalValues&, const LayoutUnit lineLogicalTop);
     93    void setDisplayBoxesForLine(const LineLayout::LineContent&, const UsedHorizontalValues&);
    9494    void invalidateFormattingState(const InvalidationState&);
    9595
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContextGeometry.cpp

    r251135 r252862  
    3636namespace Layout {
    3737
    38 ContentWidthAndMargin InlineFormattingContext::Geometry::inlineBlockWidthAndMargin(const Box& formattingContextRoot, UsedHorizontalValues usedHorizontalValues)
     38ContentWidthAndMargin InlineFormattingContext::Geometry::inlineBlockWidthAndMargin(const Box& formattingContextRoot, const UsedHorizontalValues& usedHorizontalValues)
    3939{
    4040    ASSERT(formattingContextRoot.isInFlow());
     
    6161}
    6262
    63 ContentHeightAndMargin InlineFormattingContext::Geometry::inlineBlockHeightAndMargin(const Box& layoutBox, UsedHorizontalValues usedHorizontalValues, UsedVerticalValues usedVerticalValues) const
     63ContentHeightAndMargin InlineFormattingContext::Geometry::inlineBlockHeightAndMargin(const Box& layoutBox, const UsedHorizontalValues& usedHorizontalValues, const UsedVerticalValues& usedVerticalValues) const
    6464{
    6565    ASSERT(layoutBox.isInFlow());
Note: See TracChangeset for help on using the changeset viewer.