Skip to content
  • hyatt@apple.com's avatar
    Add new RenderBlockFlow class · 620bb2ee
    hyatt@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=120777
    
    Reviewed by Simon Fraser.
    
    This patch adds a new RenderBlockFlow class. The idea is to get all of the line/float/margin
    code out of RenderBlock and into the subclass, and then we can make RenderBlock an abstract
    base. This will save memory for all of the classes that derive from RenderBlock but have
    their own layout systems (e.g., flexbox, grid, table), and it will let us tighten up
    types to make it more clear when we're talking about block layout code vs. a more generic
    block-level object that can have any kind of layout.
    
    The only real change here is that isBlockFlow() has been renamed to isRenderBlockFlow() and
    is now checking if the object is a RenderBlockFlow. All of the block subclasses have been patched
    to be a RenderBlock or RenderBlockFlow.
    
    * CMakeLists.txt:
    * GNUmakefile.list.am:
    * Target.pri:
    * WebCore.vcxproj/WebCore.vcxproj:
    * WebCore.xcodeproj/project.pbxproj:
    * accessibility/AccessibilityRenderObject.cpp:
    (WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
    (WebCore::AccessibilityRenderObject::determineAccessibilityRole):
    * dom/Position.cpp:
    (WebCore::Position::isCandidate):
    (WebCore::Position::getInlineBoxAndOffset):
    (WebCore::Position::primaryDirection):
    * dom/PositionIterator.cpp:
    (WebCore::PositionIterator::isCandidate):
    * editing/ApplyStyleCommand.cpp:
    (WebCore::ApplyStyleCommand::applyInlineStyleToPushDown):
    * editing/CompositeEditCommand.cpp:
    (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
    * editing/Editor.cpp:
    (WebCore::Editor::baseWritingDirectionForSelectionStart):
    * editing/FrameSelection.cpp:
    (WebCore::caretRenderer):
    * editing/TextIterator.cpp:
    (WebCore::TextIterator::shouldRepresentNodeOffsetZero):
    * editing/TypingCommand.cpp:
    (WebCore::TypingCommand::makeEditableRootEmpty):
    * editing/htmlediting.cpp:
    (WebCore::isBlockFlowElement):
    * html/shadow/SliderThumbElement.cpp:
    (WebCore::RenderSliderThumb::RenderSliderThumb):
    * html/shadow/SliderThumbElement.h:
    * rendering/LayoutState.cpp:
    (WebCore::LayoutState::LayoutState):
    * rendering/RenderBlock.cpp:
    (WebCore::RenderBlock::layoutBlock):
    (WebCore::RenderBlock::collapseMargins):
    (WebCore::RenderBlock::selectionGaps):
    (WebCore::RenderBlock::firstLineBoxBaseline):
    (WebCore::RenderBlock::lastLineBoxBaseline):
    (WebCore::RenderBlock::firstLineBlock):
    (WebCore::findFirstLetterBlock):
    (WebCore::shouldCheckLines):
    (WebCore::RenderBlock::adjustForBorderFit):
    * rendering/RenderBlock.h:
    * rendering/RenderBlockFlow.cpp: Added.
    (WebCore::RenderBlockFlow::RenderBlockFlow):
    (WebCore::RenderBlockFlow::~RenderBlockFlow):
    * rendering/RenderBlockFlow.h: Added.
    (WebCore::toRenderBlockFlow):
    * rendering/RenderBox.cpp:
    (WebCore::RenderBox::computeRectForRepaint):
    (WebCore::RenderBox::positionForPoint):
    * rendering/RenderBoxModelObject.h:
    (WebCore::RenderBoxModelObject::canHaveBoxInfoInRegion):
    * rendering/RenderDeprecatedFlexibleBox.cpp:
    (WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):
    (WebCore::RenderDeprecatedFlexibleBox::clearLineClamp):
    * rendering/RenderDetailsMarker.cpp:
    (WebCore::RenderDetailsMarker::RenderDetailsMarker):
    * rendering/RenderDetailsMarker.h:
    * rendering/RenderFieldset.cpp:
    (WebCore::RenderFieldset::RenderFieldset):
    * rendering/RenderFieldset.h:
    * rendering/RenderFileUploadControl.cpp:
    (WebCore::RenderFileUploadControl::RenderFileUploadControl):
    * rendering/RenderFileUploadControl.h:
    * rendering/RenderFlowThread.cpp:
    (WebCore::RenderFlowThread::RenderFlowThread):
    * rendering/RenderFlowThread.h:
    * rendering/RenderFullScreen.cpp:
    * rendering/RenderInline.cpp:
    (WebCore::RenderInline::computeRectForRepaint):
    * rendering/RenderLineBoxList.cpp:
    (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):
    * rendering/RenderMeter.cpp:
    (WebCore::RenderMeter::RenderMeter):
    * rendering/RenderMeter.h:
    * rendering/RenderMultiColumnBlock.cpp:
    (WebCore::RenderMultiColumnBlock::RenderMultiColumnBlock):
    * rendering/RenderMultiColumnBlock.h:
    * rendering/RenderObject.cpp:
    (WebCore::RenderObject::computeRectForRepaint):
    (WebCore::RenderObject::styleWillChange):
    (WebCore::firstLineStyleForCachedUncachedType):
    * rendering/RenderObject.h:
    (WebCore::RenderObject::isBR):
    (WebCore::RenderObject::isRenderBlockFlow):
    * rendering/RenderObjectChildList.cpp:
    (WebCore::RenderObjectChildList::insertChildNode):
    * rendering/RenderProgress.cpp:
    (WebCore::RenderProgress::RenderProgress):
    * rendering/RenderProgress.h:
    * rendering/RenderRegion.cpp:
    (WebCore::RenderRegion::RenderRegion):
    * rendering/RenderRegion.h:
    * rendering/RenderRuby.cpp:
    (WebCore::RenderRubyAsBlock::RenderRubyAsBlock):
    * rendering/RenderRuby.h:
    * rendering/RenderRubyBase.cpp:
    (WebCore::RenderRubyBase::RenderRubyBase):
    * rendering/RenderRubyBase.h:
    * rendering/RenderRubyRun.cpp:
    (WebCore::RenderRubyRun::RenderRubyRun):
    * rendering/RenderRubyRun.h:
    * rendering/RenderRubyText.cpp:
    (WebCore::RenderRubyText::RenderRubyText):
    * rendering/RenderRubyText.h:
    * rendering/RenderTableCaption.cpp:
    (WebCore::RenderTableCaption::RenderTableCaption):
    * rendering/RenderTableCaption.h:
    * rendering/RenderTableCell.cpp:
    (WebCore::RenderTableCell::RenderTableCell):
    * rendering/RenderTableCell.h:
    * rendering/RenderTextControl.cpp:
    (WebCore::RenderTextControl::RenderTextControl):
    * rendering/RenderTextControl.h:
    * rendering/RenderTextControlSingleLine.h:
    (WebCore::RenderTextControlInnerBlock::RenderTextControlInnerBlock):
    * rendering/RenderTextTrackCue.cpp:
    (WebCore::RenderTextTrackCue::RenderTextTrackCue):
    * rendering/RenderTextTrackCue.h:
    * rendering/RenderView.cpp:
    (WebCore::RenderView::RenderView):
    * rendering/RenderView.h:
    * rendering/svg/RenderSVGBlock.cpp:
    (WebCore::RenderSVGBlock::RenderSVGBlock):
    * rendering/svg/RenderSVGBlock.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155139 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    620bb2ee