diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 98f71d309ea..c7e400cb588 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -48,7 +48,6 @@ use script::dom::document::{Document, LayoutDocumentHelpers}; use script::dom::element::{Element, LayoutElementHelpers, RawLayoutElementHelpers}; use script::dom::htmlcanvaselement::{LayoutHTMLCanvasElementHelpers, HTMLCanvasData}; use script::dom::htmliframeelement::HTMLIFrameElement; -use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers; use script::dom::node::{CAN_BE_FRAGMENTED, HAS_CHANGED, HAS_DIRTY_DESCENDANTS, IS_DIRTY}; use script::dom::node::{LayoutNodeHelpers, Node, OpaqueStyleAndLayoutData}; use script::dom::text::Text; @@ -1147,11 +1146,8 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> { } fn image_url(&self) -> Option { - unsafe { - self.get_jsmanaged().downcast() - .expect("not an image!") - .image_url() - } + let this = unsafe { self.get_jsmanaged() }; + this.image_url() } fn canvas_data(&self) -> Option { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index b46b48bc050..9575a7bea16 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -40,6 +40,7 @@ use dom::eventtarget::EventTarget; use dom::htmlbodyelement::HTMLBodyElement; use dom::htmlcollection::HTMLCollection; use dom::htmlelement::HTMLElement; +use dom::htmlimageelement::{HTMLImageElement, LayoutHTMLImageElementHelpers}; use dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers}; use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers}; use dom::nodelist::NodeList; @@ -71,6 +72,7 @@ use std::mem; use std::ops::Range; use string_cache::{Atom, Namespace, QualName}; use style::selector_impl::ServoSelectorImpl; +use url::Url; use util::thread_state; use uuid::Uuid; @@ -962,6 +964,7 @@ pub trait LayoutNodeHelpers { fn text_content(&self) -> String; fn selection(&self) -> Option>; + fn image_url(&self) -> Option; } impl LayoutNodeHelpers for LayoutJS { @@ -1082,6 +1085,15 @@ impl LayoutNodeHelpers for LayoutJS { None } + + #[allow(unsafe_code)] + fn image_url(&self) -> Option { + unsafe { + self.downcast::() + .expect("not an image!") + .image_url() + } + } }