aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorHyowon Kim <hw1008.kim@samsung.com>2015-06-18 09:04:49 +0900
committerHyowon Kim <hw1008.kim@samsung.com>2015-06-18 16:54:12 +0900
commitcc55e2e42660a655d53de9c3bacb782b8e716a2c (patch)
tree77c80b30c4d3133a12754c460519d3c9f2c9d882 /components/script/dom/canvasrenderingcontext2d.rs
parent7355bf1061a21114654c1e8abe1d752624200799 (diff)
downloadservo-cc55e2e42660a655d53de9c3bacb782b8e716a2c.tar.gz
servo-cc55e2e42660a655d53de9c3bacb782b8e716a2c.zip
Check invalid values for the shadow attributes.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 9ac3a97c55b..06c3df97df1 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -1136,6 +1136,9 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'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()
}
@@ -1147,6 +1150,9 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'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()
}
@@ -1158,6 +1164,9 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'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()
}
@@ -1185,8 +1194,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(()),
}
}