From 6725a73d982349d71edadfee17c1ed62e1dc3255 Mon Sep 17 00:00:00 2001 From: Robert Longson Date: Tue, 23 Mar 2010 12:53:36 +0000 Subject: [PATCH] Bug 554091 - negative rx and ry are unsupported rather than errors according to SVG1.2T. r=jwatt --- content/svg/content/src/nsSVGRectElement.cpp | 5 ++++- layout/reftests/svg/rect-03.svg | 14 ++++++++++++++ layout/reftests/svg/reftest.list | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 layout/reftests/svg/rect-03.svg diff --git a/content/svg/content/src/nsSVGRectElement.cpp b/content/svg/content/src/nsSVGRectElement.cpp index 6954971d0f76..2aef2b2f8b60 100644 --- a/content/svg/content/src/nsSVGRectElement.cpp +++ b/content/svg/content/src/nsSVGRectElement.cpp @@ -175,9 +175,12 @@ nsSVGRectElement::ConstructPath(gfxContext *aCtx) /* In a perfect world, this would be handled by the DOM, and return a DOM exception. */ - if (width <= 0 || height <= 0 || ry < 0 || rx < 0) + if (width <= 0 || height <= 0) return; + rx = NS_MAX(rx, 0.0f); + ry = NS_MAX(ry, 0.0f); + /* optimize the no rounded corners case */ if (rx == 0 && ry == 0) { aCtx->Rectangle(gfxRect(x, y, width, height)); diff --git a/layout/reftests/svg/rect-03.svg b/layout/reftests/svg/rect-03.svg new file mode 100644 index 000000000000..ead36af9e818 --- /dev/null +++ b/layout/reftests/svg/rect-03.svg @@ -0,0 +1,14 @@ + + + +Testcase for rect with unsupported rx and ry + + + + + + + diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index c7aca1468814..7205102d9519 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -125,6 +125,7 @@ fails == inline-in-xul-basic-01.xul pass.svg == radialGradient-basic-03.svg radialGradient-basic-03-ref.svg == rect-01.svg pass.svg == rect-02.svg pass.svg +== rect-03.svg pass.svg == rect-with-rx-and-ry-01.svg pass.svg == rect-with-rx-or-ry-01.svg rect-with-rx-or-ry-01-ref.svg == rootElement-null-01.svg pass.svg