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 -->
This commit is contained in:
bors-servo 2015-06-20 06:44:08 -06:00
commit 02303941be
5 changed files with 15 additions and 22 deletions

View file

@ -1124,6 +1124,9 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsetx // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsetx
fn SetShadowOffsetX(self, value: f64) { 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.state.borrow_mut().shadow_offset_x = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetX(value))).unwrap() 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 // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowoffsety
fn SetShadowOffsetY(self, value: f64) { 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.state.borrow_mut().shadow_offset_y = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowOffsetY(value))).unwrap() 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 // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowblur
fn SetShadowBlur(self, value: f64) { 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.state.borrow_mut().shadow_blur = value;
self.renderer.send(CanvasMsg::Canvas2d(Canvas2dMsg::SetShadowBlur(value))).unwrap() 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,()> { pub fn parse_color(string: &str) -> Result<RGBA,()> {
match CSSColor::parse(&mut Parser::new(&string)) { let mut parser = Parser::new(&string);
Ok(CSSColor::RGBA(rgba)) => Ok(rgba), match CSSColor::parse(&mut parser) {
Ok(CSSColor::RGBA(rgba)) => {
if parser.is_exhausted() { Ok(rgba) }
else { Err(()) }
},
_ => Err(()), _ => Err(()),
} }
} }

View file

@ -1,5 +0,0 @@
[2d.fillStyle.parse.invalid.name-3.html]
type: testharness
[Canvas test: 2d.fillStyle.parse.invalid.name-3]
expected: FAIL

View file

@ -1,5 +0,0 @@
[2d.shadow.attributes.shadowBlur.invalid.html]
type: testharness
[Canvas test: 2d.shadow.attributes.shadowBlur.invalid]
expected: FAIL

View file

@ -1,5 +0,0 @@
[2d.shadow.attributes.shadowColor.invalid.html]
type: testharness
[Canvas test: 2d.shadow.attributes.shadowColor.invalid]
expected: FAIL

View file

@ -1,5 +0,0 @@
[2d.shadow.attributes.shadowOffset.invalid.html]
type: testharness
[Canvas test: 2d.shadow.attributes.shadowOffset.invalid]
expected: FAIL