diff options
author | David Zbarsky <dzbarsky@gmail.com> | 2015-08-04 15:05:15 -0400 |
---|---|---|
committer | David Zbarsky <dzbarsky@gmail.com> | 2015-08-04 15:08:37 -0400 |
commit | 75e444c3b2aea541936331e19c95f52b24159883 (patch) | |
tree | 47c8ea9879beb0da4ce05a3d9f0f70a0edc2f7a8 | |
parent | 0565df859684560b525b0361476d334f79db8474 (diff) | |
download | servo-75e444c3b2aea541936331e19c95f52b24159883.tar.gz servo-75e444c3b2aea541936331e19c95f52b24159883.zip |
Make createRadialGradient throw for negative radii
3 files changed, 9 insertions, 9 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 834e9606c49..d70cc85fe85 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -1019,10 +1019,14 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-createradialgradient fn CreateRadialGradient(self, x0: Finite<f64>, y0: Finite<f64>, r0: Finite<f64>, x1: Finite<f64>, y1: Finite<f64>, r1: Finite<f64>) - -> Root<CanvasGradient> { - CanvasGradient::new(self.global.root().r(), - CanvasGradientStyle::Radial( - RadialGradientStyle::new(*x0, *y0, *r0, *x1, *y1, *r1, Vec::new()))) + -> Fallible<Root<CanvasGradient>> { + if *r0 < 0. || *r1 < 0. { + return Err(IndexSize); + } + + Ok(CanvasGradient::new(self.global.root().r(), + CanvasGradientStyle::Radial( + RadialGradientStyle::new(*x0, *y0, *r0, *x1, *y1, *r1, Vec::new())))) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern diff --git a/components/script/dom/webidls/CanvasRenderingContext2D.webidl b/components/script/dom/webidls/CanvasRenderingContext2D.webidl index 251daaac846..295fc2fb3b7 100644 --- a/components/script/dom/webidls/CanvasRenderingContext2D.webidl +++ b/components/script/dom/webidls/CanvasRenderingContext2D.webidl @@ -59,6 +59,7 @@ interface CanvasRenderingContext2D { attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black) attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black) CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1); + [Throws] CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1); [Throws] CanvasPattern createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition); diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html.ini deleted file mode 100644 index e7b491b0005..00000000000 --- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[2d.gradient.radial.negative.html] - type: testharness - [createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative] - expected: FAIL - |