Changeset 238399 in webkit


Ignore:
Timestamp:
Nov 20, 2018 7:48:14 AM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] InlineRunProvider::append() should just take const InlineItem&.
https://bugs.webkit.org/show_bug.cgi?id=191837

Reviewed by Antti Koivisto.

This allows us to remove the InlineFormattingState dependency as well.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
(WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):

  • layout/inlineformatting/InlineRunProvider.cpp:

(WebCore::Layout::InlineRunProvider::InlineRunProvider):
(WebCore::Layout::InlineRunProvider::append):

  • layout/inlineformatting/InlineRunProvider.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r238396 r238399  
     12018-11-20  Zalan Bujjtas  <zalan@apple.com>
     2
     3        [LFC][IFC] InlineRunProvider::append() should just take const InlineItem&.
     4        https://bugs.webkit.org/show_bug.cgi?id=191837
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This allows us to remove the InlineFormattingState dependency as well.
     9
     10        * layout/inlineformatting/InlineFormattingContext.cpp:
     11        (WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
     12        (WebCore::Layout::InlineFormattingContext::instrinsicWidthConstraints const):
     13        * layout/inlineformatting/InlineRunProvider.cpp:
     14        (WebCore::Layout::InlineRunProvider::InlineRunProvider):
     15        (WebCore::Layout::InlineRunProvider::append):
     16        * layout/inlineformatting/InlineRunProvider.h:
     17
    1182018-11-20  Thibault Saunier  <tsaunier@igalia.com>
    219
  • trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp

    r238349 r238399  
    5959    LOG_WITH_STREAM(FormattingContextLayout, stream << "[Start] -> inline formatting context -> formatting root(" << &root() << ")");
    6060
    61     InlineRunProvider inlineRunProvider(inlineFormattingState());
     61    InlineRunProvider inlineRunProvider;
    6262    collectInlineContent(inlineRunProvider);
    6363    // Compute width/height for non-text content.
     
    453453    auto& inlineFormattingState = this->inlineFormattingState();
    454454
     455    auto createAndAppendInlineItem = [&] {
     456        auto inlineItem = std::make_unique<InlineItem>(root);
     457        inlineRunProvider.append(*inlineItem);
     458        inlineFormattingState.inlineContent().add(WTFMove(inlineItem));
     459    };
     460
    455461    if (root.establishesFormattingContext() && &root != &(this->root())) {
     462        createAndAppendInlineItem();
    456463        // Skip formatting root subtree. They are not part of this inline formatting context.
    457         inlineRunProvider.append(root);
    458464        inlineFormattingState.setDetachingRules(root, { InlineFormattingState::DetachingRule::BreakAtStart, InlineFormattingState::DetachingRule::BreakAtEnd });
    459465        return;
     
    461467
    462468    if (!is<Container>(root)) {
    463         inlineRunProvider.append(root);
     469        createAndAppendInlineItem();
    464470        return;
    465471    }
     
    518524
    519525    auto& inlineFormattingState = this->inlineFormattingState();
    520     InlineRunProvider inlineRunProvider(inlineFormattingState);
     526    InlineRunProvider inlineRunProvider;
    521527    collectInlineContent(inlineRunProvider);
    522528
  • trunk/Source/WebCore/layout/inlineformatting/InlineRunProvider.cpp

    r238087 r238399  
    3838WTF_MAKE_ISO_ALLOCATED_IMPL(InlineRunProvider);
    3939
    40 InlineRunProvider::InlineRunProvider(InlineFormattingState& inlineFormattingState)
    41     : m_inlineFormattingState(inlineFormattingState)
     40InlineRunProvider::InlineRunProvider()
    4241{
    4342}
    4443
    45 void InlineRunProvider::append(const Box& layoutBox)
     44void InlineRunProvider::append(const InlineItem& inlineItem)
    4645{
    47     auto inlineItem = std::make_unique<InlineItem>(layoutBox);
    48 
    49     // Special case text item. Texts can overlap multiple items. <span>foo</span><span>bar</span>
    50     switch (inlineItem->type()) {
     46    switch (inlineItem.type()) {
    5147    case InlineItem::Type::Text:
    52         processInlineTextItem(*inlineItem);
     48        // Special case text content. They can overlap multiple items. <span>foo</span><span>bar</span>
     49        processInlineTextItem(inlineItem);
    5350        break;
    5451    case InlineItem::Type::HardLineBreak:
    55         m_inlineRuns.append(InlineRunProvider::Run::createHardLineBreakRun(*inlineItem));
     52        m_inlineRuns.append(InlineRunProvider::Run::createHardLineBreakRun(inlineItem));
    5653        break;
    5754    case InlineItem::Type::InlineBox:
    58         m_inlineRuns.append(InlineRunProvider::Run::createBoxRun(*inlineItem));
     55        m_inlineRuns.append(InlineRunProvider::Run::createBoxRun(inlineItem));
    5956        break;
    6057    case InlineItem::Type::Float:
    61         m_inlineRuns.append(InlineRunProvider::Run::createFloatRun(*inlineItem));
     58        m_inlineRuns.append(InlineRunProvider::Run::createFloatRun(inlineItem));
    6259        break;
    6360    default:
    6461        ASSERT_NOT_IMPLEMENTED_YET();
    6562    }
    66 
    67     m_inlineFormattingState.inlineContent().add(WTFMove(inlineItem));
    6863}
    6964
  • trunk/Source/WebCore/layout/inlineformatting/InlineRunProvider.h

    r238087 r238399  
    3535namespace Layout {
    3636
    37 class InlineFormattingState;
    38 
    3937using ItemPosition = unsigned;
    4038
     
    4240    WTF_MAKE_ISO_ALLOCATED(InlineRunProvider);
    4341public:
    44     InlineRunProvider(InlineFormattingState&);
     42    InlineRunProvider();
    4543
    46     void append(const Box&);
     44    void append(const InlineItem&);
    4745    void insertBefore(const Box&, const Box& before);
    4846    void remove(const Box&);
     
    118116    LazyLineBreakIterator m_lineBreakIterator;
    119117
    120     InlineFormattingState& m_inlineFormattingState;
    121118    Vector<InlineRunProvider::Run> m_inlineRuns;
    122119};
Note: See TracChangeset for help on using the changeset viewer.