Changeset 238399 in webkit
- Timestamp:
- Nov 20, 2018 7:48:14 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r238396 r238399 1 2018-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 1 18 2018-11-20 Thibault Saunier <tsaunier@igalia.com> 2 19 -
trunk/Source/WebCore/layout/inlineformatting/InlineFormattingContext.cpp
r238349 r238399 59 59 LOG_WITH_STREAM(FormattingContextLayout, stream << "[Start] -> inline formatting context -> formatting root(" << &root() << ")"); 60 60 61 InlineRunProvider inlineRunProvider (inlineFormattingState());61 InlineRunProvider inlineRunProvider; 62 62 collectInlineContent(inlineRunProvider); 63 63 // Compute width/height for non-text content. … … 453 453 auto& inlineFormattingState = this->inlineFormattingState(); 454 454 455 auto createAndAppendInlineItem = [&] { 456 auto inlineItem = std::make_unique<InlineItem>(root); 457 inlineRunProvider.append(*inlineItem); 458 inlineFormattingState.inlineContent().add(WTFMove(inlineItem)); 459 }; 460 455 461 if (root.establishesFormattingContext() && &root != &(this->root())) { 462 createAndAppendInlineItem(); 456 463 // Skip formatting root subtree. They are not part of this inline formatting context. 457 inlineRunProvider.append(root);458 464 inlineFormattingState.setDetachingRules(root, { InlineFormattingState::DetachingRule::BreakAtStart, InlineFormattingState::DetachingRule::BreakAtEnd }); 459 465 return; … … 461 467 462 468 if (!is<Container>(root)) { 463 inlineRunProvider.append(root);469 createAndAppendInlineItem(); 464 470 return; 465 471 } … … 518 524 519 525 auto& inlineFormattingState = this->inlineFormattingState(); 520 InlineRunProvider inlineRunProvider (inlineFormattingState);526 InlineRunProvider inlineRunProvider; 521 527 collectInlineContent(inlineRunProvider); 522 528 -
trunk/Source/WebCore/layout/inlineformatting/InlineRunProvider.cpp
r238087 r238399 38 38 WTF_MAKE_ISO_ALLOCATED_IMPL(InlineRunProvider); 39 39 40 InlineRunProvider::InlineRunProvider(InlineFormattingState& inlineFormattingState) 41 : m_inlineFormattingState(inlineFormattingState) 40 InlineRunProvider::InlineRunProvider() 42 41 { 43 42 } 44 43 45 void InlineRunProvider::append(const Box& layoutBox)44 void InlineRunProvider::append(const InlineItem& inlineItem) 46 45 { 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()) { 51 47 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); 53 50 break; 54 51 case InlineItem::Type::HardLineBreak: 55 m_inlineRuns.append(InlineRunProvider::Run::createHardLineBreakRun( *inlineItem));52 m_inlineRuns.append(InlineRunProvider::Run::createHardLineBreakRun(inlineItem)); 56 53 break; 57 54 case InlineItem::Type::InlineBox: 58 m_inlineRuns.append(InlineRunProvider::Run::createBoxRun( *inlineItem));55 m_inlineRuns.append(InlineRunProvider::Run::createBoxRun(inlineItem)); 59 56 break; 60 57 case InlineItem::Type::Float: 61 m_inlineRuns.append(InlineRunProvider::Run::createFloatRun( *inlineItem));58 m_inlineRuns.append(InlineRunProvider::Run::createFloatRun(inlineItem)); 62 59 break; 63 60 default: 64 61 ASSERT_NOT_IMPLEMENTED_YET(); 65 62 } 66 67 m_inlineFormattingState.inlineContent().add(WTFMove(inlineItem));68 63 } 69 64 -
trunk/Source/WebCore/layout/inlineformatting/InlineRunProvider.h
r238087 r238399 35 35 namespace Layout { 36 36 37 class InlineFormattingState;38 39 37 using ItemPosition = unsigned; 40 38 … … 42 40 WTF_MAKE_ISO_ALLOCATED(InlineRunProvider); 43 41 public: 44 InlineRunProvider( InlineFormattingState&);42 InlineRunProvider(); 45 43 46 void append(const Box&);44 void append(const InlineItem&); 47 45 void insertBefore(const Box&, const Box& before); 48 46 void remove(const Box&); … … 118 116 LazyLineBreakIterator m_lineBreakIterator; 119 117 120 InlineFormattingState& m_inlineFormattingState;121 118 Vector<InlineRunProvider::Run> m_inlineRuns; 122 119 };
Note: See TracChangeset
for help on using the changeset viewer.