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, y0: Finite, r0: Finite, x1: Finite, y1: Finite, r1: Finite) - -> Root { - CanvasGradient::new(self.global.root().r(), - CanvasGradientStyle::Radial( - RadialGradientStyle::new(*x0, *y0, *r0, *x1, *y1, *r1, Vec::new()))) + -> Fallible> { + 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 -