aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs8
-rw-r--r--components/script/dom/webidls/CanvasRenderingContext2D.webidl1
-rw-r--r--tests/wpt/metadata/2dcontext/path-objects/2d.path.arc.negative.html.ini5
3 files changed, 8 insertions, 6 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 427f8d78501..4145c8e28cc 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -460,15 +460,21 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D>
Point2D(x as f32, y as f32))).unwrap();
}
- fn Arc(self, x: Finite<f64>, y: Finite<f64>, r: Finite<f64>, start: Finite<f64>, end: Finite<f64>, ccw: bool) {
+ fn Arc(self, x: Finite<f64>, y: Finite<f64>, r: Finite<f64>,
+ start: Finite<f64>, end: Finite<f64>, ccw: bool) -> Fallible<()> {
let x = *x;
let y = *y;
let r = *r;
let start = *start;
let end = *end;
+ if r < 0.0 {
+ return Err(IndexSize);
+ }
+
self.renderer.send(CanvasMsg::Arc(Point2D(x as f32, y as f32), r as f32,
start as f32, end as f32, ccw)).unwrap();
+ Ok(())
}
// https://html.spec.whatwg.org/#dom-context-2d-imagesmoothingenabled
diff --git a/components/script/dom/webidls/CanvasRenderingContext2D.webidl b/components/script/dom/webidls/CanvasRenderingContext2D.webidl
index a3d40dc7c52..96624deb0fa 100644
--- a/components/script/dom/webidls/CanvasRenderingContext2D.webidl
+++ b/components/script/dom/webidls/CanvasRenderingContext2D.webidl
@@ -150,6 +150,7 @@ interface CanvasPathMethods {
//void rect(double x, double y, double w, double h);
+ [Throws]
void arc(double x, double y, double radius, double startAngle, double endAngle, optional boolean anticlockwise = false);
// NOT IMPLEMENTED [LenientFloat] void ellipse(double x, double y, double radiusX, double radiusY, double rotation, double startAngle, double endAngle, boolean anticlockwise);
};
diff --git a/tests/wpt/metadata/2dcontext/path-objects/2d.path.arc.negative.html.ini b/tests/wpt/metadata/2dcontext/path-objects/2d.path.arc.negative.html.ini
deleted file mode 100644
index f8014c1fcfc..00000000000
--- a/tests/wpt/metadata/2dcontext/path-objects/2d.path.arc.negative.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.path.arc.negative.html]
- type: testharness
- [arc() with negative radius throws INDEX_SIZE_ERR]
- expected: FAIL
-