From 13a07a4ed2f6cf755279ca63a7a3b9291e01c1a9 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sun, 21 Jun 2015 15:40:52 +0200 Subject: [PATCH] Move some TLayoutNode methods to ThreadSafeLayoutNode. They are unused on LayoutNode. --- components/layout/fragment.rs | 2 +- components/layout/wrapper.rs | 96 ++++++++++++++++------------------- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 36225040c4e..11dd6406b0a 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -19,7 +19,7 @@ use layout_debug; use model::{self, IntrinsicISizes, IntrinsicISizesContribution, MaybeAuto, specified}; use text; use opaque_node::OpaqueNodeMethods; -use wrapper::{TLayoutNode, ThreadSafeLayoutNode}; +use wrapper::ThreadSafeLayoutNode; use euclid::{Point2D, Rect, Size2D}; use gfx::display_list::{BLUR_INFLATION_FACTOR, OpaqueNode}; diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 341816840d8..dd061380241 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -48,8 +48,7 @@ use script::dom::characterdata::{CharacterDataTypeId, LayoutCharacterDataHelpers use script::dom::element::{Element, ElementTypeId}; use script::dom::element::{LayoutElementHelpers, RawLayoutElementHelpers}; use script::dom::htmlelement::HTMLElementTypeId; -use script::dom::htmlcanvaselement::{HTMLCanvasElement, LayoutHTMLCanvasElementHelpers}; -use script::dom::htmliframeelement::HTMLIFrameElement; +use script::dom::htmlcanvaselement::LayoutHTMLCanvasElementHelpers; use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers; use script::dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers}; use script::dom::htmltextareaelement::LayoutHTMLTextAreaElementHelpers; @@ -89,56 +88,6 @@ pub trait TLayoutNode { /// call and as such is marked `unsafe`. unsafe fn get_jsmanaged<'a>(&'a self) -> &'a LayoutJS; - /// If this is an image element, returns its URL. If this is not an image element, fails. - /// - /// FIXME(pcwalton): Don't copy URLs. - fn image_url(&self) -> Option { - unsafe { - match HTMLImageElementCast::to_layout_js(self.get_jsmanaged()) { - Some(elem) => elem.image_url().as_ref().map(|url| (*url).clone()), - None => panic!("not an image!") - } - } - } - - fn renderer(&self) -> Option> { - unsafe { - let canvas_element: Option> = - HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); - canvas_element.and_then(|elem| elem.get_renderer()) - } - } - - fn canvas_width(&self) -> u32 { - unsafe { - let canvas_element: Option> = - HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); - canvas_element.unwrap().get_canvas_width() - } - } - - fn canvas_height(&self) -> u32 { - unsafe { - let canvas_element: Option> = - HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); - canvas_element.unwrap().get_canvas_height() - } - } - - /// If this node is an iframe element, returns its pipeline and subpage IDs. If this node is - /// not an iframe element, fails. - fn iframe_pipeline_and_subpage_ids(&self) -> (PipelineId, SubpageId) { - unsafe { - let iframe_element: LayoutJS = - match HTMLIFrameElementCast::to_layout_js(self.get_jsmanaged()) { - Some(elem) => elem, - None => panic!("not an iframe element!") - }; - ((*iframe_element.unsafe_get()).containing_page_pipeline_id().unwrap(), - (*iframe_element.unsafe_get()).subpage_id().unwrap()) - } - } - /// Returns the first child of this node. fn first_child(&self) -> Option; } @@ -1022,6 +971,49 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { panic!("not text!") } + + /// If this is an image element, returns its URL. If this is not an image element, fails. + /// + /// FIXME(pcwalton): Don't copy URLs. + pub fn image_url(&self) -> Option { + unsafe { + HTMLImageElementCast::to_layout_js(self.get_jsmanaged()) + .expect("not an image!") + .image_url() + } + } + + pub fn renderer(&self) -> Option> { + unsafe { + let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); + canvas_element.and_then(|elem| elem.get_renderer()) + } + } + + pub fn canvas_width(&self) -> u32 { + unsafe { + let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); + canvas_element.unwrap().get_canvas_width() + } + } + + pub fn canvas_height(&self) -> u32 { + unsafe { + let canvas_element = HTMLCanvasElementCast::to_layout_js(self.get_jsmanaged()); + canvas_element.unwrap().get_canvas_height() + } + } + + /// If this node is an iframe element, returns its pipeline and subpage IDs. If this node is + /// not an iframe element, fails. + pub fn iframe_pipeline_and_subpage_ids(&self) -> (PipelineId, SubpageId) { + unsafe { + let iframe_element = HTMLIFrameElementCast::to_layout_js(self.get_jsmanaged()) + .expect("not an iframe element!"); + ((*iframe_element.unsafe_get()).containing_page_pipeline_id().unwrap(), + (*iframe_element.unsafe_get()).subpage_id().unwrap()) + } + } } pub struct ThreadSafeLayoutNodeChildrenIterator<'a> {