diff --git a/servo/components/layout/wrapper.rs b/servo/components/layout/wrapper.rs index 74fdc8697591..0db0d1ca22b2 100644 --- a/servo/components/layout/wrapper.rs +++ b/servo/components/layout/wrapper.rs @@ -1014,10 +1014,11 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { /// If this node is an iframe element, returns its pipeline ID. If this node is /// not an iframe element, fails. pub fn iframe_pipeline_id(&self) -> PipelineId { + use script::dom::htmliframeelement::HTMLIFrameElementLayoutMethods; unsafe { let iframe_element = HTMLIFrameElementCast::to_layout_js(self.get_jsmanaged()) .expect("not an iframe element!"); - (*iframe_element.unsafe_get()).pipeline_id().unwrap() + iframe_element.pipeline_id().unwrap() } } } diff --git a/servo/components/script/dom/htmliframeelement.rs b/servo/components/script/dom/htmliframeelement.rs index b8df7d9fd788..a29beac41076 100644 --- a/servo/components/script/dom/htmliframeelement.rs +++ b/servo/components/script/dom/htmliframeelement.rs @@ -12,7 +12,7 @@ use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLElementCast}; use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::error::{Error, ErrorResult, Fallible}; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{Root}; +use dom::bindings::js::{Root, LayoutJS}; use dom::bindings::utils::Reflectable; use dom::customevent::CustomEvent; use dom::document::Document; @@ -222,10 +222,19 @@ impl HTMLIFrameElement { pub fn subpage_id(&self) -> Option { self.subpage_id.get() } +} +pub trait HTMLIFrameElementLayoutMethods { + fn pipeline_id(self) -> Option; +} + +impl HTMLIFrameElementLayoutMethods for LayoutJS { #[inline] - pub fn pipeline_id(&self) -> Option { - self.pipeline_id.get() + #[allow(unsafe_code)] + fn pipeline_id(self) -> Option { + unsafe { + (*self.unsafe_get()).pipeline_id.get() + } } }