diff options
author | David Raifaizen <d-raif@hotmail.com> | 2016-04-16 12:13:13 -0400 |
---|---|---|
committer | David Raifaizen <d-raif@hotmail.com> | 2016-04-22 09:59:49 -0400 |
commit | b5159dc7ffc58f87b82acd0e015b3437d12e96fb (patch) | |
tree | b6113fdbdb4e412c1282b006b730abbc3de2b330 /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 69acd8e1ccba8ff01e8f7fde4305956ba5ab866d (diff) | |
download | servo-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.rs | 20 |
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(()) } |