aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs17
-rw-r--r--tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html.ini5
-rw-r--r--tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html.ini5
5 files changed, 15 insertions, 22 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index c92c9fcdf29..2d4e38d4884 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -1124,6 +1124,9 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsetx
fn SetShadowOffsetX(self, value: f64) {
+ if !value.is_finite() || value == self.state.borrow().shadow_offset_x {
+ return;
+ }
self.state.borrow_mut().shadow_offset_x = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetX(value))).unwrap()
}
@@ -1135,6 +1138,9 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsety
fn SetShadowOffsetY(self, value: f64) {
+ if !value.is_finite() || value == self.state.borrow().shadow_offset_y {
+ return;
+ }
self.state.borrow_mut().shadow_offset_y = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetY(value))).unwrap()
}
@@ -1146,6 +1152,9 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowblur
fn SetShadowBlur(self, value: f64) {
+ if !value.is_finite() || value < 0f64 || value == self.state.borrow().shadow_blur {
+ return;
+ }
self.state.borrow_mut().shadow_blur = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowBlur(value))).unwrap()
}
@@ -1173,8 +1182,12 @@ impl Drop for CanvasRenderingContext2D {
}
pub fn parse_color(string: &str) -> Result<RGBA,()> {
- match CSSColor::parse(&mut Parser::new(&string)) {
- Ok(CSSColor::RGBA(rgba)) => Ok(rgba),
+ let mut parser = Parser::new(&string);
+ match CSSColor::parse(&mut parser) {
+ Ok(CSSColor::RGBA(rgba)) => {
+ if parser.is_exhausted() { Ok(rgba) }
+ else { Err(()) }
+ },
_ => Err(()),
}
}
diff --git a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html.ini b/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html.ini
deleted file mode 100644
index e59f1e88464..00000000000
--- a/tests/wpt/metadata/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.fillStyle.parse.invalid.name-3.html]
- type: testharness
- [Canvas test: 2d.fillStyle.parse.invalid.name-3]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html.ini b/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html.ini
deleted file mode 100644
index b0b66d20951..00000000000
--- a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.shadow.attributes.shadowBlur.invalid.html]
- type: testharness
- [Canvas test: 2d.shadow.attributes.shadowBlur.invalid]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html.ini b/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html.ini
deleted file mode 100644
index 27cd205c82d..00000000000
--- a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.shadow.attributes.shadowColor.invalid.html]
- type: testharness
- [Canvas test: 2d.shadow.attributes.shadowColor.invalid]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html.ini b/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html.ini
deleted file mode 100644
index 2a19d5ceb6c..00000000000
--- a/tests/wpt/metadata/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[2d.shadow.attributes.shadowOffset.invalid.html]
- type: testharness
- [Canvas test: 2d.shadow.attributes.shadowOffset.invalid]
- expected: FAIL
-