diff options
author | Alex Fong <alexfongg@gmail.com> | 2018-02-12 20:36:23 +0800 |
---|---|---|
committer | Alex Fong <alexfongg@gmail.com> | 2018-02-26 19:07:04 +0800 |
commit | 8d093982307275026d79af45afa29512cef1180c (patch) | |
tree | 3487495acad82ca8a50d0a2eb30f1ffe690ddaec /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 1d8e78720b06823e7f77b52a2b8fbd805d2cf2c0 (diff) | |
download | servo-8d093982307275026d79af45afa29512cef1180c.tar.gz servo-8d093982307275026d79af45afa29512cef1180c.zip |
Avoid `Window::GetComputedStyle` when checking for `display: none`
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 93d4981d2bb..1e2278e81ca 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -9,7 +9,6 @@ use canvas_traits::canvas::{RadialGradientStyle, RepetitionStyle, byte_swap_and_ use cssparser::{Parser, ParserInput, RGBA}; use cssparser::Color as CSSColor; use dom::bindings::cell::DomRefCell; -use dom::bindings::codegen::Bindings::CSSStyleDeclarationBinding::CSSStyleDeclarationMethods; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasFillRule; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasImageSource; @@ -17,7 +16,6 @@ use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasLin use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasLineJoin; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods; use dom::bindings::codegen::Bindings::ImageDataBinding::ImageDataMethods; -use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::UnionTypes::StringOrCanvasGradientOrCanvasPattern; use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::inheritance::Castable; @@ -27,6 +25,7 @@ use dom::bindings::root::{Dom, DomRoot, LayoutDom}; use dom::bindings::str::DOMString; use dom::canvasgradient::{CanvasGradient, CanvasGradientStyle, ToFillOrStrokeStyle}; use dom::canvaspattern::CanvasPattern; +use dom::element::Element; use dom::globalscope::GlobalScope; use dom::htmlcanvaselement::HTMLCanvasElement; use dom::imagedata::ImageData; @@ -543,18 +542,11 @@ impl CanvasRenderingContext2D { Some(ref canvas) => &**canvas, }; - let window = window_from_node(canvas); + let canvas_element = canvas.upcast::<Element>(); - let style = window.GetComputedStyle(canvas.upcast(), None); - - let element_not_rendered = - !canvas.upcast::<Node>().is_in_doc() || - style.GetPropertyValue(DOMString::from("display")) == "none"; - - if element_not_rendered { - Ok(RGBA::new(0, 0, 0, 255)) - } else { - self.parse_color(&style.GetPropertyValue(DOMString::from("color"))) + match canvas_element.style() { + Some(ref s) if canvas_element.has_css_layout_box() => Ok(s.get_color().color), + _ => Ok(RGBA::new(0, 0, 0, 255)) } }, _ => Err(()) |