From 8d093982307275026d79af45afa29512cef1180c Mon Sep 17 00:00:00 2001 From: Alex Fong Date: Mon, 12 Feb 2018 20:36:23 +0800 Subject: Avoid `Window::GetComputedStyle` when checking for `display: none` --- components/script/dom/canvasrenderingcontext2d.rs | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'components/script/dom/canvasrenderingcontext2d.rs') 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::(); - let style = window.GetComputedStyle(canvas.upcast(), None); - - let element_not_rendered = - !canvas.upcast::().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(()) -- cgit v1.2.3