Skip to content
  • zimmermann@webkit.org's avatar
    Integrate SVGUseElement within the new shadow root concept · b418e382
    zimmermann@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=78902
    
    Reviewed by Zoltan Herczeg.
    
    Source/WebCore:
    
    Replace SVG shadow tree implementation with the new, modern #shadow-root implementation.
    
    Current situation in trunk:
    SVGUseElement doesn't create/hold the shadow tree, unlike its expected in
    the modern #shadow-root concept, but its renderer RenderSVGShadowTreeRootContainer.
    That creates a cycle, as the actual DOM tree is stored as RefPtr<SVGGElement> inside
    a renderer - that's weak conceptually, and has lead to sublte security bugs in the past.
    
    Whenever a target element of a <use> element changed, invalidateShadowTree() is called
    which calls setNeedsStyleRecalc(), and sets m_needsShadodwTreeRecreation to true.
    Once style recalculation happens, the RenderSVGShadowTreeRootContainer then eventually
    built the shadow tree, by cloning the target node, building the SVGElementInstance tree
    etc, -- all within the render tree.
    
    To easy reviewing, here's a dump of the current render tree for a simple <use> example:
    <defs><rect id="rect"/></defs><use xlink:href="#rect"/>
    
    Dump of render tree:
    RenderSVGHiddenContainer {defs}        // <defs> (SVGDefsElement)
        RenderSVGRect {rect}               // <rect> (SVGRectElement)
    RenderSVGShadowTreeRootContainer {use} // <use> (SVGUseElement)
        RenderSVGContainer {g}             // <g> (SVGShadowTreeRootElement)
            RenderSVGRect {rect}           // <rect> (SVGRectElement, clone of <rect> in <defs>)
    
    The SVGShadowTreeRootElement is created & stored by RenderSVGShadowTreeRootContainer,
    the renderer of the <use> element. The RenderSVGTransformableContainer renderer created
    for the SVGShadowTreeRootElement stores the x/y translation induced by the <use> attributes.
    
    There are lots of places all over WebCore that assume the existance of a <g> renderer
    as first child of the <use> element, representing the "SVG shadow tree root".
    
    Summary of this patch:
    Let SVGUseElement create&maintain a #shadow-root, and append the cloned target elements
    into this shadow root. We no longer have to take care of attachment/detachment, style
    recalculation, etc. - that's handled transparenly by ShadowRoot(List) now.
    
    This makes SVGShadowTreeElements & RenderSVGShadowTreeRootContainer obsolete. Switch
    SVGUseElement to create a RenderSVGTransformableContainer as its renderer, and make
    it respect the translation induced by the x/y attributes, given for a <use> element.
    
    Remove all occourences of SVGShadowRoot, remove all special cases it induced.
    
    It's all covered by existing tests, took a while to make them all pass again.
    
    * CMakeLists.txt: Remove SVGShadowTreeElements/RenderSVGShadowTreeRootContainer from build.
    * GNUmakefile.list.am: Ditto.
    * Target.pri: Ditto.
    * WebCore.gypi: Ditto.
    * WebCore.vcproj/WebCore.vcproj: Ditto.
    * WebCore.xcodeproj/project.pbxproj: Ditto.
    * css/CSSStyleSelector.cpp:
    (WebCore::CSSStyleSelector::collectMatchingRulesForList): Enable fast path for selector checking, now that special shadow tree rules are gone.
    * css/SelectorChecker.cpp:
    (WebCore::linkAttribute): No need to guard this code with ENABLE(SVG).
    (WebCore::SelectorChecker::checkSelector): Remove obsolete SVG shadow root special case.
    * dom/EventDispatcher.cpp:
    (WebCore::eventTargetRespectingSVGTargetRules): Remove loop, simplify & cleanup this code.
    (WebCore::EventDispatcher::adjustToShadowBoundaries): s/isShadowRootOrSVGShadowRoot/isShadowRoot/.
    (WebCore::EventDispatcher::adjustRelatedTarget): Ditto.
    (WebCore::EventDispatcher::ensureEventAncestors): Simplify logic for SVG, fixed a FIXME.
    * dom/Node.cpp: Remove obsolete svgShadowHost().
    (WebCore::Node::shadowTreeRootNode): Remove obsolete isSVGShadowRoot() checks.
    (WebCore::Node::nonBoundaryShadowTreeRootNode): Ditto.
    (WebCore::Node::isInShadowTree): Make it const.
    * dom/Node.h: Remove isSVGShadowRoot/svgShadowHost.
    (WebCore::Node::isShadowRoot): s/IsShadowRootOrSVGShadowRootFlag/isShadowRoot/.
    (WebCore::Node::parentNode): Augment comments.
    (WebCore::Node::parentNodeGuaranteedHostFree): Ditto.
    * dom/Range.cpp:
    (WebCore::Range::checkNodeBA): Remove obsolete SVG shadow root special case.
    * dom/ScriptElement.cpp:
    (WebCore::ScriptElement::prepareScript): Ditto.
    * rendering/RenderObject.h: Remove isSVGShadowTreeRootContainer.
    (WebCore::RenderObject::isSVGTransformableContainer): Added.
    * rendering/svg/RenderSVGAllInOne.cpp: Remove SVGShadowTreeElements/RenderSVGShadowTreeRootContainer from build.
    * rendering/svg/RenderSVGModelObject.cpp:
    (WebCore::isGraphicsElement): To check for <use>, a tag name comparision is needed now, as it no longer has a special renderer.
    * rendering/svg/RenderSVGResourceClipper.cpp:
    (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage): Ditto.
    (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect): Ditto.
    (WebCore::RenderSVGResourceClipper::hitTestClipContent): Ditto.
    * rendering/svg/RenderSVGResourceContainer.cpp: Remove RenderSVGShadowTreeRootContainer.h include.
    * rendering/svg/RenderSVGShadowTreeRootContainer.cpp: Removed.
    * rendering/svg/RenderSVGShadowTreeRootContainer.h: Removed.
    * rendering/svg/RenderSVGTransformableContainer.cpp: Keep track of last used additional x/y translation.
    (WebCore::RenderSVGTransformableContainer::calculateLocalTransform): Handle x/y translation for <use> contains here, instead of storing it in the SVGShadowTreeRootElement.
    * rendering/svg/RenderSVGTransformableContainer.h: Store last used x/y translation.
    (WebCore::RenderSVGTransformableContainer::isSVGTransformableContainer): Return true.
    (WebCore::toRenderSVGTransformableContainer): Add conversion helpers.
    * rendering/svg/RenderSVGViewportContainer.cpp: Ditto.
    (WebCore::RenderSVGViewportContainer::calcViewport): Handle width/height attributes inheritance from the <use> element, if we're a <svg> or <symbol> replacement in the shadow tree.
    * rendering/svg/RenderSVGViewportContainer.h: Remove isSVGContainer() override which is not needed here (already present in RenderSVGContainer).
    * rendering/svg/SVGShadowTreeElements.cpp: Removed.
    * rendering/svg/SVGShadowTreeElements.h: Removed.
    * svg/SVGAElement.cpp:
    (WebCore::SVGAElement::createRenderer): Check if parentNode is really a SVGElement, before casting.
    * svg/SVGElement.cpp:
    (WebCore::SVGElement::isOutermostSVGSVGElement): Early exit if tag name isn't <svg>, or if we're in a shadow tree (can't be an outermost <svg> element then).
    (WebCore::hasLoadListener): Deploy parentOrHostElement() usage to remove any special cases, related to shadow boundaries.
    (WebCore::SVGElement::sendSVGLoadEventIfPossible): Ditto.
    (WebCore::SVGElement::customStyleForRenderer): Ditto.
    * svg/SVGElementInstance.cpp:
    (WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Call updateStyleIfNeeded() instead of updateLayoutIgnorePendingStylesheets().
    * svg/SVGGElement.cpp:
    (WebCore::SVGGElement::rendererIsNeeded): s/parentNode/parentOrHostElement/ - we need to cross shadow boundaries now.
    * svg/SVGGElement.h: Remove obsolete isShadowTreeContainerElement().
    * svg/SVGLocatable.cpp:
    (WebCore::SVGLocatable::nearestViewportElement): s/parentNode/parentOrHostElement/ - we need to cross shadow boundaries now.
    (WebCore::SVGLocatable::farthestViewportElement): Ditto.
    (WebCore::SVGLocatable::computeCTM): Ditto.
    * svg/SVGStyledElement.cpp:
    (WebCore::SVGStyledElement::title): Ditto. (+ simplify code a lot, no need to walk the shadow tree to find its root anymore, use isInShadowTree() helper.)
    (WebCore::SVGStyledElement::rendererIsNeeded): Ditto.
    * svg/SVGUseElement.cpp:
    (WebCore::SVGUseElement::SVGUseElement): Remove no longer needed m_updatesBlocked.
    (WebCore::SVGUseElement::create): Always call ensureShadowRoot(), to create a #shadow-root, upon creating a SVGUseElement.
    (WebCore::SVGUseElement::insertedIntoDocument): Align with SVGFEImageElement/SVGTRefElement - call buildPendingResource() from insertedIntoDocument(), finally! (no renderer needed anymore to update the SVG shadow subtree).
    (WebCore::SVGUseElement::removedFromDocument): Align with SVGFEImageElement/SVGTRefElement - immediately release the SVGElementInstance & shadow tree, once we're removed from the document.
    (WebCore::SVGUseElement::svgAttributeChanged): Simplify code a lot, no longer need to deal with x/y/width/height attributes, the renderes in the shadow tree grab these values from their corresponding <use> elements automatically now.
    (WebCore::SVGUseElement::willRecalcStyle):
        New main part of the logic. invalidateShadowTree() calls setNeedsStyleRecalc, and sets m_needsShadowTreeRecreation=true. If we encounter this case, force rebuilding the SVG shadow tree
        and the SVGElementInstance tree, immediately, before executing the actual style recalc. This allows us to lazily rebuild the SVG shadow tree for the <use> element. Consider:
        <defs><rect id="rect"></defs> <use xlink:href="#rect"/>. Now from a script we change the rect x/y/width/height attributes:
        rect.setAttribute("x", "10"); rect.setAttribute("y", "10")... each call will lead to a SVGUseElement::invalidateShadowTree() call by SVGElementInstance::invalidateAllInstancesOfElement, invoked after the <rect> element got parsed.
        This won't update the shadow tree four times, but only once upon the next style recalculation - otherwise performance is a nightmare.
        This will serve as future starting point, to explore partial SVG subtree re-clones, which should easily be doable now.
    (WebCore::dumpInstanceTree): Add a 'static' to allow DUMP_INSTANCE_TREE to be used in clang builds.
    (WebCore::SVGUseElement::clearResourceReferences): Added helper to release instance & shadow tree.
    (WebCore::SVGUseElement::buildPendingResource): Modeled exactly like SVGFEImageElement/SVGTRefElement. It's possible to share more code between these in future.
    (WebCore::SVGUseElement::buildShadowAndInstanceTree): Cleanup code, adapt to new shadow-root concept.
    (WebCore::SVGUseElement::createRenderer): Create a RenderSVGTransformableContainer, no longer a <use> specific renderer.
    (WebCore::removeDisallowedElementsFromSubtree): Use new replacedChild/appendChild variants, that don't require a ExceptionCode to be passed in.
    (WebCore::SVGUseElement::buildShadowTree): Ditto.
    (WebCore::SVGUseElement::expandUseElementsInShadowTree): Ditto.
    (WebCore::SVGUseElement::expandSymbolElementsInShadowTree): Ditto.
    (WebCore::SVGUseElement::invalidateShadowTree): Only trigger style recalculations if needed.
    * svg/SVGUseElement.h: Remove lots of now unnecessary overrides: attach/detach/didRecalcStyle/updateContainerOffset/updateContainerSizes/etc..
    * svg/animation/SVGSMILElement.cpp:
    (WebCore::SVGSMILElement::insertedIntoDocument): No need to walk the shadow tree to find its root anymore, use isInShadowTree() helper.
    
    LayoutTests:
    
    Update results after the <use> rewrite. Lots of RendeSVGContainer lines are
    gone in the expected results, as the artifical <g> element representing the
    SVG shadow root is gone, replaced by a standar #shadow-root.
    
    * platform/chromium/test_expectations.txt:
    * platform/mac/svg/W3C-SVG-1.1-SE/struct-use-11-f-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-36-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-39-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-46-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-61-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-63-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-64-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-65-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-66-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-67-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-68-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-69-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-70-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-77-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-78-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/animate-elem-80-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/filters-gauss-01-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/filters-morph-01-f-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/pservers-grad-13-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-group-03-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-image-02-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-symbol-01-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-use-01-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-use-03-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/struct-use-05-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/text-path-01-b-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/text-text-04-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/text-text-05-t-expected.txt:
    * platform/mac/svg/W3C-SVG-1.1/text-text-06-t-expected.txt:
    * platform/mac/svg/batik/filters/feTile-expected.txt:
    * platform/mac/svg/batik/filters/filterRegions-expected.txt:
    * platform/mac/svg/batik/masking/maskRegions-expected.txt:
    * platform/mac/svg/batik/paints/gradientLimit-expected.txt:
    * platform/mac/svg/batik/paints/patternPreserveAspectRatioA-expected.txt:
    * platform/mac/svg/batik/paints/patternRegionA-expected.txt:
    * platform/mac/svg/batik/paints/patternRegions-expected.txt:
    * platform/mac/svg/batik/paints/patternRegions-positioned-objects-expected.txt:
    * platform/mac/svg/batik/text/longTextOnPath-expected.txt:
    * platform/mac/svg/batik/text/smallFonts-expected.txt:
    * platform/mac/svg/batik/text/textAnchor-expected.txt:
    * platform/mac/svg/batik/text/textDecoration-expected.txt:
    * platform/mac/svg/batik/text/textEffect-expected.txt:
    * platform/mac/svg/batik/text/textEffect2-expected.txt:
    * platform/mac/svg/batik/text/textEffect3-expected.txt:
    * platform/mac/svg/batik/text/textFeatures-expected.txt:
    * platform/mac/svg/batik/text/textGlyphOrientationHorizontal-expected.txt:
    * platform/mac/svg/batik/text/textLayout-expected.txt:
    * platform/mac/svg/batik/text/textLayout2-expected.txt:
    * platform/mac/svg/batik/text/textLength-expected.txt:
    * platform/mac/svg/batik/text/textOnPath-expected.txt:
    * platform/mac/svg/batik/text/textOnPath2-expected.txt:
    * platform/mac/svg/batik/text/textOnPath3-expected.txt:
    * platform/mac/svg/batik/text/textOnPathSpaces-expected.txt:
    * platform/mac/svg/batik/text/textPosition-expected.txt:
    * platform/mac/svg/batik/text/textPosition2-expected.txt:
    * platform/mac/svg/batik/text/textProperties-expected.txt:
    * platform/mac/svg/batik/text/textProperties2-expected.txt:
    * platform/mac/svg/batik/text/textStyles-expected.txt:
    * platform/mac/svg/batik/text/verticalText-expected.txt:
    * platform/mac/svg/batik/text/verticalTextOnPath-expected.txt:
    * platform/mac/svg/carto.net/button-expected.txt:
    * platform/mac/svg/carto.net/colourpicker-expected.txt:
    * platform/mac/svg/carto.net/slider-expected.txt:
    * platform/mac/svg/carto.net/window-expected.txt:
    * platform/mac/svg/clip-path/clip-path-child-clipped-expected.txt:
    * platform/mac/svg/clip-path/clip-path-clipped-no-content-expected.txt:
    * platform/mac/svg/clip-path/clip-path-evenodd-expected.txt:
    * platform/mac/svg/clip-path/clip-path-evenodd-nonzero-expected.txt:
    * platform/mac/svg/clip-path/clip-path-nonzero-evenodd-expected.txt:
    * platform/mac/svg/clip-path/clip-path-nonzero-expected.txt:
    * platform/mac/svg/clip-path/clip-path-text-and-shape-expected.txt:
    * platform/mac/svg/clip-path/clip-path-use-as-child2-expected.txt:
    * platform/mac/svg/clip-path/clip-path-use-as-child3-expected.txt:
    * platform/mac/svg/clip-path/clip-path-use-as-child4-expected.txt:
    * platform/mac/svg/clip-path/clip-path-use-as-child5-expected.txt:
    * platform/mac/svg/clip-path/clip-path-with-container-expected.txt:
    * platform/mac/svg/clip-path/clip-path-with-invisibile-child-expected.txt:
    * platform/mac/svg/clip-path/clip-path-with-text-clipped-expected.txt:
    * platform/mac/svg/clip-path/clipper-placement-issue-expected.txt:
    * platform/mac/svg/css/clippath-with-shadow-expected.txt:
    * platform/mac/svg/css/mask-with-shadow-expected.txt:
    * platform/mac/svg/custom/broken-internal-references-expected.txt:
    * platform/mac/svg/custom/clip-path-referencing-use-expected.txt:
    * platform/mac/svg/custom/clip-path-referencing-use2-expected.txt:
    * platform/mac/svg/custom/embedding-external-svgs-expected.txt:
    * platform/mac/svg/custom/path-textPath-simulation-expected.txt:
    * platform/mac/svg/custom/pattern-rotate-expected.txt:
    * platform/mac/svg/custom/recursive-clippath-expected.txt:
    * platform/mac/svg/custom/recursive-mask-expected.txt:
    * platform/mac/svg/custom/recursive-pattern-expected.txt:
    * platform/mac/svg/custom/relative-sized-deep-shadow-tree-content-expected.txt:
    * platform/mac/svg/custom/relative-sized-shadow-tree-content-expected.txt:
    * platform/mac/svg/custom/relative-sized-shadow-tree-content-with-symbol-expected.txt:
    * platform/mac/svg/custom/relative-sized-use-on-symbol-expected.txt:
    * platform/mac/svg/custom/relative-sized-use-without-attributes-on-symbol-expected.txt:
    * platform/mac/svg/custom/struct-use-09-b-expected.txt:
    * platform/mac/svg/custom/use-clipped-hit-expected.txt:
    * platform/mac/svg/custom/use-css-events-expected.txt:
    * platform/mac/svg/custom/use-detach-expected.txt:
    * platform/mac/svg/custom/use-disappears-after-style-update-expected.png:
    * platform/mac/svg/custom/use-disappears-after-style-update-expected.txt:
    * platform/mac/svg/custom/use-dynamic-append-expected.txt:
    * platform/mac/svg/custom/use-elementInstance-event-target-expected.txt:
    * platform/mac/svg/custom/use-elementInstance-methods-expected.txt:
    * platform/mac/svg/custom/use-empty-reference-expected.txt:
    * platform/mac/svg/custom/use-event-handler-on-referenced-element-expected.txt:
    * platform/mac/svg/custom/use-event-handler-on-use-element-expected.txt:
    * platform/mac/svg/custom/use-events-crash-expected.txt:
    * platform/mac/svg/custom/use-font-face-crash-expected.txt:
    * platform/mac/svg/custom/use-instanceRoot-event-bubbling-expected.png:
    * platform/mac/svg/custom/use-instanceRoot-event-listeners-expected.png:
    * platform/mac/svg/custom/use-instanceRoot-modifications-expected.txt:
    * platform/mac/svg/custom/use-modify-container-in-target-expected.txt:
    * platform/mac/svg/custom/use-modify-target-container-expected.txt:
    * platform/mac/svg/custom/use-modify-target-symbol-expected.txt:
    * platform/mac/svg/custom/use-nested-transform-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-1-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-2-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-3-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-4-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-5-expected.txt:
    * platform/mac/svg/custom/use-on-disallowed-foreign-object-6-expected.txt:
    * platform/mac/svg/custom/use-on-g-containing-symbol-expected.txt:
    * platform/mac/svg/custom/use-on-g-containing-use-expected.txt:
    * platform/mac/svg/custom/use-on-g-expected.txt:
    * platform/mac/svg/custom/use-on-non-svg-namespaced-element-expected.txt:
    * platform/mac/svg/custom/use-on-rect-expected.txt:
    * platform/mac/svg/custom/use-on-symbol-expected.txt:
    * platform/mac/svg/custom/use-on-symbol-inside-pattern-expected.txt:
    * platform/mac/svg/custom/use-on-text-expected.txt:
    * platform/mac/svg/custom/use-on-use-expected.txt:
    * platform/mac/svg/custom/use-property-changes-through-dom-expected.txt:
    * platform/mac/svg/custom/use-property-changes-through-svg-dom-expected.txt:
    * platform/mac/svg/custom/use-property-synchronization-crash-expected.txt:
    * platform/mac/svg/custom/use-recalcStyle-crash-expected.txt:
    * platform/mac/svg/custom/use-recursion-1-expected.txt:
    * platform/mac/svg/custom/use-recursion-2-expected.txt:
    * platform/mac/svg/custom/use-recursion-3-expected.txt:
    * platform/mac/svg/custom/use-recursion-4-expected.png:
    * platform/mac/svg/custom/use-recursion-4-expected.txt:
    * platform/mac/svg/custom/use-referencing-nonexisting-symbol-expected.txt:
    * platform/mac/svg/custom/use-symbol-overflow-expected.txt:
    * platform/mac/svg/custom/use-transform-expected.txt:
    * platform/mac/svg/filters/feImage-target-attribute-change-with-use-indirection-2-expected.txt:
    * platform/mac/svg/filters/feImage-target-attribute-change-with-use-indirection-expected.txt:
    * platform/mac/svg/filters/filter-placement-issue-expected.txt:
    * platform/mac/svg/filters/filter-refresh-expected.txt:
    * platform/mac/svg/filters/filter-source-position-expected.txt:
    * platform/mac/svg/hixie/error/014-expected.txt:
    * platform/mac/svg/hixie/error/017-expected.txt:
    * platform/mac/svg/hixie/use/001-expected.txt:
    * platform/mac/svg/hixie/use/002-expected.txt:
    * platform/mac/svg/overflow/overflow-on-inner-svg-element-expected.txt:
    * platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt:
    * platform/mac/svg/stroke/zero-length-path-linecap-rendering-expected.txt:
    * platform/mac/svg/stroke/zero-length-subpaths-linecap-rendering-expected.txt:
    * platform/mac/svg/text/text-gradient-positioning-expected.txt:
    * platform/mac/svg/text/text-path-01-b-expected.txt:
    * platform/mac/svg/text/text-text-04-t-expected.txt:
    * platform/mac/svg/text/text-text-05-t-expected.txt:
    * platform/mac/svg/text/text-text-06-t-expected.txt:
    * platform/mac/svg/transforms/svg-css-transforms-clip-path-expected.txt:
    * platform/mac/svg/zoom/page/zoom-mask-with-percentages-expected.txt:
    * svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.txt:
    * svg/clip-path/clip-path-childs-clipped-expected.txt:
    * svg/clip-path/clip-path-clipped-evenodd-twice-expected.txt:
    * svg/clip-path/clip-path-clipped-expected.txt:
    * svg/clip-path/clip-path-clipped-nonzero-expected.txt:
    * svg/clip-path/clip-path-on-clipped-use-expected.txt:
    * svg/clip-path/clip-path-use-as-child-expected.txt:
    * svg/css/circle-in-mask-with-shadow-expected.txt:
    * svg/custom/deep-dynamic-updates-expected.txt:
    * svg/custom/non-scaling-stroke-expected.txt:
    * svg/custom/resource-client-removal-expected.txt:
    * svg/custom/use-clipped-transform-expected.txt:
    * svg/custom/use-css-no-effect-on-shadow-tree-expected.txt:
    * svg/custom/use-forward-refs-expected.txt:
    * svg/custom/use-image-in-g-expected.txt:
    * svg/custom/use-in-symbol-with-offset-expected.txt:
    * svg/custom/use-inherit-style-expected.txt:
    * svg/custom/use-move-to-offset-expected.txt:
    * svg/custom/use-multiple-on-nested-disallowed-font-expected.txt:
    * svg/custom/use-on-clip-path-with-transformation-expected.txt:
    * svg/custom/use-on-g-containing-foreignObject-and-image-expected.txt:
    * svg/custom/use-setAttribute-crash-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-svg-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-svg1-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-svg2-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-symbol-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-symbol1-expected.txt:
    * svg/custom/use-transfer-width-height-properties-to-symbol2-expected.txt:
    * svg/repaint/inner-svg-change-viewPort-relative-expected.txt:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@109097 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    b418e382