aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasgradient.rs
diff options
context:
space:
mode:
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 {