diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-06-20 06:44:08 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-06-20 06:44:08 -0600 |
commit | 02303941bef5f5bbdbec750ab0dfa0b77f32345a (patch) | |
tree | 6a30d28801ff9c9754c0fe8213236f3814d3f81d /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 72ead882c08fbd66d59457efd1ebf86ee4ee97f2 (diff) | |
parent | cc55e2e42660a655d53de9c3bacb782b8e716a2c (diff) | |
download | servo-02303941bef5f5bbdbec750ab0dfa0b77f32345a.tar.gz servo-02303941bef5f5bbdbec750ab0dfa0b77f32345a.zip |
Auto merge of #6413 - hyowon:invalid_shadow_attrs, r=Ms2ger
Check invalid values for the shadow attributes.
I left out checking invalid values when setting the shadows attributes.
r? @nox @pcwalton
cc @yichoi
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6413)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 17 |
1 files changed, 15 insertions, 2 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(()), } } |