aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorDavid Raifaizen <d-raif@hotmail.com>2016-04-16 12:13:13 -0400
committerDavid Raifaizen <d-raif@hotmail.com>2016-04-22 09:59:49 -0400
commitb5159dc7ffc58f87b82acd0e015b3437d12e96fb (patch)
treeb6113fdbdb4e412c1282b006b730abbc3de2b330 /components/script/dom/canvasrenderingcontext2d.rs
parent69acd8e1ccba8ff01e8f7fde4305956ba5ab866d (diff)
downloadservo-b5159dc7ffc58f87b82acd0e015b3437d12e96fb.tar.gz
servo-b5159dc7ffc58f87b82acd0e015b3437d12e96fb.zip
Setting current color to black if canvas is not rendered in document
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index a0c4ee9d021..36c042b4d75 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -486,11 +486,29 @@ impl CanvasRenderingContext2D {
match color {
Ok(CSSColor::RGBA(rgba)) => Ok(rgba),
Ok(CSSColor::CurrentColor) => {
+ // TODO: https://github.com/whatwg/html/issues/1099
+ // Reconsider how to calculate currentColor in a display:none canvas
+
// TODO: will need to check that the context bitmap mode is fixed
// once we implement CanvasProxy
let window = window_from_node(&*self.canvas);
+
let style = window.GetComputedStyle(&*self.canvas.upcast(), None);
- self.parse_color(&style.GetPropertyValue(DOMString::from("color")))
+
+ let element_not_rendered =
+ !self.canvas.upcast::<Node>().is_in_doc() ||
+ style.GetPropertyValue(DOMString::from("display")) == "none";
+
+ if element_not_rendered {
+ Ok(RGBA {
+ red: 0.0,
+ green: 0.0,
+ blue: 0.0,
+ alpha: 1.0,
+ })
+ } else {
+ self.parse_color(&style.GetPropertyValue(DOMString::from("color")))
+ }
},
_ => Err(())
}