From 093b7b7710a71955ccce8bef74c39178f378116b Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 7 Jun 2016 10:30:52 +0200 Subject: [PATCH] Move the definition of ServoThreadSafeLayoutNode::selection to script. --- components/layout/wrapper.rs | 15 ++++----------- components/script/dom/node.rs | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 10dde4b2ff0..98f71d309ea 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -49,8 +49,6 @@ use script::dom::element::{Element, LayoutElementHelpers, RawLayoutElementHelper use script::dom::htmlcanvaselement::{LayoutHTMLCanvasElementHelpers, HTMLCanvasData}; use script::dom::htmliframeelement::HTMLIFrameElement; use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers; -use script::dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers}; -use script::dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers}; 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; @@ -1142,15 +1140,10 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> { fn selection(&self) -> Option> { let this = unsafe { self.get_jsmanaged() }; - let selection = if let Some(area) = this.downcast::() { - unsafe { area.selection_for_layout() } - } else if let Some(input) = this.downcast::() { - unsafe { input.selection_for_layout() } - } else { - return None; - }; - selection.map(|range| Range::new(ByteIndex(range.start as isize), - ByteIndex(range.len() as isize))) + this.selection().map(|range| { + Range::new(ByteIndex(range.start as isize), + ByteIndex(range.len() as isize)) + }) } fn image_url(&self) -> Option { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 384465a8039..b46b48bc050 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -68,6 +68,7 @@ use std::cmp::max; use std::default::Default; use std::iter::{self, FilterMap, Peekable}; use std::mem; +use std::ops::Range; use string_cache::{Atom, Namespace, QualName}; use style::selector_impl::ServoSelectorImpl; use util::thread_state; @@ -960,6 +961,7 @@ pub trait LayoutNodeHelpers { unsafe fn init_style_and_layout_data(&self, OpaqueStyleAndLayoutData); fn text_content(&self) -> String; + fn selection(&self) -> Option>; } impl LayoutNodeHelpers for LayoutJS { @@ -1067,6 +1069,19 @@ impl LayoutNodeHelpers for LayoutJS { panic!("not text!") } + + #[allow(unsafe_code)] + fn selection(&self) -> Option> { + if let Some(area) = self.downcast::() { + return unsafe { area.selection_for_layout() }; + } + + if let Some(input) = self.downcast::() { + return unsafe { input.selection_for_layout() }; + } + + None + } }