Skip to content
  • dpranke@chromium.org's avatar
    Switch to new PseudoElement based :before and :after · cecd9c05
    dpranke@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=104462
    
    Patch by Elliott Sprehn <esprehn@chromium.org> on 2012-12-11
    Reviewed by Antti Koivisto.
    
    Source/WebCore:
    
    Switch to the new PseudoElement based generated content implementation
    that moves :before and :after into the DOM. This also switches to using
    the ComposedShadowTreeWalker for determining the siblings of PseudoElement's
    making the new generated content implementation support adding :before
    and :after into <input> elements.
    
    Tests: fast/css-generated-content/block-inside-inline.html
           fast/css-generated-content/box-orient.html
    
    * dom/ComposedShadowTreeWalker.cpp:
    (WebCore::ComposedShadowTreeWalker::pseudoAwareNextSibling):
    (WebCore):
    (WebCore::ComposedShadowTreeWalker::pseudoAwarePreviousSibling):
    (WebCore::ComposedShadowTreeWalker::traverseParent):
    * dom/ComposedShadowTreeWalker.h:
    (ComposedShadowTreeWalker):
    * dom/Element.cpp:
    (WebCore::Element::attach):
    (WebCore::Element::recalcStyle):
    * dom/Node.cpp:
    * dom/Node.h:
    (Node):
    * dom/NodeRenderingContext.cpp:
    (WebCore::NodeRenderingContext::nextRenderer):
    (WebCore::NodeRenderingContext::previousRenderer):
    (WebCore::NodeRenderingContext::createRendererForElementIfNeeded):
    * dom/Position.cpp:
    (WebCore::Position::Position):
    (WebCore::Position::hasRenderedNonAnonymousDescendantsWithHeight):
    * editing/visible_units.cpp:
    (WebCore::logicallyPreviousBox):
    (WebCore::logicallyNextBox):
    (WebCore::startPositionForLine):
    (WebCore::endPositionForLine):
    * html/HTMLTextFormControlElement.cpp:
    (WebCore::HTMLTextFormControlElement::childShouldCreateRenderer):
    * page/DragController.cpp:
    (WebCore::DragController::draggableNode):
    * rendering/RenderBlock.cpp:
    (WebCore::RenderBlock::styleDidChange):
    (WebCore::RenderBlock::splitBlocks):
    (WebCore::RenderBlock::addChildIgnoringAnonymousColumnBlocks):
    (WebCore::RenderBlock::createReplacementRunIn):
    (WebCore::RenderBlock::isSelectionRoot):
    * rendering/RenderBlock.h:
    (RenderBlock):
    * rendering/RenderButton.cpp:
    * rendering/RenderButton.h:
    (RenderButton):
    * rendering/RenderInline.cpp:
    (WebCore::RenderInline::styleDidChange):
    (WebCore::RenderInline::addChildIgnoringContinuation):
    (WebCore::RenderInline::splitInlines):
    * rendering/RenderListItem.cpp:
    (WebCore::RenderListItem::updateMarkerLocation):
    * rendering/RenderObject.cpp:
    (WebCore::RenderObject::createVisiblePosition):
    * rendering/RenderObject.h:
    (WebCore::RenderObject::nonPseudoNode):
    (RenderObject):
    (WebCore::RenderObject::clearNode):
    (WebCore::RenderObject::generatingNode):
    * rendering/RenderObjectChildList.cpp:
    * rendering/RenderObjectChildList.h:
    (RenderObjectChildList):
    * rendering/RenderRubyText.cpp:
    * rendering/RenderRubyText.h:
    (RenderRubyText):
    * rendering/RenderTableRow.cpp:
    (WebCore::RenderTableRow::styleDidChange):
    * rendering/RenderTableRow.h:
    * rendering/RenderTableSection.cpp:
    (WebCore::RenderTableSection::addChild):
    * rendering/RenderWidget.cpp:
    (WebCore::RenderWidget::destroy):
    
    LayoutTests:
    
    Add test for block generated content inside inlines which is now supported
    properly, and also for using box-orient and reordering.
    
    before-content-continuation.html's expectations change because we now
    support block content properly.
    
    I skipped fast/css-generated-content/table-row-group-to-inline.html
    which needs a rebaseline after this this lands. Unfortunately the test
    output is still wrong because we leave an anonymous RenderTable in the
    tree, but that bug has always been there.
    
    I also skipped fast/css/empty-generated-content.html which needs rebaselines
    as we no longer create extra anonymous blocks, though the reason is not clear
    to me.
    
    * fast/css-generated-content/before-content-continuation-chain-expected.txt:
    * fast/css-generated-content/block-inside-inline-expected.html: Added.
    * fast/css-generated-content/block-inside-inline.html: Added.
    * fast/css-generated-content/box-orient-expected.html: Added.
    * fast/css-generated-content/box-orient.html: Added.
    * platform/chromium/TestExpectations:
    * platform/mac/TestExpectations:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@137336 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    cecd9c05