aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorAlex Fong <alexfongg@gmail.com>2018-02-12 20:36:23 +0800
committerAlex Fong <alexfongg@gmail.com>2018-02-26 19:07:04 +0800
commit8d093982307275026d79af45afa29512cef1180c (patch)
tree3487495acad82ca8a50d0a2eb30f1ffe690ddaec /components/script/dom/canvasrenderingcontext2d.rs
parent1d8e78720b06823e7f77b52a2b8fbd805d2cf2c0 (diff)
downloadservo-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.rs18
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(())