aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasgradient.rs
diff options
context:
space:
mode:
authorDavid Zbarsky <dzbarsky@gmail.com>2015-08-09 19:43:09 -0400
committerDavid Zbarsky <dzbarsky@gmail.com>2015-11-21 11:59:19 -0800
commit8408891ec5d2c7d455e52bef4181adbb276413a5 (patch)
treeae1dcef884a13039bf17b9b040e698329ac7caad /components/script/dom/canvasgradient.rs
parentea690a2dff64d1cb4eb668473d62f1bbcb19f7c8 (diff)
downloadservo-8408891ec5d2c7d455e52bef4181adbb276413a5.tar.gz
servo-8408891ec5d2c7d455e52bef4181adbb276413a5.zip
Parse currentColor as Canvas2D color
Diffstat (limited to 'components/script/dom/canvasgradient.rs')
-rw-r--r--components/script/dom/canvasgradient.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs
index 1721e5e976a..b2d3f846c89 100644
--- a/components/script/dom/canvasgradient.rs
+++ b/components/script/dom/canvasgradient.rs
@@ -3,6 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use canvas_traits::{CanvasGradientStop, FillOrStrokeStyle, LinearGradientStyle, RadialGradientStyle};
+use cssparser::Color as CSSColor;
+use cssparser::{Parser, RGBA};
use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::CanvasGradientBinding;
use dom::bindings::codegen::Bindings::CanvasGradientBinding::CanvasGradientMethods;
@@ -11,7 +13,6 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::canvasrenderingcontext2d::parse_color;
use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#canvasgradient
@@ -51,9 +52,16 @@ impl CanvasGradientMethods for CanvasGradient {
return Err(Error::IndexSize);
}
- let color = match parse_color(&color) {
- Ok(color) => color,
- _ => return Err(Error::Syntax),
+ let mut parser = Parser::new(&color);
+ let color = CSSColor::parse(&mut parser);
+ let color = if parser.is_exhausted() {
+ match color {
+ Ok(CSSColor::RGBA(rgba)) => rgba,
+ Ok(CSSColor::CurrentColor) => RGBA { red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0 },
+ _ => return Err(Error::Syntax)
+ }
+ } else {
+ return Err(Error::Syntax)
};
self.stops.borrow_mut().push(CanvasGradientStop {