haikuwebkit/LayoutTests/svg/custom/pointer-events-on-rounded-r...

66 lines
1.5 KiB
HTML
Raw Permalink Normal View History

Add new renderer for SVGRectElement. https://bugs.webkit.org/show_bug.cgi?id=65769 Source/WebCore: Reviewed by Nikolas Zimmermann. This patch introduces a new common base class called RenderSVGShape which replaces the RenderSVGPath. This new base class has the same purpose as the replaced class and has specialized descendants for common shapes (like Rectangles and Circles), which allows faster painting of these shapes when certain conditions are fulfilled. On some benchmark programs we have seen 5% speedup. The biggest motivation of this refactor is taking advantage of faster primitive drawing in the most common and frequent cases. However in some rare cases, like painting rounded rects, we need to fallback to the original code path, which is fully kept in the RenderSVGShape base class. Some other cases, like dashed strokes, can be painted but mouse pointer events cannot be handled by the descendant classes. A different fallback mechanism is used in such cases which redirects only the pointer event handling to the base class. Tests: svg/custom/pointer-events-on-rounded-rect.xhtml svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml * CMakeLists.txt: * GNUmakefile.list.am: * WebCore.gypi: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * platform/graphics/FloatRect.cpp: (WebCore::FloatRect::contains): * platform/graphics/FloatRect.h: (WebCore::FloatRect::contains): * rendering/RenderObject.h: (WebCore::RenderObject::isSVGRect): (WebCore::RenderObject::isSVGShape): * rendering/RenderTreeAsText.cpp: (WebCore::write): * rendering/svg/RenderSVGAllInOne.cpp: * rendering/svg/RenderSVGModelObject.cpp: (WebCore::isGraphicsElement): * rendering/svg/RenderSVGPath.cpp: (WebCore::RenderSVGPath::RenderSVGPath): (WebCore::RenderSVGPath::inflateWithStrokeAndMarkerBounds): Unite the markerBounds with strokeBoundingBox. * rendering/svg/RenderSVGPath.h: * rendering/svg/RenderSVGRect.cpp: Added. (WebCore::RenderSVGRect::RenderSVGRect): (WebCore::RenderSVGRect::~RenderSVGRect): (WebCore::RenderSVGRect::createShape): (WebCore::RenderSVGRect::objectBoundingBox): (WebCore::RenderSVGRect::strokeBoundingBox): (WebCore::RenderSVGRect::fillShape): (WebCore::RenderSVGRect::strokeShape): (WebCore::RenderSVGRect::shapeDependentStrokeContains): (WebCore::RenderSVGRect::shapeDependentFillContains): * rendering/svg/RenderSVGRect.h: Added. (WebCore::RenderSVGRect::isSVGRect): (WebCore::RenderSVGRect::renderName): (WebCore::RenderSVGRect::isEmpty): * rendering/svg/RenderSVGResource.h: (WebCore::RenderSVGResource::postApplyResource): A new shape argument was added to allow shape specific faster painting. * rendering/svg/RenderSVGResourceClipper.cpp: (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage): (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect): (WebCore::RenderSVGResourceClipper::hitTestClipContent): * rendering/svg/RenderSVGResourceContainer.cpp: (WebCore::RenderSVGResourceContainer::transformOnNonScalingStroke): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::postApplyResource): * rendering/svg/RenderSVGResourceFilter.h: * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceGradient.h: * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::postApplyResource): * rendering/svg/RenderSVGResourcePattern.h: * rendering/svg/RenderSVGResourceSolidColor.cpp: (WebCore::RenderSVGResourceSolidColor::postApplyResource): * rendering/svg/RenderSVGResourceSolidColor.h: * rendering/svg/RenderSVGShape.cpp: Copied from Source/WebCore/rendering/svg/RenderSVGPath.cpp. (WebCore::RenderSVGShape::RenderSVGShape): (WebCore::RenderSVGShape::~RenderSVGShape): (WebCore::RenderSVGShape::createShape): (WebCore::RenderSVGShape::isEmpty): (WebCore::RenderSVGShape::fillShape): (WebCore::RenderSVGShape::objectBoundingBox): (WebCore::RenderSVGShape::strokeBoundingBox): (WebCore::RenderSVGShape::strokeShape): (WebCore::RenderSVGShape::shapeDependentStrokeContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::shapeDependentFillContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::fillContains): (WebCore::RenderSVGShape::strokeContains): (WebCore::RenderSVGShape::layout): (WebCore::RenderSVGShape::shouldStrokeZeroLengthSubpath): (WebCore::RenderSVGShape::zeroLengthSubpathRect): (WebCore::RenderSVGShape::setupSquareCapPath): (WebCore::RenderSVGShape::setupNonScalingStrokePath): (WebCore::RenderSVGShape::fillAndStrokePath): (WebCore::RenderSVGShape::paint): (WebCore::RenderSVGShape::addFocusRingRects): (WebCore::RenderSVGShape::nodeAtFloatPoint): (WebCore::RenderSVGShape::calculateMarkerBoundsIfNeeded): (WebCore::RenderSVGShape::updateCachedBoundaries): (WebCore::RenderSVGShape::strokeWidth): * rendering/svg/RenderSVGShape.h: Copied from Source/WebCore/rendering/svg/RenderSVGPath.h. (WebCore::BoundingRectStrokeStyleApplier::BoundingRectStrokeStyleApplier): (WebCore::BoundingRectStrokeStyleApplier::strokeStyle): (WebCore::RenderSVGShape::setNeedsShapeUpdate): (WebCore::RenderSVGShape::setNeedsBoundariesUpdate): (WebCore::RenderSVGShape::setNeedsTransformUpdate): (WebCore::RenderSVGShape::isPaintingFallback): (WebCore::RenderSVGShape::path): (WebCore::RenderSVGShape::setIsPaintingFallback): (WebCore::RenderSVGShape::setStrokeAndMarkerBoundingBox): (WebCore::RenderSVGShape::hasPath): (WebCore::RenderSVGShape::repaintRectInLocalCoordinates): (WebCore::RenderSVGShape::localToParentTransform): (WebCore::RenderSVGShape::localTransform): (WebCore::RenderSVGShape::isSVGShape): (WebCore::RenderSVGShape::renderName): (WebCore::RenderSVGShape::isRoundedRect): (WebCore::RenderSVGShape::inflateWithMarkerBounds): (WebCore::toRenderSVGShape): * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::releasePaintingResource): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::finishRenderSVGContent): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::writeStyle): (WebCore::operator<<): (WebCore::write): * rendering/svg/SVGRenderTreeAsText.h: * rendering/svg/SVGTextRunRenderingContext.cpp: (WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): * svg/SVGCircleElement.cpp: (WebCore::SVGCircleElement::svgAttributeChanged): * svg/SVGEllipseElement.cpp: (WebCore::SVGEllipseElement::svgAttributeChanged): * svg/SVGLineElement.cpp: (WebCore::SVGLineElement::svgAttributeChanged): * svg/SVGPathElement.cpp: (WebCore::SVGPathElement::svgAttributeChanged): (WebCore::SVGPathElement::pathSegListChanged): (WebCore::SVGPathElement::createRenderer): * svg/SVGPathElement.h: * svg/SVGPolyElement.cpp: (WebCore::SVGPolyElement::svgAttributeChanged): * svg/SVGRectElement.cpp: (WebCore::SVGRectElement::svgAttributeChanged): (WebCore::SVGRectElement::createRenderer): * svg/SVGRectElement.h: LayoutTests: Add new tests to check the new shape based rendering mechanism of SVGRectElement. Reviewed by Nikolas Zimmermann. * svg/custom/pointer-events-on-rounded-rect-expected.txt: Added. * svg/custom/pointer-events-on-rounded-rect.xhtml: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits-expected.txt: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml: Added. Canonical link: https://commits.webkit.org/89998@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@101517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-11-30 15:49:02 +00:00
<html xmlns='http://www.w3.org/1999/xhtml'>
<body style="margin: 0px; padding: 0px">
<svg xmlns="http://www.w3.org/2000/svg" style="position:absolute;">
<defs>
<style type="text/css"><![CDATA[
rect#roundedRect {
fill: none;
stroke: green;
stroke-width: 20px;
stroke-linejoin: bevel;
}
rect:hover {
stroke: red;
}
]]></style>
</defs>
<rect id="fallback" x="30" y="30" width="420" height="320" fill="yellow" onclick="passed()"/>
<rect id="roundedRect" x="40" y="40" rx="30" ry="30" width="400" height="300" pointer-events="visibleStroke" onclick="failed()"/>
<text id="text" x="30" y="370"></text>
<script type="text/ecmascript">
<![CDATA[
var fallback = document.getElementById("fallback");
var roundedRect = document.getElementById("roundedRect");
var text = document.getElementById("text");
fallback.addEventListener("mousedown", passed, false);
roundedRect.addEventListener("mousedown", failed, false);
function stop() {
fallback.removeEventListener("mousedown", failed, false);
roundedRect.removeEventListener("mousedown", passed, false);
Use testRunner instead of layoutTestController in SVG tests https://bugs.webkit.org/show_bug.cgi?id=92898 Reviewed by Dirk Schulze. * svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg: * svg/animations/animate-beginElementAt.svg: * svg/animations/animate-calcMode-spline-crash-bad-array-length.xhtml: * svg/animations/animate-linear-discrete-additive-b.svg: * svg/animations/animate-linear-discrete-additive-c.svg: * svg/animations/animate-linear-discrete-additive.svg: * svg/animations/animate-list-crash.svg: * svg/animations/animate-setcurrenttime.html: * svg/animations/animate-update-crash.xhtml: * svg/animations/animateColor-additive-2a.svg: * svg/animations/animateColor-additive-2b.svg: * svg/animations/animateColor-additive-2c.svg: * svg/animations/animateColor-additive-2d.svg: * svg/animations/animateMotion-additive-1.svg: * svg/animations/animateMotion-additive-2a.svg: * svg/animations/animateMotion-additive-2b.svg: * svg/animations/animateMotion-additive-2c.svg: * svg/animations/animateMotion-additive-2d.svg: * svg/animations/animateTransform-accumulation.svg: * svg/animations/animateTransform-by-scale-1.svg: * svg/animations/animateTransform-by-scale.svg: * svg/animations/animateTransform-from-by-from-to-comparision-expected.svg: * svg/animations/animateTransform-from-by-from-to-comparision.svg: * svg/animations/animateTransform-from-by-scale-additive-sum.svg: * svg/animations/animateTransform-from-by-scale.svg: * svg/animations/animateTransform-rotate-around-point.svg: * svg/animations/animateTransform-skewX.svg: * svg/animations/animateTransform-skewY.svg: * svg/animations/animateTransform-translate.svg: * svg/animations/dynamic-modify-attributename-crash.svg: * svg/animations/keypoints-mismatch.svg: * svg/animations/length-list-animation.svg: * svg/animations/list-wrapper-assertion.svg: * svg/animations/mozilla/animateMotion-by-1.svg: * svg/animations/mozilla/animateMotion-from-to-1-expected.svg: * svg/animations/mozilla/animateMotion-from-to-1.svg: * svg/animations/mozilla/animateMotion-mpath-pathLength-1.svg: * svg/animations/mozilla/animateMotion-mpath-targetChange-1.svg: * svg/animations/mozilla/animateMotion-to-overridden-1.svg: * svg/animations/multiple-animateTransform-additive-sum.svg: * svg/animations/multiple-begin-animation-discrete.svg: * svg/animations/multiple-begin-animation.svg: * svg/animations/path-animation.svg: * svg/animations/repeatDur-zero.xhtml: * svg/animations/repeating-path-animation.svg: * svg/animations/resources/SVGAnimationTestCase.js: (runAnimationTest): * svg/animations/smil-element-not-removed-crash.html: * svg/animations/smil-element-target-crash-main.html: * svg/animations/smil-leak-dynamically-added-element-instances.svg: * svg/animations/smil-leak-element-instances-noBaseValRef.svg: * svg/animations/smil-leak-element-instances.svg: * svg/animations/smil-leak-elements.svg: * svg/animations/svg-two-animate-elements-crash.svg: * svg/animations/svglength-animation-retarget-crash.html: * svg/animations/svglength-element-removed-crash.svg: * svg/as-background-image/animated-svg-as-background.html: * svg/as-background-image/svg-background-crash-on-refresh.html: * svg/as-image/animated-svg-as-image-no-fixed-intrinsic-size.html: * svg/as-image/animated-svg-as-image-same-image.html: * svg/as-image/animated-svg-as-image.html: * svg/as-image/animated-svg-repaints-completely-in-hidpi.html: * svg/as-image/drag-svg-as-image.html: * svg/as-image/image-respects-deviceScaleFactor.html: * svg/as-image/image-respects-pageScaleFactor-change.html: * svg/as-image/svg-image-leak-cached-data.html: * svg/as-image/svg-image-leak-loader.html: * svg/as-image/svg-nested.html: * svg/as-object/embedded-svg-immediate-offsetWidth-query.html: * svg/as-object/embedded-svg-size-changes-no-layout-triggers.html: * svg/as-object/embedded-svg-size-changes.html: * svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-1.html: * svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-2.html: * svg/as-object/nested-embedded-svg-size-changes.html: * svg/as-object/resources/embedded-svg-size-changes-no-layout-triggers.svg: * svg/as-object/resources/nested-embedded-svg-size-changes-target-no-layout-triggers-1.html: * svg/carto.net/frameless-svg-parse-error.html: * svg/carto.net/window.svg: * svg/css/crash-css-generated-content.xhtml: * svg/css/cursor-image-replace.svg: * svg/css/cursor-replace.svg: * svg/css/getComputedStyle-basic.xhtml: * svg/css/invalid-color-crash.svg: * svg/css/multiple-cursors-crash.html: * svg/css/script-tests/svg-attribute-length-parsing.js: * svg/css/script-tests/svg-attribute-parser-mode.js: * svg/css/style-change-crash.html: * svg/css/svg-ellipse-render-crash.html: * svg/custom/acid3-test-77.html: * svg/custom/anchor-on-use.svg: * svg/custom/animate-disallowed-mask-element.svg: * svg/custom/animate-disallowed-use-element.svg: * svg/custom/animate-path-discrete.svg: * svg/custom/animate-path-morphing.svg: * svg/custom/animate-target-id-changed.svg: * svg/custom/animate-target-removed-from-document.svg: * svg/custom/animate-use-crash.xhtml: * svg/custom/assert-empty-layout-attributes.svg: * svg/custom/bbox-of-g-in-symbol.svg: * svg/custom/boundingBox.html: * svg/custom/bug78700.svg: * svg/custom/bug78807.svg: * svg/custom/bug78838.html: * svg/custom/bug79798.html: * svg/custom/bug86119.html: * svg/custom/bug86392.html: * svg/custom/bug86781.html: * svg/custom/click-internal-anchor-with-use-crash.xhtml: * svg/custom/crash-inline-container-client.html: * svg/custom/crash-text-in-textpath.svg: * svg/custom/crash-textPath-attributes.html: * svg/custom/delete-modified-text-in-defs-crash.svg: * svg/custom/delete-text-crash.html: * svg/custom/delete-text-innerText-crash.html: * svg/custom/detached-outermost-svg-crash.html: * svg/custom/disallowed-text-content-rendering.svg: * svg/custom/display-table-caption-foreignObject.svg: * svg/custom/display-table-caption-inherit-foreignObject.xhtml: * svg/custom/display-table-caption-inherit-text.xhtml: * svg/custom/display-table-caption-text.svg: * svg/custom/element-instance-held-by-js-crash.svg: * svg/custom/embedded-svg-allowed-in-dashboard.xml: * svg/custom/empty-className-baseVal-crash.html: * svg/custom/filter-on-svgimage.svg: * svg/custom/font-face-move.svg: * svg/custom/font-face-name-without-name-attr.svg: * svg/custom/font-face-not-in-document.svg: * svg/custom/font-platformDestroy-crash.svg: * svg/custom/foreignObject-crash-on-hover.xml: * svg/custom/foreignobject-crash-with-absolute-positioned-children.svg: * svg/custom/frame-getSVGDocument.html: * svg/custom/g-outside-svg.html: * svg/custom/get-text-element-transform-crash.html: * svg/custom/getBBox-empty-container.html: * svg/custom/getBBox-js.svg: * svg/custom/getBBox-path.svg: * svg/custom/getBBox-perpendicular-path.svg: * svg/custom/getscreenctm-in-mixed-content2.xhtml: * svg/custom/gradient-attr-update.svg: * svg/custom/gradient-stop-display-none-crash.svg: * svg/custom/hit-test-path-stroke.svg: * svg/custom/hit-test-path.svg: * svg/custom/hit-test-unclosed-subpaths.svg: * svg/custom/hit-test-with-br.xhtml: * svg/custom/image-base-uri.svg: * svg/custom/image-clipped-hit.svg: * svg/custom/image-rescale-scroll.html: * svg/custom/image-with-prefix-in-webarchive-expected.webarchive: * svg/custom/image-with-prefix-in-webarchive.svg: * svg/custom/insertItemBefore-from-non-list-origin.svg: * svg/custom/intersection-list-clipping.svg: * svg/custom/intersection-list-crash.svg: * svg/custom/intersection-list-nested-svg.svg: * svg/custom/intersection-list-null.svg: * svg/custom/invalid-gradient-with-xlink.svg: * svg/custom/invalid-paint-shape-mask.svg: * svg/custom/js-late-clipPath-and-object-creation.svg: * svg/custom/js-late-clipPath-creation.svg: * svg/custom/js-late-gradient-and-object-creation.svg: * svg/custom/js-late-gradient-creation.svg: * svg/custom/js-late-marker-and-object-creation.svg: * svg/custom/js-late-marker-creation.svg: * svg/custom/js-late-mask-and-object-creation.svg: * svg/custom/js-late-mask-creation.svg: * svg/custom/js-late-pattern-and-object-creation.svg: * svg/custom/js-late-pattern-creation.svg: * svg/custom/js-svg-constructors.svg: * svg/custom/js-update-container2.svg: * svg/custom/js-update-image-and-display.svg: * svg/custom/js-update-image-and-display2.svg: * svg/custom/js-update-image-and-display3.svg: * svg/custom/layout-loop.svg: * svg/custom/linking-a-03-b-all.svg: * svg/custom/linking-a-03-b-preserveAspectRatio.svg: * svg/custom/linking-a-03-b-transform.svg: * svg/custom/linking-a-03-b-viewBox-transform.svg: * svg/custom/linking-a-03-b-viewBox.svg: * svg/custom/linking-a-03-b-viewTarget.svg: * svg/custom/linking-a-03-b-zoomAndPan.svg: * svg/custom/linking-uri-01-b.svg: * svg/custom/loadevents-capturing.svg: * svg/custom/loadevents-externalresourcesrequired-displaynone.svg: * svg/custom/loadevents-externalresourcesrequired.svg: * svg/custom/loadevents-normal-displaynone.svg: * svg/custom/loadevents-normal.svg: * svg/custom/manually-parsed-embedded-svg-allowed-in-dashboard.html: * svg/custom/manually-parsed-svg-allowed-in-dashboard.html: * svg/custom/marker-getPropertyValue.svg: * svg/custom/mask-changes.svg: * svg/custom/mask-invalidation.svg: * svg/custom/mouse-move-on-svg-container-standalone.svg: * svg/custom/mouse-move-on-svg-container.xhtml: * svg/custom/mouse-move-on-svg-root-standalone.svg: * svg/custom/mouse-move-on-svg-root.xhtml: * svg/custom/multiple-title-elements.svg: * svg/custom/new-image-is-html-element.svg: * svg/custom/path-getPresentationAttribute-crash.html: * svg/custom/path-getTotalLength-on-big-segment-crash.svg: * svg/custom/path-getTotalLength.svg: * svg/custom/pending-resource-after-removal.xhtml: * svg/custom/pending-resource-leak-2.svg: * svg/custom/pending-resource-leak-3.svg: * svg/custom/pending-resource-leak.svg: * svg/custom/pointer-events-image-css-transform.svg: * svg/custom/pointer-events-image.svg: * svg/custom/pointer-events-invalid-fill.svg: * svg/custom/pointer-events-on-rounded-rect.xhtml: * svg/custom/pointer-events-on-svg-with-pointer.xhtml: * svg/custom/pointer-events-on-svg-without-pointer.xhtml: * svg/custom/pointer-events-text-css-transform.svg: * svg/custom/pointer-events-text.svg: * svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml: * svg/custom/poly-points-attribute-changes.svg: * svg/custom/polyline-hittest.svg: * svg/custom/polyline-points-crash.html: * svg/custom/prevent-default.svg: * svg/custom/recursive-use.svg: * svg/custom/recursive-use2.svg: * svg/custom/repaint-moving-svg-and-div.xhtml: * svg/custom/resource-client-removal.svg: * svg/custom/resources/focus-event-handling-keyboard.js: * svg/custom/resources/focus-event-handling.js: * svg/custom/resources/link-target.html: * svg/custom/resources/linkingCircle-f.svg: * svg/custom/resources/svgsvgelement-ctm.js: * svg/custom/resources/use-instanceRoot-event-bubbling.js: (repaintTest): * svg/custom/resources/use-instanceRoot-event-listeners.js: (repaintTest): * svg/custom/scroll-hit-test.xhtml: * svg/custom/scroll-to-anchor-in-symbol.svg: * svg/custom/scroll-to-svg-element-assertion.html: * svg/custom/scrolling-embedded-svg-file-image-repaint-problem.html: * svg/custom/stop-crash.svg: * svg/custom/stroke-width-click.svg: * svg/custom/svg-allowed-in-dashboard-object.html: * svg/custom/svg-features.html: * svg/custom/svg-fonts-in-html-linebreaks.html: * svg/custom/svg-fonts-no-latin-glyph.html: * svg/custom/svg-getelementid.xhtml: * svg/custom/svg-parse-overflow-1.html: * svg/custom/svg-parse-overflow-2.html: * svg/custom/svg-parse-overflow-3.html: * svg/custom/svg-parse-overflow-4.html: * svg/custom/svg-parse-overflow-5.html: * svg/custom/svg-use-style-float-crash.svg: * svg/custom/svg-width-intrinsic-crash.html: * svg/custom/symbol-viewport-element-crash.svg: * svg/custom/text-node-in-text-invalidated.svg: * svg/custom/text-tref-03-b-dynamic.svg: * svg/custom/text-tref-03-b-dynamic2.svg: * svg/custom/textPath-assert.svg: * svg/custom/textPath-set-id.svg: * svg/custom/tiling-regular-hexagonal-crash.svg: * svg/custom/tref-clone-crash.html: * svg/custom/tref-shadowdom.html: * svg/custom/use-animation-in-fill.html: * svg/custom/use-crash-in-non-wellformed-document.svg: * svg/custom/use-crash-pending-resource.svg: * svg/custom/use-crash-using-children-before-destroy.svg: * svg/custom/use-crash-when-href-change.svg: * svg/custom/use-detach.svg: * svg/custom/use-display-none.svg: * svg/custom/use-elementInstance-event-target.svg: * svg/custom/use-elementInstance-methods.svg: * svg/custom/use-event-handler-on-referenced-element.svg: * svg/custom/use-event-handler-on-use-element.svg: * svg/custom/use-external-crash.svg: * svg/custom/use-instanceRoot-as-event-target.xhtml: * svg/custom/use-instanceRoot-event-listener-liveness.xhtml: * svg/custom/use-instanceRoot-with-use-removed.svg: * svg/custom/use-invalid-font-face.svg: * svg/custom/use-invalid-html.xhtml: * svg/custom/use-invalid-pattern.svg: * svg/custom/use-invalid-style.svg: * svg/custom/use-move-to-offset.svg: * svg/custom/use-multiple-on-nested-disallowed-font.html: * svg/custom/use-mutation-event-crash.svg: * svg/custom/use-nested-children.svg: * svg/custom/use-nested-disallowed-target.svg: * svg/custom/use-nested-missing-target-added.svg: * svg/custom/use-nested-missing-target-removed.svg: * svg/custom/use-nested-missing-target.svg: * svg/custom/use-nested-notarget.svg: * svg/custom/use-non-existing-symbol-crash.svg: * svg/custom/use-on-use-with-child-and-empty-target.svg: * svg/custom/use-on-use-with-child.svg: * svg/custom/use-referencing-style-crash.svg: * svg/custom/use-shadow-root-parent-removal.svg: * svg/custom/use-tref-crash.svg: * svg/custom/webkit-transform-crash.html: * svg/custom/xlink-prefix-in-attributes.html: * svg/custom/xlink-to-invalid-gradient.svg: * svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml: * svg/dom/SVGPolygonElement-baseVal-list-removal-crash.html: * svg/dom/SVGScriptElement/script-async-attr.svg: * svg/dom/SVGScriptElement/script-change-externalResourcesRequired-while-loading.svg: * svg/dom/SVGScriptElement/script-clone-rerun-self.svg: * svg/dom/SVGScriptElement/script-clone-rerun.svg: * svg/dom/SVGScriptElement/script-load-and-error-events.svg: * svg/dom/SVGScriptElement/script-onerror-bubbling.svg: * svg/dom/SVGScriptElement/script-reexecution.svg: * svg/dom/SVGScriptElement/script-set-href.svg: * svg/dom/SVGStyledElement-pendingResource-crash.html: * svg/dom/SVGTransformList-empty-list-consolidation.html: * svg/dom/animated-tearoff-equality.xhtml: * svg/dom/animated-tearoff-lifespan.xhtml: * svg/dom/baseVal-animVal-crash.html: * svg/dom/baseVal-animVal-list-crash.html: * svg/dom/frame-related-api-during-load.html: * svg/dom/parent-view-layout-crash.html: * svg/dom/path-marker-removed-crash.svg: * svg/dom/resources/viewspec-parser.js: (continueFuzzing.else.script.onload): (continueFuzzing): * svg/dom/script-tests/SVGViewSpec.js: (completeTest.script.onload): (completeTest): * svg/dom/smil-methods.svg: * svg/dom/stylesheet-candidate-node-crash-main.html: * svg/dom/svg-element-attribute-js-null.xhtml: * svg/dom/symbol-embeddedAnimation.svg: * svg/dom/use-style-recalc-script-execute-crash.html: * svg/dom/use-transform.svg: * svg/dom/viewport-container-crash.svg: * svg/dom/vkern-element-crash.html: * svg/dynamic-updates/resources/SVGTestCase.js: (createSVGTestCase): (embedSVGTestCase): (completeTest.script.onload): (completeTest): * svg/dynamic-updates/resources/linkTarget.svg: * svg/filters/feBlend-invalid-mode.xhtml: * svg/filters/feColorMatrix-invalid-value.svg: * svg/filters/feComponentTransfer-style-crash.xhtml: * svg/filters/feDisplacementMap-crash-test.xhtml: * svg/filters/feImage-animated-transform-on-target-rect.svg: * svg/filters/feImage-target-reappend-to-document.svg: * svg/filters/feImage-zero-size-crash.svg: * svg/filters/feMorphology-invalid-radius.svg: * svg/filters/feMorphology-zero-radius.svg: * svg/filters/filter-after-transform-crash.svg: * svg/filters/reparent-animated-filter-target.html: * svg/filters/svg-transform-blur-crash.svg: * svg/foreignObject/absolute-position-foreign-object-child-crash.html: * svg/foreignObject/fO-fixed-position-crash.html: * svg/hittest/foreign-object-background.svg: * svg/hittest/svg-ellipse-non-scale-stroke.xhtml: * svg/hittest/svg-ellipse-rect-stroke.xhtml: * svg/hittest/svg-ellipse.xhtml: * svg/hittest/svg-inside-display-table.xhtml: * svg/hittest/svg-inside-table.xhtml: * svg/hittest/svg-padding.xhtml: * svg/hittest/svg-shapes-non-scale-stroke.html: * svg/hittest/svg-small-path.xhtml: * svg/hittest/svg-small-viewbox.xhtml: * svg/hittest/zero-length-butt-cap-path.xhtml: * svg/hittest/zero-length-round-cap-path.xhtml: * svg/hittest/zero-length-square-cap-path.xhtml: * svg/hixie/dynamic/001.xml: * svg/hixie/links/003.xml: * svg/hixie/perf/001.xml: * svg/hixie/perf/002.xml: * svg/hixie/perf/003.xml: * svg/hixie/perf/004.xml: * svg/hixie/perf/005.xml: * svg/hixie/perf/006.xml: * svg/hixie/perf/007.xml: * svg/in-html/script-external.html: * svg/in-html/script-nested.html: * svg/in-html/script-write.html: * svg/in-html/script.html: * svg/in-html/svg-assert-failure-percentage.html: * svg/path-arc-invalid.html: * svg/repaint/filter-repaint.svg: * svg/repaint/image-href-change.svg: * svg/repaint/image-with-clip-path.svg: * svg/repaint/repainting-after-animation-element-removal.svg: * svg/text/add-tspan-position-bug.html: * svg/text/caret-in-svg-text.xhtml: * svg/text/clear-floats-crash.svg: * svg/text/font-size-null-assertion.svg: * svg/text/font-size-too-large-crash.svg: * svg/text/foreignObject-text-clipping-bug.xml: * svg/text/glyphref-renderer-create-crash.html: * svg/text/highcharts-assertion.html: * svg/text/inline-text-destroy-attributes-crash.xhtml: * svg/text/modify-tspan-position-bug.html: * svg/text/resources/SelectionTestCase.js: * svg/text/select-text-svgfont.html: * svg/text/selection-doubleclick.svg: * svg/text/selection-tripleclick.svg: * svg/text/svg-rtl-text-crash.html: * svg/text/svg-zoom-large-value.xhtml: * svg/text/text-align-01-b.svg: * svg/text/text-align-02-b.svg: * svg/text/text-align-03-b.svg: * svg/text/text-align-04-b.svg: * svg/text/text-align-05-b.svg: * svg/text/text-align-06-b.svg: * svg/text/text-altglyph-01-b.svg: * svg/text/text-assert.svg: * svg/text/text-block-child-crash.xhtml: * svg/text/text-deco-01-b.svg: * svg/text/text-font-anonymous-parent.xhtml: * svg/text/text-font-invalid.html: * svg/text/text-font-uri-invalid.svg: * svg/text/text-fonts-01-t.svg: * svg/text/text-fonts-02-t.svg: * svg/text/text-intro-05-t.svg: * svg/text/text-path-01-b.svg: * svg/text/text-positioning-remove-child-crash.svg: * svg/text/text-property-with-display-none.html: * svg/text/text-spacing-01-b.svg: * svg/text/text-style-invalid.svg: * svg/text/text-style-recalc-crash.html: * svg/text/text-text-01-b.svg: * svg/text/text-text-03-b.svg: * svg/text/text-text-04-t.svg: * svg/text/text-text-05-t.svg: * svg/text/text-text-06-t.svg: * svg/text/text-text-07-t.svg: * svg/text/text-text-08-b.svg: * svg/text/text-tref-01-b.svg: * svg/text/text-tselect-01-b.svg: * svg/text/text-tselect-02-f.svg: * svg/text/text-tspan-01-b.svg: * svg/text/text-ws-01-t.svg: * svg/text/text-ws-02-t.svg: * svg/text/textPathBoundsBug.svg: * svg/text/textpath-reference-crash.html: * svg/text/tref-event-listener-crash.svg: * svg/text/tspan-getComputedTextLength.svg: * svg/transforms/percent-transform-values.xhtml: * svg/transforms/transform-origin-presentation-attribute.xhtml: * svg/webarchive/svg-cursor-subresources-expected.webarchive: * svg/webarchive/svg-cursor-subresources.svg: * svg/webarchive/svg-feimage-subresources-expected.webarchive: * svg/webarchive/svg-feimage-subresources.svg: * svg/webarchive/svg-script-subresouces-expected.webarchive: * svg/webarchive/svg-script-subresouces.svg: * svg/zoom/page/zoom-getBoundingClientRect.xhtml: * svg/zoom/page/zoom-zoom-coords.xhtml: * svg/zoom/resources/testPageZoom.js: (repaintTest): (completeDynamicTest.script.onload): (completeDynamicTest): * svg/zoom/resources/testTextZoom.js: (repaintTest): Canonical link: https://commits.webkit.org/110751@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@124380 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-08-01 23:05:16 +00:00
if (window.testRunner)
testRunner.notifyDone();
Add new renderer for SVGRectElement. https://bugs.webkit.org/show_bug.cgi?id=65769 Source/WebCore: Reviewed by Nikolas Zimmermann. This patch introduces a new common base class called RenderSVGShape which replaces the RenderSVGPath. This new base class has the same purpose as the replaced class and has specialized descendants for common shapes (like Rectangles and Circles), which allows faster painting of these shapes when certain conditions are fulfilled. On some benchmark programs we have seen 5% speedup. The biggest motivation of this refactor is taking advantage of faster primitive drawing in the most common and frequent cases. However in some rare cases, like painting rounded rects, we need to fallback to the original code path, which is fully kept in the RenderSVGShape base class. Some other cases, like dashed strokes, can be painted but mouse pointer events cannot be handled by the descendant classes. A different fallback mechanism is used in such cases which redirects only the pointer event handling to the base class. Tests: svg/custom/pointer-events-on-rounded-rect.xhtml svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml * CMakeLists.txt: * GNUmakefile.list.am: * WebCore.gypi: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * platform/graphics/FloatRect.cpp: (WebCore::FloatRect::contains): * platform/graphics/FloatRect.h: (WebCore::FloatRect::contains): * rendering/RenderObject.h: (WebCore::RenderObject::isSVGRect): (WebCore::RenderObject::isSVGShape): * rendering/RenderTreeAsText.cpp: (WebCore::write): * rendering/svg/RenderSVGAllInOne.cpp: * rendering/svg/RenderSVGModelObject.cpp: (WebCore::isGraphicsElement): * rendering/svg/RenderSVGPath.cpp: (WebCore::RenderSVGPath::RenderSVGPath): (WebCore::RenderSVGPath::inflateWithStrokeAndMarkerBounds): Unite the markerBounds with strokeBoundingBox. * rendering/svg/RenderSVGPath.h: * rendering/svg/RenderSVGRect.cpp: Added. (WebCore::RenderSVGRect::RenderSVGRect): (WebCore::RenderSVGRect::~RenderSVGRect): (WebCore::RenderSVGRect::createShape): (WebCore::RenderSVGRect::objectBoundingBox): (WebCore::RenderSVGRect::strokeBoundingBox): (WebCore::RenderSVGRect::fillShape): (WebCore::RenderSVGRect::strokeShape): (WebCore::RenderSVGRect::shapeDependentStrokeContains): (WebCore::RenderSVGRect::shapeDependentFillContains): * rendering/svg/RenderSVGRect.h: Added. (WebCore::RenderSVGRect::isSVGRect): (WebCore::RenderSVGRect::renderName): (WebCore::RenderSVGRect::isEmpty): * rendering/svg/RenderSVGResource.h: (WebCore::RenderSVGResource::postApplyResource): A new shape argument was added to allow shape specific faster painting. * rendering/svg/RenderSVGResourceClipper.cpp: (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage): (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect): (WebCore::RenderSVGResourceClipper::hitTestClipContent): * rendering/svg/RenderSVGResourceContainer.cpp: (WebCore::RenderSVGResourceContainer::transformOnNonScalingStroke): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::postApplyResource): * rendering/svg/RenderSVGResourceFilter.h: * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceGradient.h: * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::postApplyResource): * rendering/svg/RenderSVGResourcePattern.h: * rendering/svg/RenderSVGResourceSolidColor.cpp: (WebCore::RenderSVGResourceSolidColor::postApplyResource): * rendering/svg/RenderSVGResourceSolidColor.h: * rendering/svg/RenderSVGShape.cpp: Copied from Source/WebCore/rendering/svg/RenderSVGPath.cpp. (WebCore::RenderSVGShape::RenderSVGShape): (WebCore::RenderSVGShape::~RenderSVGShape): (WebCore::RenderSVGShape::createShape): (WebCore::RenderSVGShape::isEmpty): (WebCore::RenderSVGShape::fillShape): (WebCore::RenderSVGShape::objectBoundingBox): (WebCore::RenderSVGShape::strokeBoundingBox): (WebCore::RenderSVGShape::strokeShape): (WebCore::RenderSVGShape::shapeDependentStrokeContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::shapeDependentFillContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::fillContains): (WebCore::RenderSVGShape::strokeContains): (WebCore::RenderSVGShape::layout): (WebCore::RenderSVGShape::shouldStrokeZeroLengthSubpath): (WebCore::RenderSVGShape::zeroLengthSubpathRect): (WebCore::RenderSVGShape::setupSquareCapPath): (WebCore::RenderSVGShape::setupNonScalingStrokePath): (WebCore::RenderSVGShape::fillAndStrokePath): (WebCore::RenderSVGShape::paint): (WebCore::RenderSVGShape::addFocusRingRects): (WebCore::RenderSVGShape::nodeAtFloatPoint): (WebCore::RenderSVGShape::calculateMarkerBoundsIfNeeded): (WebCore::RenderSVGShape::updateCachedBoundaries): (WebCore::RenderSVGShape::strokeWidth): * rendering/svg/RenderSVGShape.h: Copied from Source/WebCore/rendering/svg/RenderSVGPath.h. (WebCore::BoundingRectStrokeStyleApplier::BoundingRectStrokeStyleApplier): (WebCore::BoundingRectStrokeStyleApplier::strokeStyle): (WebCore::RenderSVGShape::setNeedsShapeUpdate): (WebCore::RenderSVGShape::setNeedsBoundariesUpdate): (WebCore::RenderSVGShape::setNeedsTransformUpdate): (WebCore::RenderSVGShape::isPaintingFallback): (WebCore::RenderSVGShape::path): (WebCore::RenderSVGShape::setIsPaintingFallback): (WebCore::RenderSVGShape::setStrokeAndMarkerBoundingBox): (WebCore::RenderSVGShape::hasPath): (WebCore::RenderSVGShape::repaintRectInLocalCoordinates): (WebCore::RenderSVGShape::localToParentTransform): (WebCore::RenderSVGShape::localTransform): (WebCore::RenderSVGShape::isSVGShape): (WebCore::RenderSVGShape::renderName): (WebCore::RenderSVGShape::isRoundedRect): (WebCore::RenderSVGShape::inflateWithMarkerBounds): (WebCore::toRenderSVGShape): * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::releasePaintingResource): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::finishRenderSVGContent): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::writeStyle): (WebCore::operator<<): (WebCore::write): * rendering/svg/SVGRenderTreeAsText.h: * rendering/svg/SVGTextRunRenderingContext.cpp: (WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): * svg/SVGCircleElement.cpp: (WebCore::SVGCircleElement::svgAttributeChanged): * svg/SVGEllipseElement.cpp: (WebCore::SVGEllipseElement::svgAttributeChanged): * svg/SVGLineElement.cpp: (WebCore::SVGLineElement::svgAttributeChanged): * svg/SVGPathElement.cpp: (WebCore::SVGPathElement::svgAttributeChanged): (WebCore::SVGPathElement::pathSegListChanged): (WebCore::SVGPathElement::createRenderer): * svg/SVGPathElement.h: * svg/SVGPolyElement.cpp: (WebCore::SVGPolyElement::svgAttributeChanged): * svg/SVGRectElement.cpp: (WebCore::SVGRectElement::svgAttributeChanged): (WebCore::SVGRectElement::createRenderer): * svg/SVGRectElement.h: LayoutTests: Add new tests to check the new shape based rendering mechanism of SVGRectElement. Reviewed by Nikolas Zimmermann. * svg/custom/pointer-events-on-rounded-rect-expected.txt: Added. * svg/custom/pointer-events-on-rounded-rect.xhtml: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits-expected.txt: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml: Added. Canonical link: https://commits.webkit.org/89998@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@101517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-11-30 15:49:02 +00:00
}
function failed() {
text.textContent = 'FAILED: strokeRect had pointer';
stop();
}
function passed() {
text.textContent = 'PASSED: fallbackRect had pointer';
stop();
}
Use testRunner instead of layoutTestController in SVG tests https://bugs.webkit.org/show_bug.cgi?id=92898 Reviewed by Dirk Schulze. * svg/W3C-SVG-1.1-SE/paths-dom-02-f.svg: * svg/animations/animate-beginElementAt.svg: * svg/animations/animate-calcMode-spline-crash-bad-array-length.xhtml: * svg/animations/animate-linear-discrete-additive-b.svg: * svg/animations/animate-linear-discrete-additive-c.svg: * svg/animations/animate-linear-discrete-additive.svg: * svg/animations/animate-list-crash.svg: * svg/animations/animate-setcurrenttime.html: * svg/animations/animate-update-crash.xhtml: * svg/animations/animateColor-additive-2a.svg: * svg/animations/animateColor-additive-2b.svg: * svg/animations/animateColor-additive-2c.svg: * svg/animations/animateColor-additive-2d.svg: * svg/animations/animateMotion-additive-1.svg: * svg/animations/animateMotion-additive-2a.svg: * svg/animations/animateMotion-additive-2b.svg: * svg/animations/animateMotion-additive-2c.svg: * svg/animations/animateMotion-additive-2d.svg: * svg/animations/animateTransform-accumulation.svg: * svg/animations/animateTransform-by-scale-1.svg: * svg/animations/animateTransform-by-scale.svg: * svg/animations/animateTransform-from-by-from-to-comparision-expected.svg: * svg/animations/animateTransform-from-by-from-to-comparision.svg: * svg/animations/animateTransform-from-by-scale-additive-sum.svg: * svg/animations/animateTransform-from-by-scale.svg: * svg/animations/animateTransform-rotate-around-point.svg: * svg/animations/animateTransform-skewX.svg: * svg/animations/animateTransform-skewY.svg: * svg/animations/animateTransform-translate.svg: * svg/animations/dynamic-modify-attributename-crash.svg: * svg/animations/keypoints-mismatch.svg: * svg/animations/length-list-animation.svg: * svg/animations/list-wrapper-assertion.svg: * svg/animations/mozilla/animateMotion-by-1.svg: * svg/animations/mozilla/animateMotion-from-to-1-expected.svg: * svg/animations/mozilla/animateMotion-from-to-1.svg: * svg/animations/mozilla/animateMotion-mpath-pathLength-1.svg: * svg/animations/mozilla/animateMotion-mpath-targetChange-1.svg: * svg/animations/mozilla/animateMotion-to-overridden-1.svg: * svg/animations/multiple-animateTransform-additive-sum.svg: * svg/animations/multiple-begin-animation-discrete.svg: * svg/animations/multiple-begin-animation.svg: * svg/animations/path-animation.svg: * svg/animations/repeatDur-zero.xhtml: * svg/animations/repeating-path-animation.svg: * svg/animations/resources/SVGAnimationTestCase.js: (runAnimationTest): * svg/animations/smil-element-not-removed-crash.html: * svg/animations/smil-element-target-crash-main.html: * svg/animations/smil-leak-dynamically-added-element-instances.svg: * svg/animations/smil-leak-element-instances-noBaseValRef.svg: * svg/animations/smil-leak-element-instances.svg: * svg/animations/smil-leak-elements.svg: * svg/animations/svg-two-animate-elements-crash.svg: * svg/animations/svglength-animation-retarget-crash.html: * svg/animations/svglength-element-removed-crash.svg: * svg/as-background-image/animated-svg-as-background.html: * svg/as-background-image/svg-background-crash-on-refresh.html: * svg/as-image/animated-svg-as-image-no-fixed-intrinsic-size.html: * svg/as-image/animated-svg-as-image-same-image.html: * svg/as-image/animated-svg-as-image.html: * svg/as-image/animated-svg-repaints-completely-in-hidpi.html: * svg/as-image/drag-svg-as-image.html: * svg/as-image/image-respects-deviceScaleFactor.html: * svg/as-image/image-respects-pageScaleFactor-change.html: * svg/as-image/svg-image-leak-cached-data.html: * svg/as-image/svg-image-leak-loader.html: * svg/as-image/svg-nested.html: * svg/as-object/embedded-svg-immediate-offsetWidth-query.html: * svg/as-object/embedded-svg-size-changes-no-layout-triggers.html: * svg/as-object/embedded-svg-size-changes.html: * svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-1.html: * svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-2.html: * svg/as-object/nested-embedded-svg-size-changes.html: * svg/as-object/resources/embedded-svg-size-changes-no-layout-triggers.svg: * svg/as-object/resources/nested-embedded-svg-size-changes-target-no-layout-triggers-1.html: * svg/carto.net/frameless-svg-parse-error.html: * svg/carto.net/window.svg: * svg/css/crash-css-generated-content.xhtml: * svg/css/cursor-image-replace.svg: * svg/css/cursor-replace.svg: * svg/css/getComputedStyle-basic.xhtml: * svg/css/invalid-color-crash.svg: * svg/css/multiple-cursors-crash.html: * svg/css/script-tests/svg-attribute-length-parsing.js: * svg/css/script-tests/svg-attribute-parser-mode.js: * svg/css/style-change-crash.html: * svg/css/svg-ellipse-render-crash.html: * svg/custom/acid3-test-77.html: * svg/custom/anchor-on-use.svg: * svg/custom/animate-disallowed-mask-element.svg: * svg/custom/animate-disallowed-use-element.svg: * svg/custom/animate-path-discrete.svg: * svg/custom/animate-path-morphing.svg: * svg/custom/animate-target-id-changed.svg: * svg/custom/animate-target-removed-from-document.svg: * svg/custom/animate-use-crash.xhtml: * svg/custom/assert-empty-layout-attributes.svg: * svg/custom/bbox-of-g-in-symbol.svg: * svg/custom/boundingBox.html: * svg/custom/bug78700.svg: * svg/custom/bug78807.svg: * svg/custom/bug78838.html: * svg/custom/bug79798.html: * svg/custom/bug86119.html: * svg/custom/bug86392.html: * svg/custom/bug86781.html: * svg/custom/click-internal-anchor-with-use-crash.xhtml: * svg/custom/crash-inline-container-client.html: * svg/custom/crash-text-in-textpath.svg: * svg/custom/crash-textPath-attributes.html: * svg/custom/delete-modified-text-in-defs-crash.svg: * svg/custom/delete-text-crash.html: * svg/custom/delete-text-innerText-crash.html: * svg/custom/detached-outermost-svg-crash.html: * svg/custom/disallowed-text-content-rendering.svg: * svg/custom/display-table-caption-foreignObject.svg: * svg/custom/display-table-caption-inherit-foreignObject.xhtml: * svg/custom/display-table-caption-inherit-text.xhtml: * svg/custom/display-table-caption-text.svg: * svg/custom/element-instance-held-by-js-crash.svg: * svg/custom/embedded-svg-allowed-in-dashboard.xml: * svg/custom/empty-className-baseVal-crash.html: * svg/custom/filter-on-svgimage.svg: * svg/custom/font-face-move.svg: * svg/custom/font-face-name-without-name-attr.svg: * svg/custom/font-face-not-in-document.svg: * svg/custom/font-platformDestroy-crash.svg: * svg/custom/foreignObject-crash-on-hover.xml: * svg/custom/foreignobject-crash-with-absolute-positioned-children.svg: * svg/custom/frame-getSVGDocument.html: * svg/custom/g-outside-svg.html: * svg/custom/get-text-element-transform-crash.html: * svg/custom/getBBox-empty-container.html: * svg/custom/getBBox-js.svg: * svg/custom/getBBox-path.svg: * svg/custom/getBBox-perpendicular-path.svg: * svg/custom/getscreenctm-in-mixed-content2.xhtml: * svg/custom/gradient-attr-update.svg: * svg/custom/gradient-stop-display-none-crash.svg: * svg/custom/hit-test-path-stroke.svg: * svg/custom/hit-test-path.svg: * svg/custom/hit-test-unclosed-subpaths.svg: * svg/custom/hit-test-with-br.xhtml: * svg/custom/image-base-uri.svg: * svg/custom/image-clipped-hit.svg: * svg/custom/image-rescale-scroll.html: * svg/custom/image-with-prefix-in-webarchive-expected.webarchive: * svg/custom/image-with-prefix-in-webarchive.svg: * svg/custom/insertItemBefore-from-non-list-origin.svg: * svg/custom/intersection-list-clipping.svg: * svg/custom/intersection-list-crash.svg: * svg/custom/intersection-list-nested-svg.svg: * svg/custom/intersection-list-null.svg: * svg/custom/invalid-gradient-with-xlink.svg: * svg/custom/invalid-paint-shape-mask.svg: * svg/custom/js-late-clipPath-and-object-creation.svg: * svg/custom/js-late-clipPath-creation.svg: * svg/custom/js-late-gradient-and-object-creation.svg: * svg/custom/js-late-gradient-creation.svg: * svg/custom/js-late-marker-and-object-creation.svg: * svg/custom/js-late-marker-creation.svg: * svg/custom/js-late-mask-and-object-creation.svg: * svg/custom/js-late-mask-creation.svg: * svg/custom/js-late-pattern-and-object-creation.svg: * svg/custom/js-late-pattern-creation.svg: * svg/custom/js-svg-constructors.svg: * svg/custom/js-update-container2.svg: * svg/custom/js-update-image-and-display.svg: * svg/custom/js-update-image-and-display2.svg: * svg/custom/js-update-image-and-display3.svg: * svg/custom/layout-loop.svg: * svg/custom/linking-a-03-b-all.svg: * svg/custom/linking-a-03-b-preserveAspectRatio.svg: * svg/custom/linking-a-03-b-transform.svg: * svg/custom/linking-a-03-b-viewBox-transform.svg: * svg/custom/linking-a-03-b-viewBox.svg: * svg/custom/linking-a-03-b-viewTarget.svg: * svg/custom/linking-a-03-b-zoomAndPan.svg: * svg/custom/linking-uri-01-b.svg: * svg/custom/loadevents-capturing.svg: * svg/custom/loadevents-externalresourcesrequired-displaynone.svg: * svg/custom/loadevents-externalresourcesrequired.svg: * svg/custom/loadevents-normal-displaynone.svg: * svg/custom/loadevents-normal.svg: * svg/custom/manually-parsed-embedded-svg-allowed-in-dashboard.html: * svg/custom/manually-parsed-svg-allowed-in-dashboard.html: * svg/custom/marker-getPropertyValue.svg: * svg/custom/mask-changes.svg: * svg/custom/mask-invalidation.svg: * svg/custom/mouse-move-on-svg-container-standalone.svg: * svg/custom/mouse-move-on-svg-container.xhtml: * svg/custom/mouse-move-on-svg-root-standalone.svg: * svg/custom/mouse-move-on-svg-root.xhtml: * svg/custom/multiple-title-elements.svg: * svg/custom/new-image-is-html-element.svg: * svg/custom/path-getPresentationAttribute-crash.html: * svg/custom/path-getTotalLength-on-big-segment-crash.svg: * svg/custom/path-getTotalLength.svg: * svg/custom/pending-resource-after-removal.xhtml: * svg/custom/pending-resource-leak-2.svg: * svg/custom/pending-resource-leak-3.svg: * svg/custom/pending-resource-leak.svg: * svg/custom/pointer-events-image-css-transform.svg: * svg/custom/pointer-events-image.svg: * svg/custom/pointer-events-invalid-fill.svg: * svg/custom/pointer-events-on-rounded-rect.xhtml: * svg/custom/pointer-events-on-svg-with-pointer.xhtml: * svg/custom/pointer-events-on-svg-without-pointer.xhtml: * svg/custom/pointer-events-text-css-transform.svg: * svg/custom/pointer-events-text.svg: * svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml: * svg/custom/poly-points-attribute-changes.svg: * svg/custom/polyline-hittest.svg: * svg/custom/polyline-points-crash.html: * svg/custom/prevent-default.svg: * svg/custom/recursive-use.svg: * svg/custom/recursive-use2.svg: * svg/custom/repaint-moving-svg-and-div.xhtml: * svg/custom/resource-client-removal.svg: * svg/custom/resources/focus-event-handling-keyboard.js: * svg/custom/resources/focus-event-handling.js: * svg/custom/resources/link-target.html: * svg/custom/resources/linkingCircle-f.svg: * svg/custom/resources/svgsvgelement-ctm.js: * svg/custom/resources/use-instanceRoot-event-bubbling.js: (repaintTest): * svg/custom/resources/use-instanceRoot-event-listeners.js: (repaintTest): * svg/custom/scroll-hit-test.xhtml: * svg/custom/scroll-to-anchor-in-symbol.svg: * svg/custom/scroll-to-svg-element-assertion.html: * svg/custom/scrolling-embedded-svg-file-image-repaint-problem.html: * svg/custom/stop-crash.svg: * svg/custom/stroke-width-click.svg: * svg/custom/svg-allowed-in-dashboard-object.html: * svg/custom/svg-features.html: * svg/custom/svg-fonts-in-html-linebreaks.html: * svg/custom/svg-fonts-no-latin-glyph.html: * svg/custom/svg-getelementid.xhtml: * svg/custom/svg-parse-overflow-1.html: * svg/custom/svg-parse-overflow-2.html: * svg/custom/svg-parse-overflow-3.html: * svg/custom/svg-parse-overflow-4.html: * svg/custom/svg-parse-overflow-5.html: * svg/custom/svg-use-style-float-crash.svg: * svg/custom/svg-width-intrinsic-crash.html: * svg/custom/symbol-viewport-element-crash.svg: * svg/custom/text-node-in-text-invalidated.svg: * svg/custom/text-tref-03-b-dynamic.svg: * svg/custom/text-tref-03-b-dynamic2.svg: * svg/custom/textPath-assert.svg: * svg/custom/textPath-set-id.svg: * svg/custom/tiling-regular-hexagonal-crash.svg: * svg/custom/tref-clone-crash.html: * svg/custom/tref-shadowdom.html: * svg/custom/use-animation-in-fill.html: * svg/custom/use-crash-in-non-wellformed-document.svg: * svg/custom/use-crash-pending-resource.svg: * svg/custom/use-crash-using-children-before-destroy.svg: * svg/custom/use-crash-when-href-change.svg: * svg/custom/use-detach.svg: * svg/custom/use-display-none.svg: * svg/custom/use-elementInstance-event-target.svg: * svg/custom/use-elementInstance-methods.svg: * svg/custom/use-event-handler-on-referenced-element.svg: * svg/custom/use-event-handler-on-use-element.svg: * svg/custom/use-external-crash.svg: * svg/custom/use-instanceRoot-as-event-target.xhtml: * svg/custom/use-instanceRoot-event-listener-liveness.xhtml: * svg/custom/use-instanceRoot-with-use-removed.svg: * svg/custom/use-invalid-font-face.svg: * svg/custom/use-invalid-html.xhtml: * svg/custom/use-invalid-pattern.svg: * svg/custom/use-invalid-style.svg: * svg/custom/use-move-to-offset.svg: * svg/custom/use-multiple-on-nested-disallowed-font.html: * svg/custom/use-mutation-event-crash.svg: * svg/custom/use-nested-children.svg: * svg/custom/use-nested-disallowed-target.svg: * svg/custom/use-nested-missing-target-added.svg: * svg/custom/use-nested-missing-target-removed.svg: * svg/custom/use-nested-missing-target.svg: * svg/custom/use-nested-notarget.svg: * svg/custom/use-non-existing-symbol-crash.svg: * svg/custom/use-on-use-with-child-and-empty-target.svg: * svg/custom/use-on-use-with-child.svg: * svg/custom/use-referencing-style-crash.svg: * svg/custom/use-shadow-root-parent-removal.svg: * svg/custom/use-tref-crash.svg: * svg/custom/webkit-transform-crash.html: * svg/custom/xlink-prefix-in-attributes.html: * svg/custom/xlink-to-invalid-gradient.svg: * svg/dom/SVGPathSegList-xml-dom-synchronization.xhtml: * svg/dom/SVGPolygonElement-baseVal-list-removal-crash.html: * svg/dom/SVGScriptElement/script-async-attr.svg: * svg/dom/SVGScriptElement/script-change-externalResourcesRequired-while-loading.svg: * svg/dom/SVGScriptElement/script-clone-rerun-self.svg: * svg/dom/SVGScriptElement/script-clone-rerun.svg: * svg/dom/SVGScriptElement/script-load-and-error-events.svg: * svg/dom/SVGScriptElement/script-onerror-bubbling.svg: * svg/dom/SVGScriptElement/script-reexecution.svg: * svg/dom/SVGScriptElement/script-set-href.svg: * svg/dom/SVGStyledElement-pendingResource-crash.html: * svg/dom/SVGTransformList-empty-list-consolidation.html: * svg/dom/animated-tearoff-equality.xhtml: * svg/dom/animated-tearoff-lifespan.xhtml: * svg/dom/baseVal-animVal-crash.html: * svg/dom/baseVal-animVal-list-crash.html: * svg/dom/frame-related-api-during-load.html: * svg/dom/parent-view-layout-crash.html: * svg/dom/path-marker-removed-crash.svg: * svg/dom/resources/viewspec-parser.js: (continueFuzzing.else.script.onload): (continueFuzzing): * svg/dom/script-tests/SVGViewSpec.js: (completeTest.script.onload): (completeTest): * svg/dom/smil-methods.svg: * svg/dom/stylesheet-candidate-node-crash-main.html: * svg/dom/svg-element-attribute-js-null.xhtml: * svg/dom/symbol-embeddedAnimation.svg: * svg/dom/use-style-recalc-script-execute-crash.html: * svg/dom/use-transform.svg: * svg/dom/viewport-container-crash.svg: * svg/dom/vkern-element-crash.html: * svg/dynamic-updates/resources/SVGTestCase.js: (createSVGTestCase): (embedSVGTestCase): (completeTest.script.onload): (completeTest): * svg/dynamic-updates/resources/linkTarget.svg: * svg/filters/feBlend-invalid-mode.xhtml: * svg/filters/feColorMatrix-invalid-value.svg: * svg/filters/feComponentTransfer-style-crash.xhtml: * svg/filters/feDisplacementMap-crash-test.xhtml: * svg/filters/feImage-animated-transform-on-target-rect.svg: * svg/filters/feImage-target-reappend-to-document.svg: * svg/filters/feImage-zero-size-crash.svg: * svg/filters/feMorphology-invalid-radius.svg: * svg/filters/feMorphology-zero-radius.svg: * svg/filters/filter-after-transform-crash.svg: * svg/filters/reparent-animated-filter-target.html: * svg/filters/svg-transform-blur-crash.svg: * svg/foreignObject/absolute-position-foreign-object-child-crash.html: * svg/foreignObject/fO-fixed-position-crash.html: * svg/hittest/foreign-object-background.svg: * svg/hittest/svg-ellipse-non-scale-stroke.xhtml: * svg/hittest/svg-ellipse-rect-stroke.xhtml: * svg/hittest/svg-ellipse.xhtml: * svg/hittest/svg-inside-display-table.xhtml: * svg/hittest/svg-inside-table.xhtml: * svg/hittest/svg-padding.xhtml: * svg/hittest/svg-shapes-non-scale-stroke.html: * svg/hittest/svg-small-path.xhtml: * svg/hittest/svg-small-viewbox.xhtml: * svg/hittest/zero-length-butt-cap-path.xhtml: * svg/hittest/zero-length-round-cap-path.xhtml: * svg/hittest/zero-length-square-cap-path.xhtml: * svg/hixie/dynamic/001.xml: * svg/hixie/links/003.xml: * svg/hixie/perf/001.xml: * svg/hixie/perf/002.xml: * svg/hixie/perf/003.xml: * svg/hixie/perf/004.xml: * svg/hixie/perf/005.xml: * svg/hixie/perf/006.xml: * svg/hixie/perf/007.xml: * svg/in-html/script-external.html: * svg/in-html/script-nested.html: * svg/in-html/script-write.html: * svg/in-html/script.html: * svg/in-html/svg-assert-failure-percentage.html: * svg/path-arc-invalid.html: * svg/repaint/filter-repaint.svg: * svg/repaint/image-href-change.svg: * svg/repaint/image-with-clip-path.svg: * svg/repaint/repainting-after-animation-element-removal.svg: * svg/text/add-tspan-position-bug.html: * svg/text/caret-in-svg-text.xhtml: * svg/text/clear-floats-crash.svg: * svg/text/font-size-null-assertion.svg: * svg/text/font-size-too-large-crash.svg: * svg/text/foreignObject-text-clipping-bug.xml: * svg/text/glyphref-renderer-create-crash.html: * svg/text/highcharts-assertion.html: * svg/text/inline-text-destroy-attributes-crash.xhtml: * svg/text/modify-tspan-position-bug.html: * svg/text/resources/SelectionTestCase.js: * svg/text/select-text-svgfont.html: * svg/text/selection-doubleclick.svg: * svg/text/selection-tripleclick.svg: * svg/text/svg-rtl-text-crash.html: * svg/text/svg-zoom-large-value.xhtml: * svg/text/text-align-01-b.svg: * svg/text/text-align-02-b.svg: * svg/text/text-align-03-b.svg: * svg/text/text-align-04-b.svg: * svg/text/text-align-05-b.svg: * svg/text/text-align-06-b.svg: * svg/text/text-altglyph-01-b.svg: * svg/text/text-assert.svg: * svg/text/text-block-child-crash.xhtml: * svg/text/text-deco-01-b.svg: * svg/text/text-font-anonymous-parent.xhtml: * svg/text/text-font-invalid.html: * svg/text/text-font-uri-invalid.svg: * svg/text/text-fonts-01-t.svg: * svg/text/text-fonts-02-t.svg: * svg/text/text-intro-05-t.svg: * svg/text/text-path-01-b.svg: * svg/text/text-positioning-remove-child-crash.svg: * svg/text/text-property-with-display-none.html: * svg/text/text-spacing-01-b.svg: * svg/text/text-style-invalid.svg: * svg/text/text-style-recalc-crash.html: * svg/text/text-text-01-b.svg: * svg/text/text-text-03-b.svg: * svg/text/text-text-04-t.svg: * svg/text/text-text-05-t.svg: * svg/text/text-text-06-t.svg: * svg/text/text-text-07-t.svg: * svg/text/text-text-08-b.svg: * svg/text/text-tref-01-b.svg: * svg/text/text-tselect-01-b.svg: * svg/text/text-tselect-02-f.svg: * svg/text/text-tspan-01-b.svg: * svg/text/text-ws-01-t.svg: * svg/text/text-ws-02-t.svg: * svg/text/textPathBoundsBug.svg: * svg/text/textpath-reference-crash.html: * svg/text/tref-event-listener-crash.svg: * svg/text/tspan-getComputedTextLength.svg: * svg/transforms/percent-transform-values.xhtml: * svg/transforms/transform-origin-presentation-attribute.xhtml: * svg/webarchive/svg-cursor-subresources-expected.webarchive: * svg/webarchive/svg-cursor-subresources.svg: * svg/webarchive/svg-feimage-subresources-expected.webarchive: * svg/webarchive/svg-feimage-subresources.svg: * svg/webarchive/svg-script-subresouces-expected.webarchive: * svg/webarchive/svg-script-subresouces.svg: * svg/zoom/page/zoom-getBoundingClientRect.xhtml: * svg/zoom/page/zoom-zoom-coords.xhtml: * svg/zoom/resources/testPageZoom.js: (repaintTest): (completeDynamicTest.script.onload): (completeDynamicTest): * svg/zoom/resources/testTextZoom.js: (repaintTest): Canonical link: https://commits.webkit.org/110751@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@124380 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-08-01 23:05:16 +00:00
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
Add new renderer for SVGRectElement. https://bugs.webkit.org/show_bug.cgi?id=65769 Source/WebCore: Reviewed by Nikolas Zimmermann. This patch introduces a new common base class called RenderSVGShape which replaces the RenderSVGPath. This new base class has the same purpose as the replaced class and has specialized descendants for common shapes (like Rectangles and Circles), which allows faster painting of these shapes when certain conditions are fulfilled. On some benchmark programs we have seen 5% speedup. The biggest motivation of this refactor is taking advantage of faster primitive drawing in the most common and frequent cases. However in some rare cases, like painting rounded rects, we need to fallback to the original code path, which is fully kept in the RenderSVGShape base class. Some other cases, like dashed strokes, can be painted but mouse pointer events cannot be handled by the descendant classes. A different fallback mechanism is used in such cases which redirects only the pointer event handling to the base class. Tests: svg/custom/pointer-events-on-rounded-rect.xhtml svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml * CMakeLists.txt: * GNUmakefile.list.am: * WebCore.gypi: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * platform/graphics/FloatRect.cpp: (WebCore::FloatRect::contains): * platform/graphics/FloatRect.h: (WebCore::FloatRect::contains): * rendering/RenderObject.h: (WebCore::RenderObject::isSVGRect): (WebCore::RenderObject::isSVGShape): * rendering/RenderTreeAsText.cpp: (WebCore::write): * rendering/svg/RenderSVGAllInOne.cpp: * rendering/svg/RenderSVGModelObject.cpp: (WebCore::isGraphicsElement): * rendering/svg/RenderSVGPath.cpp: (WebCore::RenderSVGPath::RenderSVGPath): (WebCore::RenderSVGPath::inflateWithStrokeAndMarkerBounds): Unite the markerBounds with strokeBoundingBox. * rendering/svg/RenderSVGPath.h: * rendering/svg/RenderSVGRect.cpp: Added. (WebCore::RenderSVGRect::RenderSVGRect): (WebCore::RenderSVGRect::~RenderSVGRect): (WebCore::RenderSVGRect::createShape): (WebCore::RenderSVGRect::objectBoundingBox): (WebCore::RenderSVGRect::strokeBoundingBox): (WebCore::RenderSVGRect::fillShape): (WebCore::RenderSVGRect::strokeShape): (WebCore::RenderSVGRect::shapeDependentStrokeContains): (WebCore::RenderSVGRect::shapeDependentFillContains): * rendering/svg/RenderSVGRect.h: Added. (WebCore::RenderSVGRect::isSVGRect): (WebCore::RenderSVGRect::renderName): (WebCore::RenderSVGRect::isEmpty): * rendering/svg/RenderSVGResource.h: (WebCore::RenderSVGResource::postApplyResource): A new shape argument was added to allow shape specific faster painting. * rendering/svg/RenderSVGResourceClipper.cpp: (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage): (WebCore::RenderSVGResourceClipper::calculateClipContentRepaintRect): (WebCore::RenderSVGResourceClipper::hitTestClipContent): * rendering/svg/RenderSVGResourceContainer.cpp: (WebCore::RenderSVGResourceContainer::transformOnNonScalingStroke): * rendering/svg/RenderSVGResourceFilter.cpp: (WebCore::RenderSVGResourceFilter::postApplyResource): * rendering/svg/RenderSVGResourceFilter.h: * rendering/svg/RenderSVGResourceGradient.cpp: (WebCore::RenderSVGResourceGradient::applyResource): * rendering/svg/RenderSVGResourceGradient.h: * rendering/svg/RenderSVGResourcePattern.cpp: (WebCore::RenderSVGResourcePattern::postApplyResource): * rendering/svg/RenderSVGResourcePattern.h: * rendering/svg/RenderSVGResourceSolidColor.cpp: (WebCore::RenderSVGResourceSolidColor::postApplyResource): * rendering/svg/RenderSVGResourceSolidColor.h: * rendering/svg/RenderSVGShape.cpp: Copied from Source/WebCore/rendering/svg/RenderSVGPath.cpp. (WebCore::RenderSVGShape::RenderSVGShape): (WebCore::RenderSVGShape::~RenderSVGShape): (WebCore::RenderSVGShape::createShape): (WebCore::RenderSVGShape::isEmpty): (WebCore::RenderSVGShape::fillShape): (WebCore::RenderSVGShape::objectBoundingBox): (WebCore::RenderSVGShape::strokeBoundingBox): (WebCore::RenderSVGShape::strokeShape): (WebCore::RenderSVGShape::shapeDependentStrokeContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::shapeDependentFillContains): The purpose of this virtual function allows decendants to use their own fast checks. (WebCore::RenderSVGShape::fillContains): (WebCore::RenderSVGShape::strokeContains): (WebCore::RenderSVGShape::layout): (WebCore::RenderSVGShape::shouldStrokeZeroLengthSubpath): (WebCore::RenderSVGShape::zeroLengthSubpathRect): (WebCore::RenderSVGShape::setupSquareCapPath): (WebCore::RenderSVGShape::setupNonScalingStrokePath): (WebCore::RenderSVGShape::fillAndStrokePath): (WebCore::RenderSVGShape::paint): (WebCore::RenderSVGShape::addFocusRingRects): (WebCore::RenderSVGShape::nodeAtFloatPoint): (WebCore::RenderSVGShape::calculateMarkerBoundsIfNeeded): (WebCore::RenderSVGShape::updateCachedBoundaries): (WebCore::RenderSVGShape::strokeWidth): * rendering/svg/RenderSVGShape.h: Copied from Source/WebCore/rendering/svg/RenderSVGPath.h. (WebCore::BoundingRectStrokeStyleApplier::BoundingRectStrokeStyleApplier): (WebCore::BoundingRectStrokeStyleApplier::strokeStyle): (WebCore::RenderSVGShape::setNeedsShapeUpdate): (WebCore::RenderSVGShape::setNeedsBoundariesUpdate): (WebCore::RenderSVGShape::setNeedsTransformUpdate): (WebCore::RenderSVGShape::isPaintingFallback): (WebCore::RenderSVGShape::path): (WebCore::RenderSVGShape::setIsPaintingFallback): (WebCore::RenderSVGShape::setStrokeAndMarkerBoundingBox): (WebCore::RenderSVGShape::hasPath): (WebCore::RenderSVGShape::repaintRectInLocalCoordinates): (WebCore::RenderSVGShape::localToParentTransform): (WebCore::RenderSVGShape::localTransform): (WebCore::RenderSVGShape::isSVGShape): (WebCore::RenderSVGShape::renderName): (WebCore::RenderSVGShape::isRoundedRect): (WebCore::RenderSVGShape::inflateWithMarkerBounds): (WebCore::toRenderSVGShape): * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::releasePaintingResource): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::finishRenderSVGContent): (WebCore::SVGRenderSupport::layoutChildren): * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::writeStyle): (WebCore::operator<<): (WebCore::write): * rendering/svg/SVGRenderTreeAsText.h: * rendering/svg/SVGTextRunRenderingContext.cpp: (WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): * svg/SVGCircleElement.cpp: (WebCore::SVGCircleElement::svgAttributeChanged): * svg/SVGEllipseElement.cpp: (WebCore::SVGEllipseElement::svgAttributeChanged): * svg/SVGLineElement.cpp: (WebCore::SVGLineElement::svgAttributeChanged): * svg/SVGPathElement.cpp: (WebCore::SVGPathElement::svgAttributeChanged): (WebCore::SVGPathElement::pathSegListChanged): (WebCore::SVGPathElement::createRenderer): * svg/SVGPathElement.h: * svg/SVGPolyElement.cpp: (WebCore::SVGPolyElement::svgAttributeChanged): * svg/SVGRectElement.cpp: (WebCore::SVGRectElement::svgAttributeChanged): (WebCore::SVGRectElement::createRenderer): * svg/SVGRectElement.h: LayoutTests: Add new tests to check the new shape based rendering mechanism of SVGRectElement. Reviewed by Nikolas Zimmermann. * svg/custom/pointer-events-on-rounded-rect-expected.txt: Added. * svg/custom/pointer-events-on-rounded-rect.xhtml: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits-expected.txt: Added. * svg/custom/pointer-events-with-linecaps-and-miterlimits.xhtml: Added. Canonical link: https://commits.webkit.org/89998@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@101517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-11-30 15:49:02 +00:00
}
if (window.eventSender) {
eventSender.mouseMoveTo(31, 31);
eventSender.mouseDown();
}
]]>
</script>
</svg>
</body>
</html>