-
commit-queue@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=74144 Patch by Mihai Maerean <mmaerean@adobe.com> on 2013-04-05 Reviewed by David Hyatt. Source/WebCore: DOM children of a region must not be rendered as children of the region, but can be collected in flow threads. NodeRenderingContext::parentRenderer now creates the parent render flow thread if it doesn't exist. Element::moveToFlowThreadIsNeeded is a virtual method that is overriden in PseudoElement to return false and in SVGElement so only svg root elements can directly be collected by a render flow thread. RenderObject::canDOMChildrenHaveRenderParent exists to optimize the code so nodes inside regions (and maybe other types of renderers in the future) can still have renderers if they need to be in a flow thread while the rest of renderers that can't have children skip the new instructions. Tests: fast/regions/flow-body-in-html.html . To test the duplicate bug #103685. fast/regions/region-content-flown-into-region.html fast/regions/universal-selector-children-to-the-same-region.html . To test the duplicate bug #103685. * dom/Element.cpp: (WebCore::Element::moveToFlowThreadIsNeeded): * dom/Element.h: * dom/NodeRenderingContext.cpp: (WebCore::NodeRenderingContext::parentRenderer): the renderer that will be the parent for this node's renderer. In the case of RenderFlowThreads, it may need to create it. (WebCore::NodeRenderingContext::shouldCreateRenderer): In a region, only the children that need to be in a flow thread should have a renderer. (WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded): (WebCore::NodeRenderingContext::moveToFlowThread): * dom/NodeRenderingContext.h: (NodeRenderingContext): * dom/PseudoElement.h: pseudo-elements cannot be directly collected into a named flow. * dom/Text.cpp: (WebCore::Text::textRendererIsNeeded): (WebCore::Text::updateTextRenderer): Because calling textRendererIsNeeded(NodeRenderingContext(...)) on a non-const l-value NodeRenderingContext cannot be done on a temporary object on the stack. * dom/Text.h: * rendering/FlowThreadController.cpp: (WebCore::FlowThreadController::isContentNodeRegisteredWithAnyNamedFlow): * rendering/FlowThreadController.h: * rendering/RenderObject.h: (WebCore::RenderObject::canDOMChildrenHaveRenderParent): Even if this render object can't have render children, the children in the DOM tree may have a render parent (that is different from this render object). * rendering/RenderRegion.h: * svg/SVGElement.cpp: (WebCore::SVGElement::moveToFlowThreadIsNeeded): Allow only svg root elements to be directly collected by a render flow thread. * svg/SVGElement.h: (SVGElement): LayoutTests: * fast/regions/flow-body-in-html-expected.txt: Added. * fast/regions/flow-body-in-html.html: Added. To test the duplicate bug #103685. * fast/regions/region-content-flown-into-region-expected.html: Added. * fast/regions/region-content-flown-into-region.html: Added. * fast/regions/universal-selector-children-to-the-same-region-expected.txt: Added. * fast/regions/universal-selector-children-to-the-same-region.html: Added. To test the duplicate bug #103685. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@147756 268f45cc-cd09-0410-ab3c-d52691b4dbfc
e0da8c77