diff options
Diffstat (limited to 'components/script/dom')
30 files changed, 82 insertions, 67 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 43c1226b295..d5a00e6c1fa 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -18,7 +18,7 @@ use std::borrow::ToOwned; use std::cell::Ref; use std::mem; use string_cache::{Atom, Namespace}; -pub use style::attr::{AttrIdentifier, AttrValue}; +use style::attr::{AttrIdentifier, AttrValue}; // https://dom.spec.whatwg.org/#interface-attr #[dom_struct] diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs index 3ee685fbe02..69565520899 100644 --- a/components/script/dom/bindings/str.rs +++ b/components/script/dom/bindings/str.rs @@ -8,7 +8,6 @@ use std::ascii::AsciiExt; use std::borrow::ToOwned; use std::fmt; use std::hash::{Hash, Hasher}; -use std::mem; use std::ops; use std::ops::{Deref, DerefMut}; use std::str; @@ -31,12 +30,6 @@ impl ByteString { str::from_utf8(&self.0).ok() } - /// Returns ownership of the underlying Vec<u8> and copies an empty - /// vec in its place - pub fn bytes(&mut self) -> Vec<u8> { - mem::replace(&mut self.0, Vec::new()) - } - /// Returns the length. pub fn len(&self) -> usize { self.0.len() diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 0897ccc24ae..a3a9d4beeaa 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -4,7 +4,7 @@ use document_loader::{DocumentLoader, LoadType}; use dom::activation::{ActivationSource, synthetic_click_activation}; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods; use dom::bindings::codegen::Bindings::DocumentBinding; @@ -120,6 +120,7 @@ use std::ptr; use std::rc::Rc; use std::sync::Arc; use string_cache::{Atom, QualName}; +use style::attr::AttrValue; use style::context::ReflowGoal; use style::restyle_hints::ElementSnapshot; use style::servo::Stylesheet; diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 0432be3987c..34791c3417c 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -8,7 +8,6 @@ use app_units::Au; use cssparser::{Color, ToCss}; use devtools_traits::AttrInfo; use dom::activation::Activatable; -use dom::attr::AttrValue; use dom::attr::{Attr, AttrHelpersForLayout}; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods; @@ -85,7 +84,7 @@ use std::mem; use std::sync::Arc; use std::sync::atomic::{AtomicUsize, Ordering}; use string_cache::{Atom, BorrowedAtom, BorrowedNamespace, Namespace, QualName}; -use style::attr::LengthOrPercentageOrAuto; +use style::attr::{AttrValue, LengthOrPercentageOrAuto}; use style::element_state::*; use style::parser::ParserContextExtraData; use style::properties::DeclaredValue; diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs index 4fb575dd1e2..161a7d43eaf 100644 --- a/components/script/dom/htmlanchorelement.rs +++ b/components/script/dom/htmlanchorelement.rs @@ -2,9 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - use dom::activation::Activatable; -use dom::attr::AttrValue; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods; use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding; @@ -29,6 +27,7 @@ use num_traits::ToPrimitive; use script_traits::MozBrowserEvent; use std::default::Default; use string_cache::Atom; +use style::attr::AttrValue; use url::Url; use util::prefs::mozbrowser_enabled; diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs index df46e89f06f..16d7e46b10e 100644 --- a/components/script/dom/htmlappletelement.rs +++ b/components/script/dom/htmlappletelement.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLAppletElementBinding; use dom::bindings::codegen::Bindings::HTMLAppletElementBinding::HTMLAppletElementMethods; use dom::bindings::inheritance::Castable; @@ -13,6 +12,7 @@ use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLAppletElement { diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs index 4e8139374f0..7998333810e 100644 --- a/components/script/dom/htmlareaelement.rs +++ b/components/script/dom/htmlareaelement.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLAreaElementBinding; use dom::bindings::codegen::Bindings::HTMLAreaElementBinding::HTMLAreaElementMethods; use dom::bindings::inheritance::Castable; @@ -15,6 +14,7 @@ use dom::node::Node; use dom::virtualmethods::VirtualMethods; use std::default::Default; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLAreaElement { diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs index 944b3675cba..e0c38b1ab41 100644 --- a/components/script/dom/htmlbaseelement.rs +++ b/components/script/dom/htmlbaseelement.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLBaseElementBinding; use dom::bindings::codegen::Bindings::HTMLBaseElementBinding::HTMLBaseElementMethods; use dom::bindings::inheritance::Castable; @@ -14,6 +14,7 @@ use dom::htmlelement::HTMLElement; use dom::node::{Node, UnbindContext, document_from_node}; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; use url::Url; #[dom_struct] diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index b5408d877ac..79dbd1438e4 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::codegen::Bindings::EventHandlerBinding::{EventHandlerNonNull, OnBeforeUnloadEventHandlerNonNull}; use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods}; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; @@ -18,6 +18,7 @@ use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use script_traits::ScriptMsg as ConstellationMsg; use string_cache::Atom; +use style::attr::AttrValue; use time; use url::Url; diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 18dcb6d2e34..95073d49cd3 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -4,7 +4,6 @@ use canvas_traits::{CanvasMsg, FromLayoutMsg, CanvasData}; use dom::attr::Attr; -use dom::attr::AttrValue; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods; use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding; @@ -33,6 +32,7 @@ use offscreen_gl_context::GLContextAttributes; use rustc_serialize::base64::{STANDARD, ToBase64}; use std::iter::repeat; use string_cache::Atom; +use style::attr::AttrValue; const DEFAULT_WIDTH: u32 = 300; const DEFAULT_HEIGHT: u32 = 150; diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 086eb6ff687..87bf5d92ff4 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -4,7 +4,6 @@ use dom::activation::{ActivationSource, synthetic_click_activation}; use dom::attr::Attr; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods; use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::EventHandlerBinding::OnErrorEventHandlerNonNull; @@ -35,6 +34,7 @@ use std::borrow::ToOwned; use std::default::Default; use std::rc::Rc; use string_cache::Atom; +use style::attr::AttrValue; use style::element_state::*; #[dom_struct] diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs index 74526b569bb..5968efc7948 100644 --- a/components/script/dom/htmlfontelement.rs +++ b/components/script/dom/htmlfontelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLFontElementBinding; use dom::bindings::codegen::Bindings::HTMLFontElementBinding::HTMLFontElementMethods; use dom::bindings::inheritance::Castable; @@ -15,6 +14,7 @@ use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; use style::values::specified; use util::str::{HTML_SPACE_CHARACTERS, read_numbers}; diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 66121a422bb..fcc10e3d134 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -2,7 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods; use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; @@ -50,6 +49,7 @@ use std::borrow::ToOwned; use std::cell::Cell; use std::sync::mpsc::Sender; use string_cache::Atom; +use style::attr::AttrValue; use task_source::TaskSource; use task_source::dom_manipulation::DOMManipulationTask; use url::form_urlencoded; diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs index 1041319f907..a3127449fcc 100644 --- a/components/script/dom/htmlhrelement.rs +++ b/components/script/dom/htmlhrelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLHRElementBinding::{self, HTMLHRElementMethods}; use dom::bindings::inheritance::Castable; use dom::bindings::js::{LayoutJS, Root}; @@ -14,7 +13,7 @@ use dom::htmlelement::HTMLElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; -use style::attr::LengthOrPercentageOrAuto; +use style::attr::{AttrValue, LengthOrPercentageOrAuto}; #[dom_struct] pub struct HTMLHRElement { diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index bc37f526f88..6d37513d01a 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use document_loader::{LoadType, LoadBlocker}; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementErrorEventDetail; use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementIconChangeEventDetail; @@ -42,7 +42,7 @@ use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed}; use script_traits::{IFrameLoadInfo, MozBrowserEvent, ScriptMsg as ConstellationMsg}; use std::cell::Cell; use string_cache::Atom; -use style::attr::LengthOrPercentageOrAuto; +use style::attr::{AttrValue, LengthOrPercentageOrAuto}; use style::context::ReflowGoal; use url::Url; use util::prefs::mozbrowser_enabled; diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index 49f771824d3..06a5bf93abf 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -4,7 +4,6 @@ use app_units::Au; use dom::attr::Attr; -use dom::attr::AttrValue; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLImageElementBinding; use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods; @@ -31,7 +30,7 @@ use script_runtime::ScriptThreadEventCategory::UpdateReplacedElement; use script_thread::Runnable; use std::sync::Arc; use string_cache::Atom; -use style::attr::LengthOrPercentageOrAuto; +use style::attr::{AttrValue, LengthOrPercentageOrAuto}; use url::Url; #[derive(JSTraceable, HeapSizeOf)] diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index a7bb9846bb9..4c164f2c819 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -4,7 +4,7 @@ use caseless::compatibility_caseless_match_str; use dom::activation::{Activatable, ActivationSource, synthetic_click_activation}; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::FileListBinding::FileListMethods; @@ -39,6 +39,7 @@ use std::borrow::ToOwned; use std::cell::Cell; use std::ops::Range; use string_cache::Atom; +use style::attr::AttrValue; use style::element_state::*; use textinput::KeyReaction::{DispatchInput, Nothing, RedrawSelection, TriggerDefaultAction}; use textinput::Lines::Single; diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs index e14dce36b88..6e808a14fc3 100644 --- a/components/script/dom/htmllabelelement.rs +++ b/components/script/dom/htmllabelelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::activation::{Activatable, ActivationSource, synthetic_click_activation}; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLLabelElementBinding; use dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods; use dom::bindings::inheritance::Castable; @@ -18,6 +17,7 @@ use dom::htmlformelement::{FormControl, HTMLFormElement}; use dom::node::{document_from_node, Node}; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLLabelElement { diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index a69ec5b9aa5..2b0056a8d65 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -4,7 +4,7 @@ use cssparser::Parser as CssParser; use document_loader::LoadType; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLLinkElementBinding; use dom::bindings::codegen::Bindings::HTMLLinkElementBinding::HTMLLinkElementMethods; @@ -36,6 +36,7 @@ use std::default::Default; use std::mem; use std::sync::{Arc, Mutex}; use string_cache::Atom; +use style::attr::AttrValue; use style::media_queries::{MediaQueryList, parse_media_query_list}; use style::parser::ParserContextExtraData; use style::servo::Stylesheet; diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs index 13bf926cded..160b4a9c68e 100644 --- a/components/script/dom/htmlmetaelement.rs +++ b/components/script/dom/htmlmetaelement.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::HTMLMetaElementBinding; use dom::bindings::codegen::Bindings::HTMLMetaElementBinding::HTMLMetaElementMethods; @@ -19,6 +19,7 @@ use dom::virtualmethods::VirtualMethods; use std::ascii::AsciiExt; use std::sync::Arc; use string_cache::Atom; +use style::attr::AttrValue; use style::servo::Stylesheet; use style::stylesheets::{CSSRule, Origin}; use style::viewport::ViewportRule; diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 8b04c9b00eb..26e1ad9b0c4 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods; @@ -23,6 +23,7 @@ use dom::validation::Validatable; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; use style::element_state::*; #[dom_struct] diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs index ae54b915342..eeeafd8f977 100644 --- a/components/script/dom/htmltablecellelement.rs +++ b/components/script/dom/htmltablecellelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::inheritance::Castable; @@ -16,7 +15,7 @@ use dom::htmltablerowelement::HTMLTableRowElement; use dom::node::Node; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; -use style::attr::LengthOrPercentageOrAuto; +use style::attr::{AttrValue, LengthOrPercentageOrAuto}; const DEFAULT_COLSPAN: u32 = 1; diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index a86381967b4..ec6e4b59efe 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMethods; use dom::bindings::codegen::Bindings::HTMLTableElementBinding; use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods; @@ -24,7 +24,7 @@ use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use std::cell::Cell; use string_cache::Atom; -use style::attr::{LengthOrPercentageOrAuto, parse_unsigned_integer}; +use style::attr::{AttrValue, LengthOrPercentageOrAuto, parse_unsigned_integer}; #[dom_struct] pub struct HTMLTableElement { diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 06669b74c18..92c62115bd4 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods; use dom::bindings::codegen::Bindings::HTMLTableRowElementBinding::{self, HTMLTableRowElementMethods}; use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::HTMLTableSectionElementMethods; @@ -23,7 +22,7 @@ use dom::htmltablesectionelement::HTMLTableSectionElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; - +use style::attr::AttrValue; #[derive(JSTraceable)] struct CellsFilter; diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index bc907c16324..7b047439743 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -3,7 +3,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use cssparser::RGBA; -use dom::attr::AttrValue; use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::{self, HTMLTableSectionElementMethods}; use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods; use dom::bindings::error::{ErrorResult, Fallible}; @@ -18,6 +17,7 @@ use dom::htmltablerowelement::HTMLTableRowElement; use dom::node::{Node, window_from_node}; use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLTableSectionElement { diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 19d108d95cc..69fe9046dad 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::EventBinding::EventMethods; use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding; @@ -29,6 +29,7 @@ use script_traits::ScriptMsg as ConstellationMsg; use std::cell::Cell; use std::ops::Range; use string_cache::Atom; +use style::attr::AttrValue; use style::element_state::*; use textinput::{KeyReaction, Lines, TextInput, SelectionDirection}; diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 5983890e51a..3ad9713fb70 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -228,9 +228,9 @@ macro_rules! make_atomic_setter( macro_rules! make_legacy_color_setter( ( $attr:ident, $htmlname:tt ) => ( fn $attr(&self, value: DOMString) { - use dom::attr::AttrValue; use dom::bindings::inheritance::Castable; use dom::element::Element; + use style::attr::AttrValue; let element = self.upcast::<Element>(); let value = AttrValue::from_legacy_color(value.into()); element.set_attribute(&atom!($htmlname), value) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 384465a8039..d3e6a955284 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -38,8 +38,11 @@ use dom::documenttype::DocumentType; use dom::element::{Element, ElementCreator}; use dom::eventtarget::EventTarget; use dom::htmlbodyelement::HTMLBodyElement; +use dom::htmlcanvaselement::{LayoutHTMLCanvasElementHelpers, HTMLCanvasData}; use dom::htmlcollection::HTMLCollection; use dom::htmlelement::HTMLElement; +use dom::htmliframeelement::{HTMLIFrameElement, HTMLIFrameElementLayoutMethods}; +use dom::htmlimageelement::{HTMLImageElement, LayoutHTMLImageElementHelpers}; use dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers}; use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers}; use dom::nodelist::NodeList; @@ -56,6 +59,7 @@ use html5ever::tree_builder::QuirksMode; use js::jsapi::{JSContext, JSObject, JSRuntime}; use layout_interface::Msg; use libc::{self, c_void, uintptr_t}; +use msg::constellation_msg::PipelineId; use parse::html::parse_html_fragment; use ref_slice::ref_slice; use script_traits::UntrustedNodeAddress; @@ -68,8 +72,10 @@ 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 url::Url; use util::thread_state; use uuid::Uuid; @@ -960,6 +966,10 @@ pub trait LayoutNodeHelpers { unsafe fn init_style_and_layout_data(&self, OpaqueStyleAndLayoutData); fn text_content(&self) -> String; + fn selection(&self) -> Option<Range<usize>>; + fn image_url(&self) -> Option<Url>; + fn canvas_data(&self) -> Option<HTMLCanvasData>; + fn iframe_pipeline_id(&self) -> PipelineId; } impl LayoutNodeHelpers for LayoutJS<Node> { @@ -1067,6 +1077,39 @@ impl LayoutNodeHelpers for LayoutJS<Node> { panic!("not text!") } + + #[allow(unsafe_code)] + fn selection(&self) -> Option<Range<usize>> { + if let Some(area) = self.downcast::<HTMLTextAreaElement>() { + return unsafe { area.selection_for_layout() }; + } + + if let Some(input) = self.downcast::<HTMLInputElement>() { + return unsafe { input.selection_for_layout() }; + } + + None + } + + #[allow(unsafe_code)] + fn image_url(&self) -> Option<Url> { + unsafe { + self.downcast::<HTMLImageElement>() + .expect("not an image!") + .image_url() + } + } + + fn canvas_data(&self) -> Option<HTMLCanvasData> { + self.downcast() + .map(|canvas| canvas.data()) + } + + fn iframe_pipeline_id(&self) -> PipelineId { + let iframe_element = self.downcast::<HTMLIFrameElement>() + .expect("not an iframe element!"); + iframe_element.pipeline_id().unwrap() + } } diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index d8259307274..b42e8b676c3 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::attr::{Attr, AttrValue}; +use dom::attr::Attr; use dom::bindings::inheritance::Castable; use dom::bindings::inheritance::ElementTypeId; use dom::bindings::inheritance::HTMLElementTypeId; @@ -47,7 +47,7 @@ use dom::htmltextareaelement::HTMLTextAreaElement; use dom::htmltitleelement::HTMLTitleElement; use dom::node::{ChildrenMutation, CloneChildrenFlag, Node, UnbindContext}; use string_cache::Atom; - +use style::attr::AttrValue; /// Trait to allow DOM nodes to opt-in to overriding (or adding to) common /// behaviours. Replicates the effect of C++ virtual methods. diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 18131bd5fd8..318d3bbc1ec 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -46,6 +46,7 @@ use js::jsapi::{JSContext, JS_ParseJSON, RootedValue}; use js::jsval::{JSVal, NullValue, UndefinedValue}; use msg::constellation_msg::{PipelineId, ReferrerPolicy}; use net_traits::CoreResourceMsg::Load; +use net_traits::trim_http_whitespace; use net_traits::{AsyncResponseListener, AsyncResponseTarget, Metadata, NetworkError, RequestSource}; use net_traits::{LoadConsumer, LoadContext, LoadData, ResourceCORSData, CoreResourceThread, LoadOrigin}; use network_listener::{NetworkListener, PreInvoke}; @@ -1506,27 +1507,3 @@ pub fn is_field_value(slice: &[u8]) -> bool { } }) } - -/// Normalize `self`, as defined by -/// [the Fetch Spec](https://fetch.spec.whatwg.org/#concept-header-value-normalize). -pub fn trim_http_whitespace(mut slice: &[u8]) -> &[u8] { - const HTTP_WS_BYTES: &'static [u8] = b"\x09\x0A\x0D\x20"; - - loop { - match slice.split_first() { - Some((first, remainder)) if HTTP_WS_BYTES.contains(first) => - slice = remainder, - _ => break, - } - } - - loop { - match slice.split_last() { - Some((last, remainder)) if HTTP_WS_BYTES.contains(last) => - slice = remainder, - _ => break, - } - } - - slice -} |