aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/devtools.rs2
-rw-r--r--components/script/dom/activation.rs2
-rw-r--r--components/script/dom/attr.rs17
-rw-r--r--components/script/dom/beforeunloadevent.rs2
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py9
-rw-r--r--components/script/dom/bindings/conversions.rs97
-rw-r--r--components/script/dom/bindings/str.rs121
-rw-r--r--components/script/dom/bindings/trace.rs3
-rw-r--r--components/script/dom/bindings/utils.rs6
-rw-r--r--components/script/dom/bindings/xmlname.rs2
-rw-r--r--components/script/dom/blob.rs2
-rw-r--r--components/script/dom/bluetooth.rs2
-rw-r--r--components/script/dom/bluetoothdevice.rs2
-rw-r--r--components/script/dom/bluetoothremotegattcharacteristic.rs3
-rw-r--r--components/script/dom/bluetoothremotegattdescriptor.rs3
-rw-r--r--components/script/dom/bluetoothremotegattserver.rs2
-rw-r--r--components/script/dom/bluetoothremotegattservice.rs2
-rw-r--r--components/script/dom/bluetoothuuid.rs2
-rw-r--r--components/script/dom/browsingcontext.rs2
-rw-r--r--components/script/dom/canvasgradient.rs2
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs2
-rw-r--r--components/script/dom/characterdata.rs2
-rw-r--r--components/script/dom/closeevent.rs2
-rw-r--r--components/script/dom/comment.rs2
-rw-r--r--components/script/dom/console.rs2
-rw-r--r--components/script/dom/create.rs2
-rw-r--r--components/script/dom/css.rs2
-rw-r--r--components/script/dom/cssstyledeclaration.rs3
-rw-r--r--components/script/dom/customevent.rs2
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs2
-rw-r--r--components/script/dom/document.rs7
-rw-r--r--components/script/dom/documentfragment.rs2
-rw-r--r--components/script/dom/documenttype.rs2
-rw-r--r--components/script/dom/domexception.rs2
-rw-r--r--components/script/dom/domimplementation.rs2
-rw-r--r--components/script/dom/domparser.rs2
-rw-r--r--components/script/dom/domstringmap.rs2
-rw-r--r--components/script/dom/domtokenlist.rs3
-rw-r--r--components/script/dom/element.rs22
-rw-r--r--components/script/dom/errorevent.rs2
-rw-r--r--components/script/dom/event.rs2
-rw-r--r--components/script/dom/eventsource.rs2
-rw-r--r--components/script/dom/eventtarget.rs2
-rw-r--r--components/script/dom/file.rs2
-rw-r--r--components/script/dom/filereader.rs2
-rw-r--r--components/script/dom/focusevent.rs2
-rw-r--r--components/script/dom/forcetouchevent.rs2
-rw-r--r--components/script/dom/formdata.rs3
-rw-r--r--components/script/dom/hashchangeevent.rs3
-rw-r--r--components/script/dom/htmlanchorelement.rs5
-rw-r--r--components/script/dom/htmlappletelement.rs4
-rw-r--r--components/script/dom/htmlareaelement.rs4
-rw-r--r--components/script/dom/htmlaudioelement.rs2
-rw-r--r--components/script/dom/htmlbaseelement.rs2
-rw-r--r--components/script/dom/htmlbodyelement.rs8
-rw-r--r--components/script/dom/htmlbrelement.rs2
-rw-r--r--components/script/dom/htmlbuttonelement.rs2
-rw-r--r--components/script/dom/htmlcanvaselement.rs6
-rw-r--r--components/script/dom/htmlcollection.rs3
-rw-r--r--components/script/dom/htmldataelement.rs2
-rw-r--r--components/script/dom/htmldatalistelement.rs2
-rw-r--r--components/script/dom/htmldetailselement.rs2
-rw-r--r--components/script/dom/htmldialogelement.rs2
-rw-r--r--components/script/dom/htmldirectoryelement.rs2
-rw-r--r--components/script/dom/htmldivelement.rs2
-rw-r--r--components/script/dom/htmldlistelement.rs2
-rw-r--r--components/script/dom/htmlelement.rs2
-rw-r--r--components/script/dom/htmlembedelement.rs2
-rw-r--r--components/script/dom/htmlfieldsetelement.rs2
-rw-r--r--components/script/dom/htmlfontelement.rs11
-rw-r--r--components/script/dom/htmlformcontrolscollection.rs2
-rw-r--r--components/script/dom/htmlformelement.rs5
-rw-r--r--components/script/dom/htmlframeelement.rs2
-rw-r--r--components/script/dom/htmlframesetelement.rs2
-rw-r--r--components/script/dom/htmlheadelement.rs2
-rw-r--r--components/script/dom/htmlheadingelement.rs2
-rw-r--r--components/script/dom/htmlhrelement.rs9
-rw-r--r--components/script/dom/htmlhtmlelement.rs2
-rw-r--r--components/script/dom/htmliframeelement.rs9
-rw-r--r--components/script/dom/htmlimageelement.rs11
-rw-r--r--components/script/dom/htmlinputelement.rs10
-rw-r--r--components/script/dom/htmllabelelement.rs4
-rw-r--r--components/script/dom/htmllegendelement.rs2
-rw-r--r--components/script/dom/htmllielement.rs2
-rw-r--r--components/script/dom/htmllinkelement.rs5
-rw-r--r--components/script/dom/htmlmapelement.rs2
-rw-r--r--components/script/dom/htmlmediaelement.rs2
-rw-r--r--components/script/dom/htmlmetaelement.rs5
-rw-r--r--components/script/dom/htmlmeterelement.rs2
-rw-r--r--components/script/dom/htmlmodelement.rs2
-rw-r--r--components/script/dom/htmlobjectelement.rs2
-rw-r--r--components/script/dom/htmlolistelement.rs2
-rw-r--r--components/script/dom/htmloptgroupelement.rs2
-rw-r--r--components/script/dom/htmloptionelement.rs3
-rw-r--r--components/script/dom/htmloutputelement.rs2
-rw-r--r--components/script/dom/htmlparagraphelement.rs2
-rw-r--r--components/script/dom/htmlparamelement.rs2
-rw-r--r--components/script/dom/htmlpreelement.rs2
-rw-r--r--components/script/dom/htmlprogresselement.rs2
-rw-r--r--components/script/dom/htmlquoteelement.rs2
-rw-r--r--components/script/dom/htmlscriptelement.rs3
-rw-r--r--components/script/dom/htmlselectelement.rs4
-rw-r--r--components/script/dom/htmlsourceelement.rs2
-rw-r--r--components/script/dom/htmlspanelement.rs2
-rw-r--r--components/script/dom/htmlstyleelement.rs2
-rw-r--r--components/script/dom/htmltablecaptionelement.rs2
-rw-r--r--components/script/dom/htmltablecellelement.rs9
-rw-r--r--components/script/dom/htmltablecolelement.rs2
-rw-r--r--components/script/dom/htmltabledatacellelement.rs2
-rw-r--r--components/script/dom/htmltableelement.rs9
-rw-r--r--components/script/dom/htmltableheadercellelement.rs2
-rw-r--r--components/script/dom/htmltablerowelement.rs4
-rw-r--r--components/script/dom/htmltablesectionelement.rs4
-rw-r--r--components/script/dom/htmltemplateelement.rs2
-rw-r--r--components/script/dom/htmltextareaelement.rs6
-rw-r--r--components/script/dom/htmltimeelement.rs2
-rw-r--r--components/script/dom/htmltitleelement.rs2
-rw-r--r--components/script/dom/htmltrackelement.rs2
-rw-r--r--components/script/dom/htmlulistelement.rs2
-rw-r--r--components/script/dom/htmlunknownelement.rs2
-rw-r--r--components/script/dom/htmlvideoelement.rs2
-rw-r--r--components/script/dom/keyboardevent.rs2
-rw-r--r--components/script/dom/location.rs3
-rw-r--r--components/script/dom/macros.rs9
-rw-r--r--components/script/dom/messageevent.rs2
-rw-r--r--components/script/dom/mimetype.rs2
-rw-r--r--components/script/dom/mimetypearray.rs2
-rw-r--r--components/script/dom/mouseevent.rs2
-rw-r--r--components/script/dom/namednodemap.rs2
-rw-r--r--components/script/dom/navigator.rs2
-rw-r--r--components/script/dom/navigatorinfo.rs2
-rw-r--r--components/script/dom/node.rs2
-rw-r--r--components/script/dom/pagetransitionevent.rs2
-rw-r--r--components/script/dom/plugin.rs2
-rw-r--r--components/script/dom/pluginarray.rs2
-rw-r--r--components/script/dom/popstateevent.rs2
-rw-r--r--components/script/dom/processinginstruction.rs2
-rw-r--r--components/script/dom/progressevent.rs2
-rw-r--r--components/script/dom/radionodelist.rs2
-rw-r--r--components/script/dom/range.rs2
-rw-r--r--components/script/dom/storage.rs2
-rw-r--r--components/script/dom/storageevent.rs2
-rw-r--r--components/script/dom/stylesheet.rs2
-rw-r--r--components/script/dom/testbinding.rs3
-rw-r--r--components/script/dom/testbindingproxy.rs2
-rw-r--r--components/script/dom/text.rs2
-rw-r--r--components/script/dom/textdecoder.rs3
-rw-r--r--components/script/dom/textencoder.rs3
-rw-r--r--components/script/dom/touchevent.rs2
-rw-r--r--components/script/dom/uievent.rs2
-rw-r--r--components/script/dom/url.rs3
-rw-r--r--components/script/dom/urlsearchparams.rs3
-rw-r--r--components/script/dom/userscripts.rs2
-rw-r--r--components/script/dom/virtualmethods.rs4
-rw-r--r--components/script/dom/webglactiveinfo.rs2
-rw-r--r--components/script/dom/webglcontextevent.rs2
-rw-r--r--components/script/dom/webglprogram.rs2
-rw-r--r--components/script/dom/webglrenderingcontext.rs2
-rw-r--r--components/script/dom/webglshader.rs2
-rw-r--r--components/script/dom/websocket.rs3
-rw-r--r--components/script/dom/window.rs3
-rw-r--r--components/script/dom/worker.rs2
-rw-r--r--components/script/dom/workerglobalscope.rs2
-rw-r--r--components/script/dom/workerlocation.rs3
-rw-r--r--components/script/dom/workernavigator.rs2
-rw-r--r--components/script/dom/xmldocument.rs2
-rw-r--r--components/script/dom/xmlhttprequest.rs3
-rw-r--r--components/script/lib.rs1
-rw-r--r--components/script/parse/html.rs2
-rw-r--r--components/script/parse/xml.rs2
-rw-r--r--components/script/script_thread.rs2
-rw-r--r--components/script/textinput.rs2
-rw-r--r--components/script/timers.rs2
-rw-r--r--components/script/webdriver_handlers.rs2
-rw-r--r--components/servo/Cargo.lock2
-rw-r--r--components/servo/Cargo.toml2
-rw-r--r--components/style/attr.rs48
-rw-r--r--components/util/Cargo.toml11
-rw-r--r--components/util/lib.rs7
-rw-r--r--components/util/non_geckolib.rs91
-rw-r--r--components/util/str.rs114
-rw-r--r--ports/cef/Cargo.lock2
-rw-r--r--ports/cef/Cargo.toml2
-rw-r--r--ports/geckolib/Cargo.lock1
-rw-r--r--ports/gonk/Cargo.lock1
-rw-r--r--ports/gonk/Cargo.toml2
-rw-r--r--tests/unit/script/textinput.rs2
-rw-r--r--tests/unit/style/attr.rs12
188 files changed, 501 insertions, 529 deletions
diff --git a/components/script/devtools.rs b/components/script/devtools.rs
index 7fea809a594..73f7604aecc 100644
--- a/components/script/devtools.rs
+++ b/components/script/devtools.rs
@@ -15,6 +15,7 @@ use dom::bindings::conversions::{FromJSValConvertible, jsstring_to_str};
use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::browsingcontext::{BrowsingContext, IterableContext};
use dom::element::Element;
use dom::node::Node;
@@ -27,7 +28,6 @@ use script_thread::get_browsing_context;
use std::ffi::CStr;
use std::str;
use style::properties::longhands::{margin_top, margin_right, margin_bottom, margin_left};
-use util::str::DOMString;
use uuid::Uuid;
#[allow(unsafe_code)]
diff --git a/components/script/dom/activation.rs b/components/script/dom/activation.rs
index 9fd94ae6690..ff8d59aac96 100644
--- a/components/script/dom/activation.rs
+++ b/components/script/dom/activation.rs
@@ -4,12 +4,12 @@
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
use dom::bindings::inheritance::Castable;
+use dom::bindings::str::DOMString;
use dom::element::Element;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::mouseevent::MouseEvent;
use dom::node::window_from_node;
-use util::str::DOMString;
/// Trait for elements with defined activation behavior
pub trait Activatable {
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs
index 50a5a754f25..95ff73e2cb7 100644
--- a/components/script/dom/attr.rs
+++ b/components/script/dom/attr.rs
@@ -10,6 +10,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap};
use dom::bindings::js::{LayoutJS, Root, RootedReference};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::element::{AttributeMutation, Element};
use dom::virtualmethods::vtable_for;
use dom::window::Window;
@@ -18,7 +19,6 @@ use std::cell::Ref;
use std::mem;
use string_cache::{Atom, Namespace};
pub use style::attr::{AttrIdentifier, AttrValue};
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#interface-attr
#[dom_struct]
@@ -101,14 +101,13 @@ impl AttrMethods for Attr {
// https://dom.spec.whatwg.org/#dom-attr-value
fn SetValue(&self, value: DOMString) {
- match self.owner() {
- None => *self.value.borrow_mut() = AttrValue::String(value),
- Some(owner) => {
- let value = owner.parse_attribute(&self.identifier.namespace,
- self.local_name(),
- value);
- self.set_value(value, owner.r());
- }
+ if let Some(owner) = self.owner() {
+ let value = owner.parse_attribute(&self.identifier.namespace,
+ self.local_name(),
+ value);
+ self.set_value(value, owner.r());
+ } else {
+ *self.value.borrow_mut() = AttrValue::String(value.into());
}
}
diff --git a/components/script/dom/beforeunloadevent.rs b/components/script/dom/beforeunloadevent.rs
index 9257cbcafcb..b66df9429dc 100644
--- a/components/script/dom/beforeunloadevent.rs
+++ b/components/script/dom/beforeunloadevent.rs
@@ -10,9 +10,9 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use string_cache::Atom;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#beforeunloadevent
#[dom_struct]
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index b10170be835..b44cf2c1c2b 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2087,16 +2087,15 @@ def UnionTypes(descriptors, dictionaries, callbacks, config):
'dom::bindings::conversions::FromJSValConvertible',
'dom::bindings::conversions::ToJSValConvertible',
'dom::bindings::conversions::ConversionBehavior',
- 'dom::bindings::conversions::root_from_handlevalue',
'dom::bindings::conversions::StringificationBehavior',
+ 'dom::bindings::conversions::root_from_handlevalue',
'dom::bindings::error::throw_not_in_union',
'dom::bindings::js::Root',
- 'dom::bindings::str::USVString',
+ 'dom::bindings::str::{DOMString, USVString}',
'dom::types::*',
'js::jsapi::JSContext',
'js::jsapi::{HandleValue, MutableHandleValue}',
'js::jsval::JSVal',
- 'util::str::DOMString',
]
# Now find all the things we'll need as arguments and return values because
@@ -5598,14 +5597,12 @@ class CGBindingRoot(CGThing):
'dom::bindings::proxyhandler::{ensure_expando_object, fill_property_descriptor}',
'dom::bindings::proxyhandler::{get_expando_object, get_property_descriptor}',
'dom::bindings::num::Finite',
- 'dom::bindings::str::ByteString',
- 'dom::bindings::str::USVString',
+ 'dom::bindings::str::{ByteString, DOMString, USVString}',
'dom::bindings::trace::RootedVec',
'dom::bindings::weakref::{DOM_WEAK_SLOT, WeakBox, WeakReferenceable}',
'mem::heap_size_of_raw_self_and_children',
'libc',
'util::prefs',
- 'util::str::DOMString',
'std::borrow::ToOwned',
'std::cmp',
'std::mem',
diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs
index e6e1dac58df..80911b65e74 100644
--- a/components/script/dom/bindings/conversions.rs
+++ b/components/script/dom/bindings/conversions.rs
@@ -36,27 +36,26 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflectable, Reflector};
-use dom::bindings::str::{ByteString, USVString};
+use dom::bindings::str::{ByteString, DOMString, USVString};
use dom::bindings::utils::DOMClass;
use js;
pub use js::conversions::{FromJSValConvertible, ToJSValConvertible, ConversionBehavior};
+use js::conversions::latin1_to_string;
use js::error::throw_type_error;
use js::glue::{GetProxyPrivate, IsWrapper};
use js::glue::{RUST_JSID_IS_STRING, RUST_JSID_TO_STRING, UnwrapObject};
-use js::jsapi::{HandleId, HandleObject, HandleValue, JS_GetClass};
-use js::jsapi::{JSClass, JSContext, JSObject, MutableHandleValue};
-use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetReservedSlot};
-use js::jsapi::{JS_GetObjectAsArrayBufferView, JS_GetArrayBufferViewType};
-use js::jsapi::{JS_GetTwoByteStringCharsAndLength, JS_IsArrayObject, JS_NewStringCopyN};
-use js::jsapi::{JS_StringHasLatin1Chars, JS_WrapValue};
-use js::jsapi::{Type};
+use js::jsapi::{HandleId, HandleObject, HandleValue, JSClass, JSContext};
+use js::jsapi::{JSObject, JSString, JS_GetArrayBufferViewType, JS_GetClass};
+use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetObjectAsArrayBufferView};
+use js::jsapi::{JS_GetReservedSlot, JS_GetTwoByteStringCharsAndLength};
+use js::jsapi::{JS_IsArrayObject, JS_NewStringCopyN, JS_StringHasLatin1Chars};
+use js::jsapi::{JS_WrapValue, MutableHandleValue, Type};
use js::jsval::{ObjectValue, StringValue};
use js::rust::ToString;
use libc;
use num_traits::Float;
-use std::{ptr, mem, slice};
-pub use util::non_geckolib::{StringificationBehavior, jsstring_to_str};
-use util::str::DOMString;
+use std::{char, mem, ptr, slice};
+use util::opts;
/// A trait to check whether a given `JSObject` implements an IDL interface.
pub trait IDLInterface {
@@ -125,6 +124,82 @@ impl ToJSValConvertible for USVString {
}
}
+/// Behavior for stringification of `JSVal`s.
+#[derive(PartialEq, Clone)]
+pub enum StringificationBehavior {
+ /// Convert `null` to the string `"null"`.
+ Default,
+ /// Convert `null` to the empty string.
+ Empty,
+}
+
+// https://heycam.github.io/webidl/#es-DOMString
+impl ToJSValConvertible for DOMString {
+ unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) {
+ (**self).to_jsval(cx, rval);
+ }
+}
+
+// https://heycam.github.io/webidl/#es-DOMString
+impl FromJSValConvertible for DOMString {
+ type Config = StringificationBehavior;
+ unsafe fn from_jsval(cx: *mut JSContext,
+ value: HandleValue,
+ null_behavior: StringificationBehavior)
+ -> Result<DOMString, ()> {
+ if null_behavior == StringificationBehavior::Empty &&
+ value.get().is_null() {
+ Ok(DOMString::new())
+ } else {
+ let jsstr = ToString(cx, value);
+ if jsstr.is_null() {
+ debug!("ToString failed");
+ Err(())
+ } else {
+ Ok(jsstring_to_str(cx, jsstr))
+ }
+ }
+ }
+}
+
+/// Convert the given `JSString` to a `DOMString`. Fails if the string does not
+/// contain valid UTF-16.
+pub unsafe fn jsstring_to_str(cx: *mut JSContext, s: *mut JSString) -> DOMString {
+ let latin1 = JS_StringHasLatin1Chars(s);
+ DOMString::from_string(if latin1 {
+ latin1_to_string(cx, s)
+ } else {
+ let mut length = 0;
+ let chars = JS_GetTwoByteStringCharsAndLength(cx, ptr::null(), s, &mut length);
+ assert!(!chars.is_null());
+ let potentially_ill_formed_utf16 = slice::from_raw_parts(chars, length as usize);
+ let mut s = String::with_capacity(length as usize);
+ for item in char::decode_utf16(potentially_ill_formed_utf16.iter().cloned()) {
+ match item {
+ Ok(c) => s.push(c),
+ Err(_) => {
+ // FIXME: Add more info like document URL in the message?
+ macro_rules! message {
+ () => {
+ "Found an unpaired surrogate in a DOM string. \
+ If you see this in real web content, \
+ please comment on https://github.com/servo/servo/issues/6564"
+ }
+ }
+ if opts::get().replace_surrogates {
+ error!(message!());
+ s.push('\u{FFFD}');
+ } else {
+ panic!(concat!(message!(), " Use `-Z replace-surrogates` \
+ on the command line to make this non-fatal."));
+ }
+ }
+ }
+ }
+ s
+ })
+}
+
// http://heycam.github.io/webidl/#es-USVString
impl FromJSValConvertible for USVString {
type Config = ();
diff --git a/components/script/dom/bindings/str.rs b/components/script/dom/bindings/str.rs
index f1de6297ceb..4c5f4b4fd6a 100644
--- a/components/script/dom/bindings/str.rs
+++ b/components/script/dom/bindings/str.rs
@@ -6,11 +6,14 @@
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;
-use std::str::FromStr;
+use std::str::{Bytes, FromStr};
+use string_cache::Atom;
/// Encapsulates the IDL `ByteString` type.
#[derive(JSTraceable, Clone, Eq, PartialEq, HeapSizeOf)]
@@ -114,3 +117,119 @@ pub fn is_token(s: &[u8]) -> bool {
}
})
}
+
+/// A DOMString.
+#[derive(Clone, Debug, Eq, Hash, HeapSizeOf, Ord, PartialEq, PartialOrd)]
+pub struct DOMString(String);
+
+impl !Send for DOMString {}
+
+impl DOMString {
+ /// Creates a new `DOMString`.
+ pub fn new() -> DOMString {
+ DOMString(String::new())
+ }
+
+ /// Creates a new `DOMString` from a `String`.
+ pub fn from_string(s: String) -> DOMString {
+ DOMString(s)
+ }
+
+ /// Appends a given string slice onto the end of this String.
+ pub fn push_str(&mut self, string: &str) {
+ self.0.push_str(string)
+ }
+
+ /// Truncates this `DOMString`, removing all contents.
+ pub fn clear(&mut self) {
+ self.0.clear()
+ }
+
+ /// An iterator over the bytes of this `DOMString`.
+ pub fn bytes(&self) -> Bytes {
+ self.0.bytes()
+ }
+}
+
+impl Default for DOMString {
+ fn default() -> Self {
+ DOMString(String::new())
+ }
+}
+
+impl Deref for DOMString {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ &self.0
+ }
+}
+
+impl DerefMut for DOMString {
+ #[inline]
+ fn deref_mut(&mut self) -> &mut str {
+ &mut self.0
+ }
+}
+
+impl AsRef<str> for DOMString {
+ fn as_ref(&self) -> &str {
+ &self.0
+ }
+}
+
+impl fmt::Display for DOMString {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ fmt::Display::fmt(&**self, f)
+ }
+}
+
+impl PartialEq<str> for DOMString {
+ fn eq(&self, other: &str) -> bool {
+ &**self == other
+ }
+}
+
+impl<'a> PartialEq<&'a str> for DOMString {
+ fn eq(&self, other: &&'a str) -> bool {
+ &**self == *other
+ }
+}
+
+impl From<String> for DOMString {
+ fn from(contents: String) -> DOMString {
+ DOMString(contents)
+ }
+}
+
+impl<'a> From<&'a str> for DOMString {
+ fn from(contents: &str) -> DOMString {
+ DOMString::from(String::from(contents))
+ }
+}
+
+impl From<DOMString> for Atom {
+ fn from(contents: DOMString) -> Atom {
+ Atom::from(contents.0)
+ }
+}
+
+impl From<DOMString> for String {
+ fn from(contents: DOMString) -> String {
+ contents.0
+ }
+}
+
+impl Into<Vec<u8>> for DOMString {
+ fn into(self) -> Vec<u8> {
+ self.0.into()
+ }
+}
+
+impl Extend<char> for DOMString {
+ fn extend<I>(&mut self, iterable: I) where I: IntoIterator<Item=char> {
+ self.0.extend(iterable)
+ }
+}
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs
index 4c6941a5f5e..e97e5cb923d 100644
--- a/components/script/dom/bindings/trace.rs
+++ b/components/script/dom/bindings/trace.rs
@@ -37,6 +37,7 @@ use devtools_traits::WorkerId;
use dom::bindings::js::{JS, Root};
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, Reflector};
+use dom::bindings::str::DOMString;
use dom::bindings::utils::WindowProxyHandler;
use dom::worker::SharedRt;
use encoding::types::EncodingRef;
@@ -89,7 +90,7 @@ use style::selector_impl::PseudoElement;
use style::values::specified::Length;
use url::Origin as UrlOrigin;
use url::Url;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
use uuid::Uuid;
use webrender_traits::WebGLError;
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index cf1cf37a8b9..607f74456d2 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -7,9 +7,11 @@
use dom::bindings::codegen::InterfaceObjectMap;
use dom::bindings::codegen::PrototypeList;
use dom::bindings::codegen::PrototypeList::{MAX_PROTO_CHAIN_LENGTH, PROTO_OR_IFACE_LENGTH};
-use dom::bindings::conversions::{DOM_OBJECT_SLOT, is_dom_class, private_from_proto_check};
+use dom::bindings::conversions::{DOM_OBJECT_SLOT, is_dom_class};
+use dom::bindings::conversions::{jsstring_to_str, private_from_proto_check};
use dom::bindings::error::throw_invalid_this;
use dom::bindings::inheritance::TopTypeId;
+use dom::bindings::str::DOMString;
use dom::bindings::trace::trace_object;
use dom::browsingcontext;
use heapsize::HeapSizeOf;
@@ -37,9 +39,7 @@ use std::ffi::CString;
use std::os::raw::c_void;
use std::ptr;
use std::slice;
-use util::non_geckolib::jsstring_to_str;
use util::prefs;
-use util::str::DOMString;
/// Proxy handler for a WindowProxy.
pub struct WindowProxyHandler(pub *const libc::c_void);
diff --git a/components/script/dom/bindings/xmlname.rs b/components/script/dom/bindings/xmlname.rs
index b7dd7ca7d19..11b83be7b99 100644
--- a/components/script/dom/bindings/xmlname.rs
+++ b/components/script/dom/bindings/xmlname.rs
@@ -5,8 +5,8 @@
//! Functions for validating and extracting qualified XML names.
use dom::bindings::error::{Error, ErrorResult, Fallible};
+use dom::bindings::str::DOMString;
use string_cache::{Atom, Namespace};
-use util::str::DOMString;
/// Validate a qualified name. See https://dom.spec.whatwg.org/#validate for details.
pub fn validate_qualified_name(qualified_name: &str) -> ErrorResult {
diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs
index bac02339917..47d758d3028 100644
--- a/components/script/dom/blob.rs
+++ b/components/script/dom/blob.rs
@@ -9,6 +9,7 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use encoding::all::UTF_8;
use encoding::types::{EncoderTrap, Encoding};
use num_traits::ToPrimitive;
@@ -17,7 +18,6 @@ use std::borrow::ToOwned;
use std::cell::Cell;
use std::cmp::{max, min};
use std::sync::Arc;
-use util::str::DOMString;
#[derive(Clone, JSTraceable)]
pub struct DataSlice {
diff --git a/components/script/dom/bluetooth.rs b/components/script/dom/bluetooth.rs
index 94e4ac5b146..3afc31d71a7 100644
--- a/components/script/dom/bluetooth.rs
+++ b/components/script/dom/bluetooth.rs
@@ -11,6 +11,7 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bluetoothadvertisingdata::BluetoothAdvertisingData;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothuuid::BluetoothUUID;
@@ -18,7 +19,6 @@ use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_scanfilter::{BluetoothScanfilter, BluetoothScanfilterSequence};
use net_traits::bluetooth_scanfilter::{RequestDeviceoptions, ServiceUUIDSequence};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
-use util::str::DOMString;
const FILTER_EMPTY_ERROR: &'static str = "'filters' member must be non - empty to find any devices.";
const FILTER_ERROR: &'static str = "A filter must restrict the devices in some way.";
diff --git a/components/script/dom/bluetoothdevice.rs b/components/script/dom/bluetoothdevice.rs
index 9d26905261e..ad575b47e18 100644
--- a/components/script/dom/bluetoothdevice.rs
+++ b/components/script/dom/bluetoothdevice.rs
@@ -7,9 +7,9 @@ use dom::bindings::codegen::Bindings::BluetoothDeviceBinding::BluetoothDeviceMet
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root, MutHeap, MutNullableHeap};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bluetoothadvertisingdata::BluetoothAdvertisingData;
use dom::bluetoothremotegattserver::BluetoothRemoteGATTServer;
-use util::str::DOMString;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothdevice
#[dom_struct]
diff --git a/components/script/dom/bluetoothremotegattcharacteristic.rs b/components/script/dom/bluetoothremotegattcharacteristic.rs
index 9ae6c6596ba..5ad8d89c25b 100644
--- a/components/script/dom/bluetoothremotegattcharacteristic.rs
+++ b/components/script/dom/bluetoothremotegattcharacteristic.rs
@@ -14,14 +14,13 @@ use dom::bindings::error::{Fallible, ErrorResult};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
-use dom::bindings::str::ByteString;
+use dom::bindings::str::{ByteString, DOMString};
use dom::bluetoothcharacteristicproperties::BluetoothCharacteristicProperties;
use dom::bluetoothremotegattdescriptor::BluetoothRemoteGATTDescriptor;
use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
use dom::bluetoothuuid::{BluetoothDescriptorUUID, BluetoothUUID};
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
-use util::str::DOMString;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattcharacteristic
#[dom_struct]
diff --git a/components/script/dom/bluetoothremotegattdescriptor.rs b/components/script/dom/bluetoothremotegattdescriptor.rs
index 8e5a106cd05..f7ed72ee0a8 100644
--- a/components/script/dom/bluetoothremotegattdescriptor.rs
+++ b/components/script/dom/bluetoothremotegattdescriptor.rs
@@ -15,11 +15,10 @@ use dom::bindings::error::{Fallible, ErrorResult};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
-use dom::bindings::str::ByteString;
+use dom::bindings::str::{ByteString, DOMString};
use dom::bluetoothremotegattcharacteristic::BluetoothRemoteGATTCharacteristic;
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
-use util::str::DOMString;
// http://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattdescriptor
#[dom_struct]
diff --git a/components/script/dom/bluetoothremotegattserver.rs b/components/script/dom/bluetoothremotegattserver.rs
index e4f4b20a9dc..6935f0207eb 100644
--- a/components/script/dom/bluetoothremotegattserver.rs
+++ b/components/script/dom/bluetoothremotegattserver.rs
@@ -10,13 +10,13 @@ use dom::bindings::error::{Fallible, ErrorResult};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothremotegattservice::BluetoothRemoteGATTService;
use dom::bluetoothuuid::{BluetoothServiceUUID, BluetoothUUID};
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
use std::cell::Cell;
-use util::str::DOMString;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattserver
#[dom_struct]
diff --git a/components/script/dom/bluetoothremotegattservice.rs b/components/script/dom/bluetoothremotegattservice.rs
index 92a5edc2f28..bf9312112c1 100644
--- a/components/script/dom/bluetoothremotegattservice.rs
+++ b/components/script/dom/bluetoothremotegattservice.rs
@@ -9,13 +9,13 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bluetoothcharacteristicproperties::BluetoothCharacteristicProperties;
use dom::bluetoothdevice::BluetoothDevice;
use dom::bluetoothremotegattcharacteristic::BluetoothRemoteGATTCharacteristic;
use dom::bluetoothuuid::{BluetoothCharacteristicUUID, BluetoothUUID};
use ipc_channel::ipc::{self, IpcSender};
use net_traits::bluetooth_thread::BluetoothMethodMsg;
-use util::str::DOMString;
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothremotegattservice
#[dom_struct]
diff --git a/components/script/dom/bluetoothuuid.rs b/components/script/dom/bluetoothuuid.rs
index d4ed2b5e6a7..ab51d37c6e7 100644
--- a/components/script/dom/bluetoothuuid.rs
+++ b/components/script/dom/bluetoothuuid.rs
@@ -7,8 +7,8 @@ use dom::bindings::error::Error::Syntax;
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::reflector::Reflector;
+use dom::bindings::str::DOMString;
use regex::Regex;
-use util::str::DOMString;
pub type UUID = DOMString;
pub type BluetoothServiceUUID = StringOrUnsignedLong;
diff --git a/components/script/dom/browsingcontext.rs b/components/script/dom/browsingcontext.rs
index 0371950300c..c46afe71971 100644
--- a/components/script/dom/browsingcontext.rs
+++ b/components/script/dom/browsingcontext.rs
@@ -8,6 +8,7 @@ use dom::bindings::conversions::{ToJSValConvertible, root_from_handleobject};
use dom::bindings::js::{JS, Root, RootedReference};
use dom::bindings::proxyhandler::{fill_property_descriptor, get_property_descriptor};
use dom::bindings::reflector::{Reflectable, Reflector};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::JSTraceable;
use dom::bindings::utils::WindowProxyHandler;
use dom::bindings::utils::get_array_index_from_id;
@@ -26,7 +27,6 @@ use js::jsval::{UndefinedValue, PrivateValue};
use msg::constellation_msg::{PipelineId, SubpageId};
use std::cell::Cell;
use url::Url;
-use util::str::DOMString;
#[dom_struct]
pub struct BrowsingContext {
diff --git a/components/script/dom/canvasgradient.rs b/components/script/dom/canvasgradient.rs
index b2d3f846c89..f47589b60af 100644
--- a/components/script/dom/canvasgradient.rs
+++ b/components/script/dom/canvasgradient.rs
@@ -13,7 +13,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use util::str::DOMString;
+use dom::bindings::str::DOMString;
// https://html.spec.whatwg.org/multipage/#canvasgradient
#[dom_struct]
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index e7ac0813174..88d11c78205 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -25,6 +25,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, Root};
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::canvasgradient::{CanvasGradient, CanvasGradientStyle, ToFillOrStrokeStyle};
use dom::canvaspattern::CanvasPattern;
use dom::htmlcanvaselement::HTMLCanvasElement;
@@ -46,7 +47,6 @@ use std::str::FromStr;
use std::{cmp, fmt};
use unpremultiplytable::UNPREMULTIPLY_TABLE;
use url::Url;
-use util::str::DOMString;
use util::vec::byte_swap;
#[must_root]
diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs
index e992834b640..74fd0db94c9 100644
--- a/components/script/dom/characterdata.rs
+++ b/components/script/dom/characterdata.rs
@@ -12,6 +12,7 @@ use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
+use dom::bindings::str::DOMString;
use dom::comment::Comment;
use dom::document::Document;
use dom::element::Element;
@@ -19,7 +20,6 @@ use dom::node::{Node, NodeDamage};
use dom::processinginstruction::ProcessingInstruction;
use dom::text::Text;
use std::cell::Ref;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#characterdata
#[dom_struct]
diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs
index 63e058fef6e..b8fe636af60 100644
--- a/components/script/dom/closeevent.rs
+++ b/components/script/dom/closeevent.rs
@@ -10,9 +10,9 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct CloseEvent {
diff --git a/components/script/dom/comment.rs b/components/script/dom/comment.rs
index 093b1263b9e..43115e1dd51 100644
--- a/components/script/dom/comment.rs
+++ b/components/script/dom/comment.rs
@@ -7,10 +7,10 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::document::Document;
use dom::node::Node;
-use util::str::DOMString;
/// An HTML comment.
#[dom_struct]
diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs
index f611c983043..9382bf936a8 100644
--- a/components/script/dom/console.rs
+++ b/components/script/dom/console.rs
@@ -9,9 +9,9 @@ use dom::bindings::codegen::Bindings::ConsoleBinding::ConsoleMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use std::collections::HashMap;
use time::{Timespec, get_time};
-use util::str::DOMString;
// https://developer.mozilla.org/en-US/docs/Web/API/Console
#[dom_struct]
diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs
index 4f095b905b1..6cdaf2b0e78 100644
--- a/components/script/dom/create.rs
+++ b/components/script/dom/create.rs
@@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::element::ElementCreator;
@@ -76,7 +77,6 @@ use dom::htmlulistelement::HTMLUListElement;
use dom::htmlunknownelement::HTMLUnknownElement;
use dom::htmlvideoelement::HTMLVideoElement;
use string_cache::{Atom, QualName};
-use util::str::DOMString;
pub fn create_element(name: QualName,
prefix: Option<Atom>,
diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs
index d53a94e5da2..105de8ec9c1 100644
--- a/components/script/dom/css.rs
+++ b/components/script/dom/css.rs
@@ -6,7 +6,7 @@ use cssparser::serialize_identifier;
use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::reflector::Reflector;
-use util::str::DOMString;
+use dom::bindings::str::DOMString;
#[dom_struct]
pub struct CSS {
diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs
index 97a3602a8e1..6d537c40ea5 100644
--- a/components/script/dom/cssstyledeclaration.rs
+++ b/components/script/dom/cssstyledeclaration.rs
@@ -8,6 +8,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::element::{Element, StylePriority};
use dom::node::{Node, NodeDamage, window_from_node};
use dom::window::Window;
@@ -18,7 +19,7 @@ use string_cache::Atom;
use style::properties::{PropertyDeclaration, Shorthand};
use style::properties::{is_supported_property, parse_one_declaration};
use style::selector_impl::PseudoElement;
-use util::str::{DOMString, str_join};
+use util::str::str_join;
// http://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface
#[dom_struct]
diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs
index 3dd202d1aee..301c3b6f816 100644
--- a/components/script/dom/customevent.rs
+++ b/components/script/dom/customevent.rs
@@ -10,11 +10,11 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::Event;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
use string_cache::Atom;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#interface-customevent
#[dom_struct]
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs
index 120565b00fa..8373855ac14 100644
--- a/components/script/dom/dedicatedworkerglobalscope.rs
+++ b/components/script/dom/dedicatedworkerglobalscope.rs
@@ -14,6 +14,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, RootCollection};
use dom::bindings::refcounted::LiveDOMReferences;
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::bindings::structuredclone::StructuredCloneData;
use dom::messageevent::MessageEvent;
use dom::worker::{SimpleWorkerErrorHandler, SharedRt, TrustedWorkerAddress};
@@ -36,7 +37,6 @@ use std::mem::replace;
use std::sync::mpsc::{Receiver, RecvError, Select, Sender, channel};
use std::sync::{Arc, Mutex};
use url::Url;
-use util::str::DOMString;
use util::thread::spawn_named_with_send_on_panic;
use util::thread_state::{IN_WORKER, SCRIPT};
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 1962e462282..d204bd0d8c6 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -28,6 +28,7 @@ use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
use dom::bindings::num::Finite;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::RootedVec;
use dom::bindings::xmlname::XMLName::InvalidXMLName;
use dom::bindings::xmlname::{validate_and_extract, namespace_from_domstring, xml_name_type};
@@ -127,7 +128,7 @@ use task_source::dom_manipulation::DOMManipulationTask;
use time;
use url::Url;
use url::percent_encoding::percent_decode;
-use util::str::{DOMString, split_html_space_chars, str_join};
+use util::str::{split_html_space_chars, str_join};
#[derive(JSTraceable, PartialEq, HeapSizeOf)]
pub enum IsHTMLDocument {
@@ -2087,7 +2088,7 @@ impl DocumentMethods for Document {
local_name.make_ascii_lowercase();
}
let name = Atom::from(local_name);
- let value = AttrValue::String(DOMString::new());
+ let value = AttrValue::String("".to_owned());
Ok(Attr::new(&self.window, name.clone(), value, name, ns!(), None, None))
}
@@ -2099,7 +2100,7 @@ impl DocumentMethods for Document {
-> Fallible<Root<Attr>> {
let (namespace, prefix, local_name) = try!(validate_and_extract(namespace,
&qualified_name));
- let value = AttrValue::String(DOMString::new());
+ let value = AttrValue::String("".to_owned());
let qualified_name = Atom::from(qualified_name);
Ok(Attr::new(&self.window,
local_name,
diff --git a/components/script/dom/documentfragment.rs b/components/script/dom/documentfragment.rs
index f77fb658d41..0fba19d5aff 100644
--- a/components/script/dom/documentfragment.rs
+++ b/components/script/dom/documentfragment.rs
@@ -10,13 +10,13 @@ use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::htmlcollection::HTMLCollection;
use dom::node::{Node, window_from_node};
use dom::nodelist::NodeList;
use string_cache::Atom;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#documentfragment
#[dom_struct]
diff --git a/components/script/dom/documenttype.rs b/components/script/dom/documenttype.rs
index 98a5f98eb36..0f8b688c93b 100644
--- a/components/script/dom/documenttype.rs
+++ b/components/script/dom/documenttype.rs
@@ -8,9 +8,9 @@ use dom::bindings::codegen::UnionTypes::NodeOrString;
use dom::bindings::error::ErrorResult;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::node::Node;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#documenttype
/// The `DOCTYPE` tag.
diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs
index 0b6c205a9b0..e32d5dc40ac 100644
--- a/components/script/dom/domexception.rs
+++ b/components/script/dom/domexception.rs
@@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::DOMExceptionBinding::DOMExceptionMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use util::str::DOMString;
+use dom::bindings::str::DOMString;
#[repr(u16)]
#[derive(JSTraceable, Copy, Clone, Debug, HeapSizeOf)]
diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs
index 8c0f9bd61ee..30974ea2f46 100644
--- a/components/script/dom/domimplementation.rs
+++ b/components/script/dom/domimplementation.rs
@@ -12,6 +12,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::xmlname::{validate_qualified_name, namespace_from_domstring};
use dom::document::DocumentSource;
use dom::document::{Document, IsHTMLDocument};
@@ -23,7 +24,6 @@ use dom::htmltitleelement::HTMLTitleElement;
use dom::node::Node;
use dom::text::Text;
use dom::xmldocument::XMLDocument;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#domimplementation
#[dom_struct]
diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs
index 1a3fb7f3793..f5655fdbed3 100644
--- a/components/script/dom/domparser.rs
+++ b/components/script/dom/domparser.rs
@@ -12,12 +12,12 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::document::DocumentSource;
use dom::document::{Document, IsHTMLDocument};
use dom::window::Window;
use parse::html::{ParseContext, parse_html};
use parse::xml::{self, parse_xml};
-use util::str::DOMString;
#[dom_struct]
pub struct DOMParser {
diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs
index 713b8cc0368..c5e534d242e 100644
--- a/components/script/dom/domstringmap.rs
+++ b/components/script/dom/domstringmap.rs
@@ -8,9 +8,9 @@ use dom::bindings::error::ErrorResult;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::htmlelement::HTMLElement;
use dom::node::window_from_node;
-use util::str::DOMString;
#[dom_struct]
pub struct DOMStringMap {
diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs
index 3968b2084cb..dabf3bf4cb9 100644
--- a/components/script/dom/domtokenlist.rs
+++ b/components/script/dom/domtokenlist.rs
@@ -9,10 +9,11 @@ use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::element::Element;
use dom::node::window_from_node;
use string_cache::Atom;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS};
+use util::str::HTML_SPACE_CHARACTERS;
#[dom_struct]
pub struct DOMTokenList {
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 6c8066308b5..ec33deb1608 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -26,6 +26,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
use dom::bindings::js::{Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::bindings::xmlname::XMLName::InvalidXMLName;
use dom::bindings::xmlname::{namespace_from_domstring, validate_and_extract, xml_name_type};
use dom::characterdata::CharacterData;
@@ -91,7 +92,7 @@ use style::properties::{PropertyDeclaration, PropertyDeclarationBlock, parse_sty
use style::selector_impl::{NonTSPseudoClass, ServoSelectorImpl};
use style::values::CSSFloat;
use style::values::specified::{self, CSSColor, CSSRGBA, LengthOrPercentage};
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
// TODO: Update focus state when the top-level browsing context gains or loses system focus,
// and when the element enters or leaves a browsing context container.
@@ -1031,7 +1032,7 @@ impl Element {
if *namespace == ns!() {
vtable_for(self.upcast()).parse_plain_attribute(local_name, value)
} else {
- AttrValue::String(value)
+ AttrValue::String(value.into())
}
}
@@ -1076,7 +1077,7 @@ impl Element {
pub fn set_atomic_attribute(&self, local_name: &Atom, value: DOMString) {
assert!(*local_name == local_name.to_ascii_lowercase());
- let value = AttrValue::from_atomic(value);
+ let value = AttrValue::from_atomic(value.into());
self.set_attribute(local_name, value);
}
@@ -1126,7 +1127,7 @@ impl Element {
}
pub fn set_string_attribute(&self, local_name: &Atom, value: DOMString) {
assert!(*local_name == local_name.to_ascii_lowercase());
- self.set_attribute(local_name, AttrValue::String(value));
+ self.set_attribute(local_name, AttrValue::String(value.into()));
}
pub fn get_tokenlist_attribute(&self, local_name: &Atom) -> Vec<Atom> {
@@ -1140,7 +1141,8 @@ impl Element {
pub fn set_tokenlist_attribute(&self, local_name: &Atom, value: DOMString) {
assert!(*local_name == local_name.to_ascii_lowercase());
- self.set_attribute(local_name, AttrValue::from_serialized_tokenlist(value));
+ self.set_attribute(local_name,
+ AttrValue::from_serialized_tokenlist(value.into()));
}
pub fn set_atomic_tokenlist_attribute(&self, local_name: &Atom, tokens: Vec<Atom>) {
@@ -1169,7 +1171,7 @@ impl Element {
pub fn set_int_attribute(&self, local_name: &Atom, value: i32) {
assert!(*local_name == local_name.to_ascii_lowercase());
- self.set_attribute(local_name, AttrValue::Int(DOMString::from(value.to_string()), value));
+ self.set_attribute(local_name, AttrValue::Int(value.to_string(), value));
}
pub fn get_uint_attribute(&self, local_name: &Atom, default: u32) -> u32 {
@@ -1187,9 +1189,7 @@ impl Element {
}
pub fn set_uint_attribute(&self, local_name: &Atom, value: u32) {
assert!(*local_name == local_name.to_ascii_lowercase());
- // FIXME(ajeffrey): Directly convert u32 to DOMString
- self.set_attribute(local_name,
- AttrValue::UInt(DOMString::from(value.to_string()), value));
+ self.set_attribute(local_name, AttrValue::UInt(value.to_string(), value));
}
pub fn will_mutate_attr(&self) {
@@ -2032,8 +2032,8 @@ impl VirtualMethods for Element {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("id") => AttrValue::from_atomic(value),
- &atom!("class") => AttrValue::from_serialized_tokenlist(value),
+ &atom!("id") => AttrValue::from_atomic(value.into()),
+ &atom!("class") => AttrValue::from_serialized_tokenlist(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs
index cb6bd15c7d7..f6c5802ca29 100644
--- a/components/script/dom/errorevent.rs
+++ b/components/script/dom/errorevent.rs
@@ -11,12 +11,12 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use js::jsapi::{RootedValue, HandleValue, JSContext};
use js::jsval::JSVal;
use std::cell::Cell;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct ErrorEvent {
diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs
index 97fc065d2b1..9174fa2cb3d 100644
--- a/components/script/dom/event.rs
+++ b/components/script/dom/event.rs
@@ -9,12 +9,12 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::eventtarget::EventTarget;
use std::cell::Cell;
use std::default::Default;
use string_cache::Atom;
use time;
-use util::str::DOMString;
#[derive(JSTraceable, Copy, Clone, Debug, PartialEq, Eq)]
#[repr(u16)]
diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 40103e30f76..4007e391852 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -9,10 +9,10 @@ use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::eventtarget::EventTarget;
use std::cell::Cell;
use url::Url;
-use util::str::DOMString;
#[derive(JSTraceable, PartialEq, Copy, Clone, Debug, HeapSizeOf)]
enum EventSourceReadyState {
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index c8eecc8e65d..ebacde4de4d 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -19,6 +19,7 @@ use dom::bindings::error::{Error, Fallible, report_pending_exception};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, Reflector};
+use dom::bindings::str::DOMString;
use dom::element::Element;
use dom::errorevent::ErrorEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -42,7 +43,6 @@ use std::ptr;
use std::rc::Rc;
use string_cache::Atom;
use url::Url;
-use util::str::DOMString;
#[derive(PartialEq, Clone, JSTraceable)]
pub enum CommonEventHandler {
diff --git a/components/script/dom/file.rs b/components/script/dom/file.rs
index 4ece71a5ce3..62e1b0a95bd 100644
--- a/components/script/dom/file.rs
+++ b/components/script/dom/file.rs
@@ -9,12 +9,12 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::blob::{Blob, DataSlice, blob_parts_to_bytes};
use dom::window::Window;
use net_traits::filemanager_thread::SelectedFile;
use std::sync::Arc;
use time;
-use util::str::DOMString;
#[dom_struct]
pub struct File {
diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs
index b31f9c3d5a6..175e771ffa7 100644
--- a/components/script/dom/filereader.rs
+++ b/components/script/dom/filereader.rs
@@ -12,6 +12,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::blob::{Blob, DataSlice};
use dom::domexception::{DOMErrorName, DOMException};
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -27,7 +28,6 @@ use script_runtime::{ScriptChan, CommonScriptMsg};
use script_thread::Runnable;
use std::cell::Cell;
use string_cache::Atom;
-use util::str::DOMString;
use util::thread::spawn_named;
#[derive(PartialEq, Clone, Copy, JSTraceable, HeapSizeOf)]
diff --git a/components/script/dom/focusevent.rs b/components/script/dom/focusevent.rs
index 0b0048e1e98..dd5e41e8426 100644
--- a/components/script/dom/focusevent.rs
+++ b/components/script/dom/focusevent.rs
@@ -10,12 +10,12 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::uievent::UIEvent;
use dom::window::Window;
use std::default::Default;
-use util::str::DOMString;
#[dom_struct]
pub struct FocusEvent {
diff --git a/components/script/dom/forcetouchevent.rs b/components/script/dom/forcetouchevent.rs
index b0fd6376760..95532cb5c8f 100644
--- a/components/script/dom/forcetouchevent.rs
+++ b/components/script/dom/forcetouchevent.rs
@@ -10,9 +10,9 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root};
use dom::bindings::num::Finite;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::uievent::UIEvent;
use dom::window::Window;
-use util::str::DOMString;
#[dom_struct]
pub struct ForceTouchEvent {
diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs
index c8388c3e4d8..c7521a94365 100644
--- a/components/script/dom/formdata.rs
+++ b/components/script/dom/formdata.rs
@@ -10,14 +10,13 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::blob::Blob;
use dom::file::File;
use dom::htmlformelement::HTMLFormElement;
use std::collections::HashMap;
use std::collections::hash_map::Entry::{Occupied, Vacant};
use string_cache::Atom;
-use util::str::DOMString;
#[derive(JSTraceable, Clone)]
#[must_root]
diff --git a/components/script/dom/hashchangeevent.rs b/components/script/dom/hashchangeevent.rs
index 95308f17eed..33562123ac6 100644
--- a/components/script/dom/hashchangeevent.rs
+++ b/components/script/dom/hashchangeevent.rs
@@ -10,10 +10,9 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::event::Event;
use string_cache::Atom;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#hashchangeevent
#[dom_struct]
diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs
index 4b733dbdcbd..7807ad67870 100644
--- a/components/script/dom/htmlanchorelement.rs
+++ b/components/script/dom/htmlanchorelement.rs
@@ -13,7 +13,7 @@ use dom::bindings::codegen::Bindings::MouseEventBinding::MouseEventMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::document::Document;
use dom::domtokenlist::DOMTokenList;
use dom::element::Element;
@@ -29,7 +29,6 @@ use num_traits::ToPrimitive;
use std::default::Default;
use string_cache::Atom;
use url::Url;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLAnchorElement {
@@ -92,7 +91,7 @@ impl VirtualMethods for HTMLAnchorElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("rel") => AttrValue::from_serialized_tokenlist(value),
+ &atom!("rel") => AttrValue::from_serialized_tokenlist(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlappletelement.rs b/components/script/dom/htmlappletelement.rs
index 1648e07dc11..df46e89f06f 100644
--- a/components/script/dom/htmlappletelement.rs
+++ b/components/script/dom/htmlappletelement.rs
@@ -7,12 +7,12 @@ use dom::bindings::codegen::Bindings::HTMLAppletElementBinding;
use dom::bindings::codegen::Bindings::HTMLAppletElementBinding::HTMLAppletElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLAppletElement {
@@ -53,7 +53,7 @@ impl VirtualMethods for HTMLAppletElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("name") => AttrValue::from_atomic(value),
+ &atom!("name") => AttrValue::from_atomic(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlareaelement.rs b/components/script/dom/htmlareaelement.rs
index 159c8c58881..4e8139374f0 100644
--- a/components/script/dom/htmlareaelement.rs
+++ b/components/script/dom/htmlareaelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLAreaElementBinding;
use dom::bindings::codegen::Bindings::HTMLAreaElementBinding::HTMLAreaElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::domtokenlist::DOMTokenList;
use dom::htmlelement::HTMLElement;
@@ -14,7 +15,6 @@ use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use std::default::Default;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLAreaElement {
@@ -46,7 +46,7 @@ impl VirtualMethods for HTMLAreaElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("rel") => AttrValue::from_serialized_tokenlist(value),
+ &atom!("rel") => AttrValue::from_serialized_tokenlist(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlaudioelement.rs b/components/script/dom/htmlaudioelement.rs
index 98ee31fb299..4db6b013116 100644
--- a/components/script/dom/htmlaudioelement.rs
+++ b/components/script/dom/htmlaudioelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLAudioElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlmediaelement::HTMLMediaElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLAudioElement {
diff --git a/components/script/dom/htmlbaseelement.rs b/components/script/dom/htmlbaseelement.rs
index 7656520e283..944b3675cba 100644
--- a/components/script/dom/htmlbaseelement.rs
+++ b/components/script/dom/htmlbaseelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLBaseElementBinding;
use dom::bindings::codegen::Bindings::HTMLBaseElementBinding::HTMLBaseElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::htmlelement::HTMLElement;
@@ -14,7 +15,6 @@ use dom::node::{Node, UnbindContext, document_from_node};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
use url::Url;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLBaseElement {
diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs
index 536e3759fb3..b5408d877ac 100644
--- a/components/script/dom/htmlbodyelement.rs
+++ b/components/script/dom/htmlbodyelement.rs
@@ -9,6 +9,7 @@ use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyEle
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
use dom::eventtarget::EventTarget;
@@ -19,7 +20,6 @@ use script_traits::ScriptMsg as ConstellationMsg;
use string_cache::Atom;
use time;
use url::Url;
-use util::str::DOMString;
/// How long we should wait before performing the initial reflow after `<body>` is parsed, in
/// nanoseconds.
@@ -141,8 +141,10 @@ impl VirtualMethods for HTMLBodyElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match *name {
atom!("bgcolor") |
- atom!("text") => AttrValue::from_legacy_color(value),
- atom!("background") => AttrValue::from_url(document_from_node(self).url(), value),
+ atom!("text") => AttrValue::from_legacy_color(value.into()),
+ atom!("background") => {
+ AttrValue::from_url(document_from_node(self).url(), value.into())
+ },
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlbrelement.rs b/components/script/dom/htmlbrelement.rs
index e9b31954f9f..e95a667c0c4 100644
--- a/components/script/dom/htmlbrelement.rs
+++ b/components/script/dom/htmlbrelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLBRElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLBRElement {
diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs
index 43f0f925971..e15d559cee3 100644
--- a/components/script/dom/htmlbuttonelement.rs
+++ b/components/script/dom/htmlbuttonelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLButtonElementBinding;
use dom::bindings::codegen::Bindings::HTMLButtonElementBinding::HTMLButtonElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::event::Event;
@@ -25,7 +26,6 @@ use dom::virtualmethods::VirtualMethods;
use std::cell::Cell;
use string_cache::Atom;
use style::element_state::*;
-use util::str::DOMString;
#[derive(JSTraceable, PartialEq, Copy, Clone)]
#[derive(HeapSizeOf)]
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index e97f3b3769b..cf36ee9673b 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -16,6 +16,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{HeapGCValue, JS, LayoutJS, Root};
use dom::bindings::num::Finite;
+use dom::bindings::str::DOMString;
use dom::canvasrenderingcontext2d::{CanvasRenderingContext2D, LayoutCanvasRenderingContext2DHelpers};
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
@@ -32,7 +33,6 @@ use offscreen_gl_context::GLContextAttributes;
use rustc_serialize::base64::{STANDARD, ToBase64};
use std::iter::repeat;
use string_cache::Atom;
-use util::str::DOMString;
const DEFAULT_WIDTH: u32 = 300;
const DEFAULT_HEIGHT: u32 = 150;
@@ -312,8 +312,8 @@ impl VirtualMethods for HTMLCanvasElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("width") => AttrValue::from_u32(value, DEFAULT_WIDTH),
- &atom!("height") => AttrValue::from_u32(value, DEFAULT_HEIGHT),
+ &atom!("width") => AttrValue::from_u32(value.into(), DEFAULT_WIDTH),
+ &atom!("height") => AttrValue::from_u32(value.into(), DEFAULT_HEIGHT),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs
index b1f1771dd07..bbacf5c7a0d 100644
--- a/components/script/dom/htmlcollection.rs
+++ b/components/script/dom/htmlcollection.rs
@@ -8,6 +8,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root, MutNullableHeap};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::JSTraceable;
use dom::bindings::xmlname::namespace_from_domstring;
use dom::element::Element;
@@ -16,7 +17,7 @@ use dom::window::Window;
use std::ascii::AsciiExt;
use std::cell::Cell;
use string_cache::{Atom, Namespace, QualName};
-use util::str::{DOMString, split_html_space_chars};
+use util::str::split_html_space_chars;
pub trait CollectionFilter : JSTraceable {
fn filter<'a>(&self, elem: &'a Element, root: &'a Node) -> bool;
diff --git a/components/script/dom/htmldataelement.rs b/components/script/dom/htmldataelement.rs
index 9f949afb1fb..c665fece132 100644
--- a/components/script/dom/htmldataelement.rs
+++ b/components/script/dom/htmldataelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLDataElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDataElement {
diff --git a/components/script/dom/htmldatalistelement.rs b/components/script/dom/htmldatalistelement.rs
index 064b3d50b56..a44e3965d5c 100644
--- a/components/script/dom/htmldatalistelement.rs
+++ b/components/script/dom/htmldatalistelement.rs
@@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::HTMLDataListElementBinding;
use dom::bindings::codegen::Bindings::HTMLDataListElementBinding::HTMLDataListElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
@@ -13,7 +14,6 @@ use dom::htmlelement::HTMLElement;
use dom::htmloptionelement::HTMLOptionElement;
use dom::node::{Node, window_from_node};
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDataListElement {
diff --git a/components/script/dom/htmldetailselement.rs b/components/script/dom/htmldetailselement.rs
index 724c9cff614..cde3aef6f86 100644
--- a/components/script/dom/htmldetailselement.rs
+++ b/components/script/dom/htmldetailselement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLDetailsElementBinding::HTMLDetailsElem
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::AttributeMutation;
use dom::eventtarget::EventTarget;
@@ -18,7 +19,6 @@ use script_thread::Runnable;
use std::cell::Cell;
use string_cache::Atom;
use task_source::dom_manipulation::DOMManipulationTask;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDetailsElement {
diff --git a/components/script/dom/htmldialogelement.rs b/components/script/dom/htmldialogelement.rs
index f6d10f33a9f..70edd6ec7fb 100644
--- a/components/script/dom/htmldialogelement.rs
+++ b/components/script/dom/htmldialogelement.rs
@@ -6,11 +6,11 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::HTMLDialogElementBinding;
use dom::bindings::codegen::Bindings::HTMLDialogElementBinding::HTMLDialogElementMethods;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDialogElement {
diff --git a/components/script/dom/htmldirectoryelement.rs b/components/script/dom/htmldirectoryelement.rs
index 2c48231beff..7a2cbd19c67 100644
--- a/components/script/dom/htmldirectoryelement.rs
+++ b/components/script/dom/htmldirectoryelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLDirectoryElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDirectoryElement {
diff --git a/components/script/dom/htmldivelement.rs b/components/script/dom/htmldivelement.rs
index eaa99f3e100..585bc7e2e03 100644
--- a/components/script/dom/htmldivelement.rs
+++ b/components/script/dom/htmldivelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLDivElementBinding::{self, HTMLDivElementMethods};
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDivElement {
diff --git a/components/script/dom/htmldlistelement.rs b/components/script/dom/htmldlistelement.rs
index bfc36d67d38..c29aea80325 100644
--- a/components/script/dom/htmldlistelement.rs
+++ b/components/script/dom/htmldlistelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLDListElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLDListElement {
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index 7e310db8903..086eb6ff687 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -15,6 +15,7 @@ use dom::bindings::error::{Error, ErrorResult};
use dom::bindings::inheritance::Castable;
use dom::bindings::inheritance::{ElementTypeId, HTMLElementTypeId, NodeTypeId};
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration};
use dom::document::{Document, FocusType};
use dom::domstringmap::DOMStringMap;
@@ -35,7 +36,6 @@ use std::default::Default;
use std::rc::Rc;
use string_cache::Atom;
use style::element_state::*;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLElement {
diff --git a/components/script/dom/htmlembedelement.rs b/components/script/dom/htmlembedelement.rs
index f5c96bfc583..fe0ed5424ac 100644
--- a/components/script/dom/htmlembedelement.rs
+++ b/components/script/dom/htmlembedelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLEmbedElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLEmbedElement {
diff --git a/components/script/dom/htmlfieldsetelement.rs b/components/script/dom/htmlfieldsetelement.rs
index 9b0c43ff874..085b8291ddf 100644
--- a/components/script/dom/htmlfieldsetelement.rs
+++ b/components/script/dom/htmlfieldsetelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding;
use dom::bindings::codegen::Bindings::HTMLFieldSetElementBinding::HTMLFieldSetElementMethods;
use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId};
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
@@ -18,7 +19,6 @@ use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
use style::element_state::*;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLFieldSetElement {
diff --git a/components/script/dom/htmlfontelement.rs b/components/script/dom/htmlfontelement.rs
index fb5379e7954..74526b569bb 100644
--- a/components/script/dom/htmlfontelement.rs
+++ b/components/script/dom/htmlfontelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLFontElementBinding;
use dom::bindings::codegen::Bindings::HTMLFontElementBinding::HTMLFontElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, RawLayoutElementHelpers};
use dom::htmlelement::HTMLElement;
@@ -15,7 +16,7 @@ use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
use style::values::specified;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS, read_numbers};
+use util::str::{HTML_SPACE_CHARACTERS, read_numbers};
#[dom_struct]
pub struct HTMLFontElement {
@@ -59,7 +60,7 @@ impl HTMLFontElementMethods for HTMLFontElement {
fn SetSize(&self, value: DOMString) {
let element = self.upcast::<Element>();
let length = parse_length(&value);
- element.set_attribute(&atom!("size"), AttrValue::Length(value, length));
+ element.set_attribute(&atom!("size"), AttrValue::Length(value.into(), length));
}
}
@@ -70,11 +71,11 @@ impl VirtualMethods for HTMLFontElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("face") => AttrValue::from_atomic(value),
- &atom!("color") => AttrValue::from_legacy_color(value),
+ &atom!("face") => AttrValue::from_atomic(value.into()),
+ &atom!("color") => AttrValue::from_legacy_color(value.into()),
&atom!("size") => {
let length = parse_length(&value);
- AttrValue::Length(value, length)
+ AttrValue::Length(value.into(), length)
},
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
diff --git a/components/script/dom/htmlformcontrolscollection.rs b/components/script/dom/htmlformcontrolscollection.rs
index 0d2896eddad..9229b854b26 100644
--- a/components/script/dom/htmlformcontrolscollection.rs
+++ b/components/script/dom/htmlformcontrolscollection.rs
@@ -9,13 +9,13 @@ use dom::bindings::codegen::UnionTypes::RadioNodeListOrElement;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::element::Element;
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
use dom::node::Node;
use dom::radionodelist::RadioNodeList;
use dom::window::Window;
use std::iter;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLFormControlsCollection {
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index 25d4ed3cd5a..50490ec879f 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -16,6 +16,7 @@ use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, Nod
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::blob::Blob;
use dom::document::Document;
use dom::element::Element;
@@ -51,7 +52,7 @@ use std::sync::mpsc::Sender;
use string_cache::Atom;
use task_source::dom_manipulation::DOMManipulationTask;
use url::form_urlencoded;
-use util::str::{DOMString, split_html_space_chars};
+use util::str::split_html_space_chars;
#[derive(JSTraceable, PartialEq, Clone, Copy, HeapSizeOf)]
pub struct GenerationId(u32);
@@ -907,7 +908,7 @@ impl VirtualMethods for HTMLFormElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("name") => AttrValue::from_atomic(value),
+ &atom!("name") => AttrValue::from_atomic(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlframeelement.rs b/components/script/dom/htmlframeelement.rs
index 2907fea4168..04207c711af 100644
--- a/components/script/dom/htmlframeelement.rs
+++ b/components/script/dom/htmlframeelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLFrameElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLFrameElement {
diff --git a/components/script/dom/htmlframesetelement.rs b/components/script/dom/htmlframesetelement.rs
index df73bc893e9..30cfc1fa677 100644
--- a/components/script/dom/htmlframesetelement.rs
+++ b/components/script/dom/htmlframesetelement.rs
@@ -7,11 +7,11 @@ use dom::bindings::codegen::Bindings::HTMLFrameSetElementBinding;
use dom::bindings::codegen::Bindings::HTMLFrameSetElementBinding::HTMLFrameSetElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::{Node, window_from_node};
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLFrameSetElement {
diff --git a/components/script/dom/htmlheadelement.rs b/components/script/dom/htmlheadelement.rs
index 4f87db1d824..d6e7fe22a26 100644
--- a/components/script/dom/htmlheadelement.rs
+++ b/components/script/dom/htmlheadelement.rs
@@ -5,13 +5,13 @@
use dom::bindings::codegen::Bindings::HTMLHeadElementBinding;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use dom::userscripts::load_script;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLHeadElement {
diff --git a/components/script/dom/htmlheadingelement.rs b/components/script/dom/htmlheadingelement.rs
index 5f219b54f34..9340cb09d3b 100644
--- a/components/script/dom/htmlheadingelement.rs
+++ b/components/script/dom/htmlheadingelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLHeadingElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[derive(JSTraceable, HeapSizeOf)]
pub enum HeadingLevel {
diff --git a/components/script/dom/htmlhrelement.rs b/components/script/dom/htmlhrelement.rs
index bea12efbfea..7259814fdd9 100644
--- a/components/script/dom/htmlhrelement.rs
+++ b/components/script/dom/htmlhrelement.rs
@@ -7,13 +7,14 @@ use dom::attr::AttrValue;
use dom::bindings::codegen::Bindings::HTMLHRElementBinding::{self, HTMLHRElementMethods};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, RawLayoutElementHelpers};
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
#[dom_struct]
pub struct HTMLHRElement {
@@ -92,9 +93,9 @@ impl VirtualMethods for HTMLHRElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("align") => AttrValue::from_dimension(value),
- &atom!("color") => AttrValue::from_legacy_color(value),
- &atom!("width") => AttrValue::from_dimension(value),
+ &atom!("align") => AttrValue::from_dimension(value.into()),
+ &atom!("color") => AttrValue::from_legacy_color(value.into()),
+ &atom!("width") => AttrValue::from_dimension(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlhtmlelement.rs b/components/script/dom/htmlhtmlelement.rs
index 2ae0e3d5fb3..e513eaa1bcc 100644
--- a/components/script/dom/htmlhtmlelement.rs
+++ b/components/script/dom/htmlhtmlelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLHtmlElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLHtmlElement {
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index db7728ca710..8cec0aa6659 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -19,6 +19,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, LayoutJS};
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::customevent::CustomEvent;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
@@ -42,7 +43,7 @@ use string_cache::Atom;
use style::context::ReflowGoal;
use url::Url;
use util::prefs;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
pub fn mozbrowser_enabled() -> bool {
prefs::get_pref("dom.mozbrowser.enabled").as_boolean().unwrap_or(false)
@@ -539,9 +540,9 @@ impl VirtualMethods for HTMLIFrameElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("sandbox") => AttrValue::from_serialized_tokenlist(value),
- &atom!("width") => AttrValue::from_dimension(value),
- &atom!("height") => AttrValue::from_dimension(value),
+ &atom!("sandbox") => AttrValue::from_serialized_tokenlist(value.into()),
+ &atom!("width") => AttrValue::from_dimension(value.into()),
+ &atom!("height") => AttrValue::from_dimension(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 14fffca5fda..8bd29e7678f 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -14,6 +14,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
use dom::bindings::refcounted::Trusted;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
use dom::eventtarget::EventTarget;
@@ -31,7 +32,7 @@ use script_thread::Runnable;
use std::sync::Arc;
use string_cache::Atom;
use url::Url;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
#[derive(JSTraceable, HeapSizeOf)]
#[allow(dead_code)]
@@ -377,9 +378,9 @@ impl VirtualMethods for HTMLImageElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("name") => AttrValue::from_atomic(value),
- &atom!("width") | &atom!("height") => AttrValue::from_dimension(value),
- &atom!("hspace") | &atom!("vspace") => AttrValue::from_u32(value, 0),
+ &atom!("name") => AttrValue::from_atomic(value.into()),
+ &atom!("width") | &atom!("height") => AttrValue::from_dimension(value.into()),
+ &atom!("hspace") | &atom!("vspace") => AttrValue::from_u32(value.into(), 0),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
@@ -394,6 +395,6 @@ fn image_dimension_setter(element: &Element, attr: Atom, value: u32) {
value
};
let dim = LengthOrPercentageOrAuto::Length(Au::from_px(value as i32));
- let value = AttrValue::Dimension(DOMString::from(value.to_string()), dim);
+ let value = AttrValue::Dimension(value.to_string(), dim);
element.set_attribute(&attr, value);
}
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index e91a37d183a..dbc0d4f8f1f 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -14,6 +14,7 @@ use dom::bindings::codegen::Bindings::KeyboardEventBinding::KeyboardEventMethods
use dom::bindings::error::{Error, ErrorResult};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, Root, RootedReference, MutNullableHeap};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers, LayoutElementHelpers};
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -42,7 +43,6 @@ use style::element_state::*;
use textinput::KeyReaction::{DispatchInput, Nothing, RedrawSelection, TriggerDefaultAction};
use textinput::Lines::Single;
use textinput::{TextInput, SelectionDirection};
-use util::str::{DOMString};
const DEFAULT_SUBMIT_VALUE: &'static str = "Submit";
const DEFAULT_RESET_VALUE: &'static str = "Reset";
@@ -881,10 +881,10 @@ impl VirtualMethods for HTMLInputElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("name") => AttrValue::from_atomic(value),
- &atom!("size") => AttrValue::from_limited_u32(value, DEFAULT_INPUT_SIZE),
- &atom!("type") => AttrValue::from_atomic(value),
- &atom!("maxlength") => AttrValue::from_limited_i32(value, DEFAULT_MAX_LENGTH),
+ &atom!("name") => AttrValue::from_atomic(value.into()),
+ &atom!("size") => AttrValue::from_limited_u32(value.into(), DEFAULT_INPUT_SIZE),
+ &atom!("type") => AttrValue::from_atomic(value.into()),
+ &atom!("maxlength") => AttrValue::from_limited_i32(value.into(), DEFAULT_MAX_LENGTH),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmllabelelement.rs b/components/script/dom/htmllabelelement.rs
index 90d4a16b86e..e14dce36b88 100644
--- a/components/script/dom/htmllabelelement.rs
+++ b/components/script/dom/htmllabelelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLLabelElementBinding;
use dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::event::Event;
@@ -17,7 +18,6 @@ use dom::htmlformelement::{FormControl, HTMLFormElement};
use dom::node::{document_from_node, Node};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLLabelElement {
@@ -122,7 +122,7 @@ impl VirtualMethods for HTMLLabelElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("for") => AttrValue::from_atomic(value),
+ &atom!("for") => AttrValue::from_atomic(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmllegendelement.rs b/components/script/dom/htmllegendelement.rs
index d0b3487113a..7a5a3632eeb 100644
--- a/components/script/dom/htmllegendelement.rs
+++ b/components/script/dom/htmllegendelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLLegendElementBinding::HTMLLegendElemen
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
@@ -15,7 +16,6 @@ use dom::htmlformelement::{HTMLFormElement, FormControl};
use dom::node::{Node, UnbindContext};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLLegendElement {
diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs
index e0deac587fc..64bedf2d8ce 100644
--- a/components/script/dom/htmllielement.rs
+++ b/components/script/dom/htmllielement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLLIElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLLIElement {
diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs
index 0a7ebb5de1b..18ff43c000b 100644
--- a/components/script/dom/htmllinkelement.rs
+++ b/components/script/dom/htmllinkelement.rs
@@ -12,6 +12,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::js::{RootedReference};
use dom::bindings::refcounted::Trusted;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::domtokenlist::DOMTokenList;
use dom::element::{AttributeMutation, Element, ElementCreator};
@@ -40,7 +41,7 @@ use style::media_queries::{MediaQueryList, parse_media_query_list};
use style::servo::Stylesheet;
use style::stylesheets::Origin;
use url::Url;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS};
+use util::str::HTML_SPACE_CHARACTERS;
no_jsmanaged_fields!(Stylesheet);
@@ -158,7 +159,7 @@ impl VirtualMethods for HTMLLinkElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("rel") => AttrValue::from_serialized_tokenlist(value),
+ &atom!("rel") => AttrValue::from_serialized_tokenlist(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlmapelement.rs b/components/script/dom/htmlmapelement.rs
index 278b0eb66ab..b1a4ff1af4a 100644
--- a/components/script/dom/htmlmapelement.rs
+++ b/components/script/dom/htmlmapelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLMapElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLMapElement {
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index 8971e1db34c..9532de74677 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -15,6 +15,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, MutNullableHeap, JS};
use dom::bindings::refcounted::Trusted;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, AttributeMutation};
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -34,7 +35,6 @@ use string_cache::Atom;
use task_source::dom_manipulation::DOMManipulationTask;
use time::{self, Timespec, Duration};
use url::Url;
-use util::str::DOMString;
struct HTMLMediaElementContext {
/// The element that initiated the request.
diff --git a/components/script/dom/htmlmetaelement.rs b/components/script/dom/htmlmetaelement.rs
index 88e5af9bfc1..bc3dfdb5b57 100644
--- a/components/script/dom/htmlmetaelement.rs
+++ b/components/script/dom/htmlmetaelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLMetaElementBinding;
use dom::bindings::codegen::Bindings::HTMLMetaElementBinding::HTMLMetaElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
@@ -19,7 +20,7 @@ use string_cache::Atom;
use style::servo::Stylesheet;
use style::stylesheets::{CSSRule, Origin};
use style::viewport::ViewportRule;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS};
+use util::str::HTML_SPACE_CHARACTERS;
#[dom_struct]
pub struct HTMLMetaElement {
@@ -117,7 +118,7 @@ impl VirtualMethods for HTMLMetaElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match name {
- &atom!("name") => AttrValue::from_atomic(value),
+ &atom!("name") => AttrValue::from_atomic(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmlmeterelement.rs b/components/script/dom/htmlmeterelement.rs
index e41af546790..10af136ffa5 100644
--- a/components/script/dom/htmlmeterelement.rs
+++ b/components/script/dom/htmlmeterelement.rs
@@ -5,12 +5,12 @@
use dom::bindings::codegen::Bindings::HTMLMeterElementBinding::{self, HTMLMeterElementMethods};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use dom::nodelist::NodeList;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLMeterElement {
diff --git a/components/script/dom/htmlmodelement.rs b/components/script/dom/htmlmodelement.rs
index 3961f3ae35c..07d974d46da 100644
--- a/components/script/dom/htmlmodelement.rs
+++ b/components/script/dom/htmlmodelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLModElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLModElement {
diff --git a/components/script/dom/htmlobjectelement.rs b/components/script/dom/htmlobjectelement.rs
index 4d2b1cde778..268ff17e9cf 100644
--- a/components/script/dom/htmlobjectelement.rs
+++ b/components/script/dom/htmlobjectelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLObjectElementBinding;
use dom::bindings::codegen::Bindings::HTMLObjectElementBinding::HTMLObjectElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::htmlelement::HTMLElement;
@@ -19,7 +20,6 @@ use dom::virtualmethods::VirtualMethods;
use net_traits::image::base::Image;
use std::sync::Arc;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLObjectElement {
diff --git a/components/script/dom/htmlolistelement.rs b/components/script/dom/htmlolistelement.rs
index d8aa78e3bc6..85cc77959ea 100644
--- a/components/script/dom/htmlolistelement.rs
+++ b/components/script/dom/htmlolistelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLOListElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLOListElement {
diff --git a/components/script/dom/htmloptgroupelement.rs b/components/script/dom/htmloptgroupelement.rs
index a554377ea7a..9665a0cf22f 100644
--- a/components/script/dom/htmloptgroupelement.rs
+++ b/components/script/dom/htmloptgroupelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding;
use dom::bindings::codegen::Bindings::HTMLOptGroupElementBinding::HTMLOptGroupElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::htmlelement::HTMLElement;
@@ -15,7 +16,6 @@ use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
use style::element_state::*;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLOptGroupElement {
diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs
index cd521702a34..67cb4983258 100644
--- a/components/script/dom/htmloptionelement.rs
+++ b/components/script/dom/htmloptionelement.rs
@@ -9,6 +9,7 @@ use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElemen
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
@@ -21,7 +22,7 @@ use dom::virtualmethods::VirtualMethods;
use std::cell::Cell;
use string_cache::Atom;
use style::element_state::*;
-use util::str::{DOMString, split_html_space_chars, str_join};
+use util::str::{split_html_space_chars, str_join};
#[dom_struct]
pub struct HTMLOptionElement {
diff --git a/components/script/dom/htmloutputelement.rs b/components/script/dom/htmloutputelement.rs
index b614684b863..b1b51c6d47e 100644
--- a/components/script/dom/htmloutputelement.rs
+++ b/components/script/dom/htmloutputelement.rs
@@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::HTMLOutputElementBinding;
use dom::bindings::codegen::Bindings::HTMLOutputElementBinding::HTMLOutputElementMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::htmlformelement::{FormControl, HTMLFormElement};
@@ -13,7 +14,6 @@ use dom::node::{Node, window_from_node};
use dom::nodelist::NodeList;
use dom::validitystate::ValidityState;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLOutputElement {
diff --git a/components/script/dom/htmlparagraphelement.rs b/components/script/dom/htmlparagraphelement.rs
index 828e2f37742..fc4b342b633 100644
--- a/components/script/dom/htmlparagraphelement.rs
+++ b/components/script/dom/htmlparagraphelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLParagraphElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLParagraphElement {
diff --git a/components/script/dom/htmlparamelement.rs b/components/script/dom/htmlparamelement.rs
index 6e9da2e787b..9c3d745f612 100644
--- a/components/script/dom/htmlparamelement.rs
+++ b/components/script/dom/htmlparamelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLParamElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLParamElement {
diff --git a/components/script/dom/htmlpreelement.rs b/components/script/dom/htmlpreelement.rs
index d227c70cb83..f03af0f4c45 100644
--- a/components/script/dom/htmlpreelement.rs
+++ b/components/script/dom/htmlpreelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLPreElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLPreElement {
diff --git a/components/script/dom/htmlprogresselement.rs b/components/script/dom/htmlprogresselement.rs
index 8af60fdd1ba..9fb721b795b 100644
--- a/components/script/dom/htmlprogresselement.rs
+++ b/components/script/dom/htmlprogresselement.rs
@@ -5,12 +5,12 @@
use dom::bindings::codegen::Bindings::HTMLProgressElementBinding::{self, HTMLProgressElementMethods};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use dom::nodelist::NodeList;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLProgressElement {
diff --git a/components/script/dom/htmlquoteelement.rs b/components/script/dom/htmlquoteelement.rs
index dd5b9301f71..d4692f72b9e 100644
--- a/components/script/dom/htmlquoteelement.rs
+++ b/components/script/dom/htmlquoteelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLQuoteElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLQuoteElement {
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index 3ba0b240e31..edd2152844e 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -15,6 +15,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::RootedReference;
use dom::bindings::js::{JS, Root};
use dom::bindings::refcounted::Trusted;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, ElementCreator};
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -41,7 +42,7 @@ use std::sync::{Arc, Mutex};
use string_cache::Atom;
use task_source::dom_manipulation::DOMManipulationTask;
use url::Url;
-use util::str::{DOMString, HTML_SPACE_CHARACTERS, StaticStringVec};
+use util::str::{HTML_SPACE_CHARACTERS, StaticStringVec};
#[dom_struct]
pub struct HTMLScriptElement {
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs
index cfce718bcbe..8b04c9b00eb 100644
--- a/components/script/dom/htmlselectelement.rs
+++ b/components/script/dom/htmlselectelement.rs
@@ -10,6 +10,7 @@ use dom::bindings::codegen::UnionTypes::HTMLElementOrLong;
use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::htmlelement::HTMLElement;
@@ -23,7 +24,6 @@ use dom::validitystate::ValidityState;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
use style::element_state::*;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLSelectElement {
@@ -228,7 +228,7 @@ impl VirtualMethods for HTMLSelectElement {
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match *local_name {
- atom!("size") => AttrValue::from_u32(value, DEFAULT_SELECT_SIZE),
+ atom!("size") => AttrValue::from_u32(value.into(), DEFAULT_SELECT_SIZE),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
diff --git a/components/script/dom/htmlsourceelement.rs b/components/script/dom/htmlsourceelement.rs
index 37c1fbf8d11..585d7678281 100644
--- a/components/script/dom/htmlsourceelement.rs
+++ b/components/script/dom/htmlsourceelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLSourceElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLSourceElement {
diff --git a/components/script/dom/htmlspanelement.rs b/components/script/dom/htmlspanelement.rs
index 771defdb818..b66b1602284 100644
--- a/components/script/dom/htmlspanelement.rs
+++ b/components/script/dom/htmlspanelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLSpanElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLSpanElement {
diff --git a/components/script/dom/htmlstyleelement.rs b/components/script/dom/htmlstyleelement.rs
index e91b1a1e064..8d4a05eb9b7 100644
--- a/components/script/dom/htmlstyleelement.rs
+++ b/components/script/dom/htmlstyleelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLStyleElementBinding;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
@@ -19,7 +20,6 @@ use string_cache::Atom;
use style::media_queries::parse_media_query_list;
use style::servo::Stylesheet;
use style::stylesheets::Origin;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLStyleElement {
diff --git a/components/script/dom/htmltablecaptionelement.rs b/components/script/dom/htmltablecaptionelement.rs
index 46b841f3a43..108e0b8ea7d 100644
--- a/components/script/dom/htmltablecaptionelement.rs
+++ b/components/script/dom/htmltablecaptionelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTableCaptionElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTableCaptionElement {
diff --git a/components/script/dom/htmltablecellelement.rs b/components/script/dom/htmltablecellelement.rs
index 79cb31ced03..036771e178a 100644
--- a/components/script/dom/htmltablecellelement.rs
+++ b/components/script/dom/htmltablecellelement.rs
@@ -8,6 +8,7 @@ use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCell
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::LayoutJS;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, RawLayoutElementHelpers};
use dom::htmlelement::HTMLElement;
@@ -15,7 +16,7 @@ use dom::htmltablerowelement::HTMLTableRowElement;
use dom::node::Node;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
const DEFAULT_COLSPAN: u32 = 1;
@@ -120,9 +121,9 @@ impl VirtualMethods for HTMLTableCellElement {
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match *local_name {
- atom!("colspan") => AttrValue::from_u32(value, DEFAULT_COLSPAN),
- atom!("bgcolor") => AttrValue::from_legacy_color(value),
- atom!("width") => AttrValue::from_nonzero_dimension(value),
+ atom!("colspan") => AttrValue::from_u32(value.into(), DEFAULT_COLSPAN),
+ atom!("bgcolor") => AttrValue::from_legacy_color(value.into()),
+ atom!("width") => AttrValue::from_nonzero_dimension(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
diff --git a/components/script/dom/htmltablecolelement.rs b/components/script/dom/htmltablecolelement.rs
index 53825357066..c995a2f8048 100644
--- a/components/script/dom/htmltablecolelement.rs
+++ b/components/script/dom/htmltablecolelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTableColElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTableColElement {
diff --git a/components/script/dom/htmltabledatacellelement.rs b/components/script/dom/htmltabledatacellelement.rs
index c7081466932..4d35fe699e7 100644
--- a/components/script/dom/htmltabledatacellelement.rs
+++ b/components/script/dom/htmltabledatacellelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTableDataCellElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmltablecellelement::HTMLTableCellElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTableDataCellElement {
diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs
index 8ab213f6225..15961b3d514 100644
--- a/components/script/dom/htmltableelement.rs
+++ b/components/script/dom/htmltableelement.rs
@@ -11,6 +11,7 @@ use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
@@ -24,7 +25,7 @@ use dom::virtualmethods::VirtualMethods;
use std::cell::Cell;
use string_cache::Atom;
use style::attr::parse_unsigned_integer;
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::LengthOrPercentageOrAuto;
#[dom_struct]
pub struct HTMLTableElement {
@@ -419,9 +420,9 @@ impl VirtualMethods for HTMLTableElement {
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match *local_name {
- atom!("border") => AttrValue::from_u32(value, 1),
- atom!("width") => AttrValue::from_nonzero_dimension(value),
- atom!("bgcolor") => AttrValue::from_legacy_color(value),
+ atom!("border") => AttrValue::from_u32(value.into(), 1),
+ atom!("width") => AttrValue::from_nonzero_dimension(value.into()),
+ atom!("bgcolor") => AttrValue::from_legacy_color(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
diff --git a/components/script/dom/htmltableheadercellelement.rs b/components/script/dom/htmltableheadercellelement.rs
index dd14d75530c..17ecc472d25 100644
--- a/components/script/dom/htmltableheadercellelement.rs
+++ b/components/script/dom/htmltableheadercellelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTableHeaderCellElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmltablecellelement::HTMLTableCellElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTableHeaderCellElement {
diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs
index 2969102984d..06669b74c18 100644
--- a/components/script/dom/htmltablerowelement.rs
+++ b/components/script/dom/htmltablerowelement.rs
@@ -11,6 +11,7 @@ use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, RawLayoutElementHelpers};
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
@@ -22,7 +23,6 @@ use dom::htmltablesectionelement::HTMLTableSectionElement;
use dom::node::{Node, window_from_node};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[derive(JSTraceable)]
@@ -160,7 +160,7 @@ impl VirtualMethods for HTMLTableRowElement {
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match *local_name {
- atom!("bgcolor") => AttrValue::from_legacy_color(value),
+ atom!("bgcolor") => AttrValue::from_legacy_color(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs
index fc737aed9ea..bc907c16324 100644
--- a/components/script/dom/htmltablesectionelement.rs
+++ b/components/script/dom/htmltablesectionelement.rs
@@ -9,6 +9,7 @@ use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root, RootedReference};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{Element, RawLayoutElementHelpers};
use dom::htmlcollection::{CollectionFilter, HTMLCollection};
@@ -17,7 +18,6 @@ use dom::htmltablerowelement::HTMLTableRowElement;
use dom::node::{Node, window_from_node};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTableSectionElement {
@@ -97,7 +97,7 @@ impl VirtualMethods for HTMLTableSectionElement {
fn parse_plain_attribute(&self, local_name: &Atom, value: DOMString) -> AttrValue {
match *local_name {
- atom!("bgcolor") => AttrValue::from_legacy_color(value),
+ atom!("bgcolor") => AttrValue::from_legacy_color(value.into()),
_ => self.super_type().unwrap().parse_plain_attribute(local_name, value),
}
}
diff --git a/components/script/dom/htmltemplateelement.rs b/components/script/dom/htmltemplateelement.rs
index 411a46b4b90..0459a772273 100644
--- a/components/script/dom/htmltemplateelement.rs
+++ b/components/script/dom/htmltemplateelement.rs
@@ -8,13 +8,13 @@ use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateEl
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::documentfragment::DocumentFragment;
use dom::htmlelement::HTMLElement;
use dom::node::{CloneChildrenFlag, Node, document_from_node};
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTemplateElement {
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 516f421f436..19d108d95cc 100644
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -10,6 +10,7 @@ use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaEl
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{LayoutJS, Root};
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::RawLayoutElementHelpers;
use dom::element::{AttributeMutation, Element};
@@ -30,7 +31,6 @@ use std::ops::Range;
use string_cache::Atom;
use style::element_state::*;
use textinput::{KeyReaction, Lines, TextInput, SelectionDirection};
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTextAreaElement {
@@ -332,8 +332,8 @@ impl VirtualMethods for HTMLTextAreaElement {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match *name {
- atom!("cols") => AttrValue::from_limited_u32(value, DEFAULT_COLS),
- atom!("rows") => AttrValue::from_limited_u32(value, DEFAULT_ROWS),
+ atom!("cols") => AttrValue::from_limited_u32(value.into(), DEFAULT_COLS),
+ atom!("rows") => AttrValue::from_limited_u32(value.into(), DEFAULT_ROWS),
_ => self.super_type().unwrap().parse_plain_attribute(name, value),
}
}
diff --git a/components/script/dom/htmltimeelement.rs b/components/script/dom/htmltimeelement.rs
index cf261e691b7..7c55c2f7e61 100644
--- a/components/script/dom/htmltimeelement.rs
+++ b/components/script/dom/htmltimeelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTimeElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTimeElement {
diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs
index 5a57a2f5cab..d475f37bc73 100644
--- a/components/script/dom/htmltitleelement.rs
+++ b/components/script/dom/htmltitleelement.rs
@@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::HTMLTitleElementBinding::HTMLTitleElementM
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
@@ -14,7 +15,6 @@ use dom::node::{ChildrenMutation, Node};
use dom::text::Text;
use dom::virtualmethods::VirtualMethods;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTitleElement {
diff --git a/components/script/dom/htmltrackelement.rs b/components/script/dom/htmltrackelement.rs
index 62e210e9b4e..df071125b7b 100644
--- a/components/script/dom/htmltrackelement.rs
+++ b/components/script/dom/htmltrackelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLTrackElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLTrackElement {
diff --git a/components/script/dom/htmlulistelement.rs b/components/script/dom/htmlulistelement.rs
index baf4830def4..145d3e6770c 100644
--- a/components/script/dom/htmlulistelement.rs
+++ b/components/script/dom/htmlulistelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLUListElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLUListElement {
diff --git a/components/script/dom/htmlunknownelement.rs b/components/script/dom/htmlunknownelement.rs
index da2eab2fd88..5211b5c11e6 100644
--- a/components/script/dom/htmlunknownelement.rs
+++ b/components/script/dom/htmlunknownelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLUnknownElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlelement::HTMLElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLUnknownElement {
diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs
index f2f2fb2b5db..6295227cf26 100644
--- a/components/script/dom/htmlvideoelement.rs
+++ b/components/script/dom/htmlvideoelement.rs
@@ -4,11 +4,11 @@
use dom::bindings::codegen::Bindings::HTMLVideoElementBinding;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::htmlmediaelement::HTMLMediaElement;
use dom::node::Node;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct HTMLVideoElement {
diff --git a/components/script/dom/keyboardevent.rs b/components/script/dom/keyboardevent.rs
index b70b0721a18..e5616257863 100644
--- a/components/script/dom/keyboardevent.rs
+++ b/components/script/dom/keyboardevent.rs
@@ -11,13 +11,13 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::Event;
use dom::uievent::UIEvent;
use dom::window::Window;
use msg::constellation_msg;
use msg::constellation_msg::{Key, KeyModifiers};
use std::cell::Cell;
-use util::str::DOMString;
no_jsmanaged_fields!(Key);
diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs
index 08e23b15920..9fff2a45837 100644
--- a/components/script/dom/location.rs
+++ b/components/script/dom/location.rs
@@ -7,11 +7,10 @@ use dom::bindings::codegen::Bindings::LocationBinding::LocationMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::urlhelper::UrlHelper;
use dom::window::Window;
use url::Url;
-use util::str::DOMString;
#[dom_struct]
pub struct Location {
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index 78238dc09fd..5983890e51a 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -159,7 +159,8 @@ macro_rules! make_url_setter(
use dom::bindings::inheritance::Castable;
use dom::element::Element;
use dom::node::document_from_node;
- let value = AttrValue::from_url(document_from_node(self).url(), value);
+ let value = AttrValue::from_url(document_from_node(self).url(),
+ value.into());
let element = self.upcast::<Element>();
element.set_attribute(&atom!($htmlname), value);
}
@@ -231,7 +232,7 @@ macro_rules! make_legacy_color_setter(
use dom::bindings::inheritance::Castable;
use dom::element::Element;
let element = self.upcast::<Element>();
- let value = AttrValue::from_legacy_color(value);
+ let value = AttrValue::from_legacy_color(value.into());
element.set_attribute(&atom!($htmlname), value)
}
);
@@ -244,7 +245,7 @@ macro_rules! make_dimension_setter(
use dom::bindings::inheritance::Castable;
use dom::element::Element;
let element = self.upcast::<Element>();
- let value = AttrValue::from_dimension(value);
+ let value = AttrValue::from_dimension(value.into());
element.set_attribute(&atom!($htmlname), value)
}
);
@@ -257,7 +258,7 @@ macro_rules! make_nonzero_dimension_setter(
use dom::bindings::inheritance::Castable;
use dom::element::Element;
let element = self.upcast::<Element>();
- let value = AttrValue::from_nonzero_dimension(value);
+ let value = AttrValue::from_nonzero_dimension(value.into());
element.set_attribute(&atom!($htmlname), value)
}
);
diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs
index 3f4571ff528..8d638adae06 100644
--- a/components/script/dom/messageevent.rs
+++ b/components/script/dom/messageevent.rs
@@ -10,13 +10,13 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::Event;
use dom::eventtarget::EventTarget;
use js::jsapi::{RootedValue, HandleValue, Heap, JSContext};
use js::jsval::JSVal;
use std::default::Default;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct MessageEvent {
diff --git a/components/script/dom/mimetype.rs b/components/script/dom/mimetype.rs
index f29b40faa5a..4757c4e7850 100644
--- a/components/script/dom/mimetype.rs
+++ b/components/script/dom/mimetype.rs
@@ -5,8 +5,8 @@
use dom::bindings::codegen::Bindings::MimeTypeBinding::MimeTypeMethods;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector};
+use dom::bindings::str::DOMString;
use dom::plugin::Plugin;
-use util::str::DOMString;
#[dom_struct]
pub struct MimeType {
diff --git a/components/script/dom/mimetypearray.rs b/components/script/dom/mimetypearray.rs
index ae11341e77b..96fc48c86d0 100644
--- a/components/script/dom/mimetypearray.rs
+++ b/components/script/dom/mimetypearray.rs
@@ -7,8 +7,8 @@ use dom::bindings::codegen::Bindings::MimeTypeArrayBinding::MimeTypeArrayMethods
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::mimetype::MimeType;
-use util::str::DOMString;
#[dom_struct]
pub struct MimeTypeArray {
diff --git a/components/script/dom/mouseevent.rs b/components/script/dom/mouseevent.rs
index 3acebff3f46..d6b5316f2d2 100644
--- a/components/script/dom/mouseevent.rs
+++ b/components/script/dom/mouseevent.rs
@@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::uievent::UIEvent;
@@ -17,7 +18,6 @@ use dom::window::Window;
use std::cell::Cell;
use std::default::Default;
use util::prefs;
-use util::str::DOMString;
#[dom_struct]
pub struct MouseEvent {
diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs
index 50a2894b8ff..10b6b8982ae 100644
--- a/components/script/dom/namednodemap.rs
+++ b/components/script/dom/namednodemap.rs
@@ -10,12 +10,12 @@ use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::xmlname::namespace_from_domstring;
use dom::element::Element;
use dom::window::Window;
use std::ascii::AsciiExt;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct NamedNodeMap {
diff --git a/components/script/dom/navigator.rs b/components/script/dom/navigator.rs
index c1874905a54..8a17b2dbc17 100644
--- a/components/script/dom/navigator.rs
+++ b/components/script/dom/navigator.rs
@@ -7,12 +7,12 @@ use dom::bindings::codegen::Bindings::NavigatorBinding::NavigatorMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflector, Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bluetooth::Bluetooth;
use dom::mimetypearray::MimeTypeArray;
use dom::navigatorinfo;
use dom::pluginarray::PluginArray;
use dom::window::Window;
-use util::str::DOMString;
#[dom_struct]
pub struct Navigator {
diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs
index f27e46ed91b..54200e7be20 100644
--- a/components/script/dom/navigatorinfo.rs
+++ b/components/script/dom/navigatorinfo.rs
@@ -2,8 +2,8 @@
* 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::bindings::str::DOMString;
use util::opts;
-use util::str::DOMString;
pub fn Product() -> DOMString {
DOMString::from("Gecko")
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 20d387cee9a..711e0ba740c 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -28,6 +28,7 @@ use dom::bindings::js::Root;
use dom::bindings::js::RootedReference;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap};
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::RootedVec;
use dom::bindings::xmlname::namespace_from_domstring;
use dom::characterdata::{CharacterData, LayoutCharacterDataHelpers};
@@ -69,7 +70,6 @@ use std::iter::{self, FilterMap, Peekable};
use std::mem;
use string_cache::{Atom, Namespace, QualName};
use style::selector_impl::ServoSelectorImpl;
-use util::str::DOMString;
use util::thread_state;
use uuid::Uuid;
diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs
index 2baa8d0693c..7c6b7b6f555 100644
--- a/components/script/dom/pagetransitionevent.rs
+++ b/components/script/dom/pagetransitionevent.rs
@@ -10,10 +10,10 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::Event;
use std::cell::Cell;
use string_cache::Atom;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#pagetransitionevent
#[dom_struct]
diff --git a/components/script/dom/plugin.rs b/components/script/dom/plugin.rs
index 0836bc32f0f..8fcd3f3a2e6 100644
--- a/components/script/dom/plugin.rs
+++ b/components/script/dom/plugin.rs
@@ -5,8 +5,8 @@
use dom::bindings::codegen::Bindings::PluginBinding::PluginMethods;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector};
+use dom::bindings::str::DOMString;
use dom::mimetype::MimeType;
-use util::str::DOMString;
#[dom_struct]
pub struct Plugin {
diff --git a/components/script/dom/pluginarray.rs b/components/script/dom/pluginarray.rs
index d94131b1a9f..5cbf589b7e7 100644
--- a/components/script/dom/pluginarray.rs
+++ b/components/script/dom/pluginarray.rs
@@ -7,8 +7,8 @@ use dom::bindings::codegen::Bindings::PluginArrayBinding::PluginArrayMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::plugin::Plugin;
-use util::str::DOMString;
#[dom_struct]
pub struct PluginArray {
diff --git a/components/script/dom/popstateevent.rs b/components/script/dom/popstateevent.rs
index dd55e06b5a2..a9487f48299 100644
--- a/components/script/dom/popstateevent.rs
+++ b/components/script/dom/popstateevent.rs
@@ -10,11 +10,11 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{MutHeapJSVal, Root};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::Event;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
use string_cache::Atom;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#the-popstateevent-interface
#[dom_struct]
diff --git a/components/script/dom/processinginstruction.rs b/components/script/dom/processinginstruction.rs
index 6f26a4ca0fa..68efbd67cd2 100644
--- a/components/script/dom/processinginstruction.rs
+++ b/components/script/dom/processinginstruction.rs
@@ -5,10 +5,10 @@
use dom::bindings::codegen::Bindings::ProcessingInstructionBinding;
use dom::bindings::codegen::Bindings::ProcessingInstructionBinding::ProcessingInstructionMethods;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::document::Document;
use dom::node::Node;
-use util::str::DOMString;
/// An HTML processing instruction node.
#[dom_struct]
diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs
index 4a3d3f3da7d..f0d2b5c400a 100644
--- a/components/script/dom/progressevent.rs
+++ b/components/script/dom/progressevent.rs
@@ -10,10 +10,10 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::window::Window;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct ProgressEvent {
diff --git a/components/script/dom/radionodelist.rs b/components/script/dom/radionodelist.rs
index ae6ac13919d..e0c35179269 100644
--- a/components/script/dom/radionodelist.rs
+++ b/components/script/dom/radionodelist.rs
@@ -10,11 +10,11 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::htmlinputelement::HTMLInputElement;
use dom::node::Node;
use dom::nodelist::{NodeList, NodeListType};
use dom::window::Window;
-use util::str::DOMString;
#[dom_struct]
pub struct RadioNodeList {
diff --git a/components/script/dom/range.rs b/components/script/dom/range.rs
index 7d94d95f0e4..93e2d4606bc 100644
--- a/components/script/dom/range.rs
+++ b/components/script/dom/range.rs
@@ -16,6 +16,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::inheritance::{CharacterDataTypeId, NodeTypeId};
use dom::bindings::js::{JS, MutHeap, Root, RootedReference};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::{JSTraceable, RootedVec};
use dom::bindings::weakref::{WeakRef, WeakRefVec};
use dom::characterdata::CharacterData;
@@ -27,7 +28,6 @@ use heapsize::HeapSizeOf;
use js::jsapi::JSTracer;
use std::cell::{Cell, UnsafeCell};
use std::cmp::{Ord, Ordering, PartialEq, PartialOrd};
-use util::str::DOMString;
#[dom_struct]
pub struct Range {
diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs
index a71881fccd6..fa6b3f91a42 100644
--- a/components/script/dom/storage.rs
+++ b/components/script/dom/storage.rs
@@ -10,6 +10,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::browsingcontext::IterableContext;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::storageevent::StorageEvent;
@@ -20,7 +21,6 @@ use net_traits::storage_thread::{StorageThreadMsg, StorageType};
use script_thread::{MainThreadRunnable, ScriptThread};
use task_source::dom_manipulation::DOMManipulationTask;
use url::Url;
-use util::str::DOMString;
#[dom_struct]
pub struct Storage {
diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs
index e3317a34b49..71e3dc26350 100644
--- a/components/script/dom/storageevent.rs
+++ b/components/script/dom/storageevent.rs
@@ -10,11 +10,11 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::storage::Storage;
use dom::window::Window;
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct StorageEvent {
diff --git a/components/script/dom/stylesheet.rs b/components/script/dom/stylesheet.rs
index 490acd997ed..0801d82fcad 100644
--- a/components/script/dom/stylesheet.rs
+++ b/components/script/dom/stylesheet.rs
@@ -7,8 +7,8 @@ use dom::bindings::codegen::Bindings::StyleSheetBinding::StyleSheetMethods;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{Root};
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::window::Window;
-use util::str::DOMString;
#[dom_struct]
diff --git a/components/script/dom/testbinding.rs b/components/script/dom/testbinding.rs
index 6dfe66a9d75..faf53596ecc 100644
--- a/components/script/dom/testbinding.rs
+++ b/components/script/dom/testbinding.rs
@@ -20,7 +20,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::num::Finite;
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
-use dom::bindings::str::{ByteString, USVString};
+use dom::bindings::str::{ByteString, DOMString, USVString};
use dom::bindings::weakref::MutableWeakRef;
use dom::blob::{Blob, DataSlice};
use dom::url::URL;
@@ -30,7 +30,6 @@ use std::borrow::ToOwned;
use std::ptr;
use std::rc::Rc;
use util::prefs::{get_pref};
-use util::str::DOMString;
#[dom_struct]
pub struct TestBinding {
diff --git a/components/script/dom/testbindingproxy.rs b/components/script/dom/testbindingproxy.rs
index 120d125de72..3308639305c 100644
--- a/components/script/dom/testbindingproxy.rs
+++ b/components/script/dom/testbindingproxy.rs
@@ -6,7 +6,7 @@
use dom::bindings::codegen::Bindings::TestBindingProxyBinding::TestBindingProxyMethods;
use dom::bindings::reflector::Reflector;
-use util::str::DOMString;
+use dom::bindings::str::DOMString;
#[dom_struct]
diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs
index 1c834f563cf..3d3100bcf4d 100644
--- a/components/script/dom/text.rs
+++ b/components/script/dom/text.rs
@@ -12,10 +12,10 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::js::{RootedReference};
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::document::Document;
use dom::node::Node;
-use util::str::DOMString;
/// An HTML text node.
#[dom_struct]
diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs
index 50bf1c4c9ea..fae78342a73 100644
--- a/components/script/dom/textdecoder.rs
+++ b/components/script/dom/textdecoder.rs
@@ -9,12 +9,11 @@ use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use encoding::label::encoding_from_whatwg_label;
use encoding::types::{DecoderTrap, EncodingRef};
use js::jsapi::{JSContext, JSObject};
use std::borrow::ToOwned;
-use util::str::DOMString;
#[dom_struct]
pub struct TextDecoder {
diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs
index a932dfcfe4e..84100e723ba 100644
--- a/components/script/dom/textencoder.rs
+++ b/components/script/dom/textencoder.rs
@@ -8,7 +8,7 @@ use dom::bindings::error::{Error, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use encoding::EncoderTrap;
use encoding::label::encoding_from_whatwg_label;
use encoding::types::EncodingRef;
@@ -17,7 +17,6 @@ use js::jsapi::{JS_GetUint8ArrayData, JS_NewUint8Array};
use libc::uint8_t;
use std::borrow::ToOwned;
use std::ptr;
-use util::str::DOMString;
#[dom_struct]
pub struct TextEncoder {
diff --git a/components/script/dom/touchevent.rs b/components/script/dom/touchevent.rs
index 86f53968fe3..4f0822fddaf 100644
--- a/components/script/dom/touchevent.rs
+++ b/components/script/dom/touchevent.rs
@@ -9,12 +9,12 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutHeap, Root};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{EventBubbles, EventCancelable};
use dom::touchlist::TouchList;
use dom::uievent::UIEvent;
use dom::window::Window;
use std::cell::Cell;
-use util::str::DOMString;
#[dom_struct]
pub struct TouchEvent {
diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs
index e962c10c8aa..5b0a6f3243e 100644
--- a/components/script/dom/uievent.rs
+++ b/components/script/dom/uievent.rs
@@ -11,12 +11,12 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::js::{JS, MutNullableHeap, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::window::Window;
use std::cell::Cell;
use std::default::Default;
use string_cache::Atom;
-use util::str::DOMString;
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent
#[dom_struct]
diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs
index f2ba7082e0f..1553e8b5b0a 100644
--- a/components/script/dom/url.rs
+++ b/components/script/dom/url.rs
@@ -8,13 +8,12 @@ use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::urlhelper::UrlHelper;
use dom::urlsearchparams::URLSearchParams;
use std::borrow::ToOwned;
use std::default::Default;
use url::{Host, Url};
-use util::str::DOMString;
// https://url.spec.whatwg.org/#url
#[dom_struct]
diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs
index 800cd10db88..44eadea0932 100644
--- a/components/script/dom/urlsearchparams.rs
+++ b/components/script/dom/urlsearchparams.rs
@@ -10,12 +10,11 @@ use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::bindings::weakref::MutableWeakRef;
use dom::url::URL;
use encoding::types::EncodingRef;
use url::form_urlencoded;
-use util::str::DOMString;
// https://url.spec.whatwg.org/#interface-urlsearchparams
#[dom_struct]
diff --git a/components/script/dom/userscripts.rs b/components/script/dom/userscripts.rs
index 91f521c6922..dd9acb93a92 100644
--- a/components/script/dom/userscripts.rs
+++ b/components/script/dom/userscripts.rs
@@ -6,6 +6,7 @@ use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{RootedReference};
+use dom::bindings::str::DOMString;
use dom::htmlheadelement::HTMLHeadElement;
use dom::node::Node;
use std::borrow::ToOwned;
@@ -13,7 +14,6 @@ use std::fs::read_dir;
use std::path::PathBuf;
use util::opts;
use util::resource_files::resources_dir_path;
-use util::str::DOMString;
pub fn load_script(head: &HTMLHeadElement) {
diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs
index cb62947c207..d8259307274 100644
--- a/components/script/dom/virtualmethods.rs
+++ b/components/script/dom/virtualmethods.rs
@@ -7,6 +7,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::inheritance::ElementTypeId;
use dom::bindings::inheritance::HTMLElementTypeId;
use dom::bindings::inheritance::NodeTypeId;
+use dom::bindings::str::DOMString;
use dom::document::Document;
use dom::element::{AttributeMutation, Element};
use dom::event::Event;
@@ -46,7 +47,6 @@ use dom::htmltextareaelement::HTMLTextAreaElement;
use dom::htmltitleelement::HTMLTitleElement;
use dom::node::{ChildrenMutation, CloneChildrenFlag, Node, UnbindContext};
use string_cache::Atom;
-use util::str::DOMString;
/// Trait to allow DOM nodes to opt-in to overriding (or adding to) common
@@ -70,7 +70,7 @@ pub trait VirtualMethods {
fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue {
match self.super_type() {
Some(ref s) => s.parse_plain_attribute(name, value),
- _ => AttrValue::String(value),
+ _ => AttrValue::String(value.into()),
}
}
diff --git a/components/script/dom/webglactiveinfo.rs b/components/script/dom/webglactiveinfo.rs
index 60597aee160..00f70b682b7 100644
--- a/components/script/dom/webglactiveinfo.rs
+++ b/components/script/dom/webglactiveinfo.rs
@@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding::WebGLActiveInfoMet
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use util::str::DOMString;
+use dom::bindings::str::DOMString;
#[dom_struct]
pub struct WebGLActiveInfo {
diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs
index fa785146499..9c73a9f6b65 100644
--- a/components/script/dom/webglcontextevent.rs
+++ b/components/script/dom/webglcontextevent.rs
@@ -11,9 +11,9 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use string_cache::Atom;
-use util::str::DOMString;
#[dom_struct]
pub struct WebGLContextEvent {
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index 504a13ec339..0c6e9bda11c 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -9,13 +9,13 @@ use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderi
use dom::bindings::global::GlobalRef;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::webglactiveinfo::WebGLActiveInfo;
use dom::webglobject::WebGLObject;
use dom::webglrenderingcontext::MAX_UNIFORM_AND_ATTRIBUTE_LEN;
use dom::webglshader::WebGLShader;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
-use util::str::DOMString;
use webrender_traits::{WebGLCommand, WebGLError, WebGLParameter, WebGLResult};
#[dom_struct]
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 29669c9ff15..3e57bae5a6e 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -13,6 +13,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, LayoutJS, MutNullableHeap, Root};
use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::htmlcanvaselement::HTMLCanvasElement;
use dom::htmlcanvaselement::utils as canvas_utils;
@@ -35,7 +36,6 @@ use net_traits::image_cache_thread::ImageResponse;
use offscreen_gl_context::{GLContextAttributes, GLLimits};
use script_traits::ScriptMsg as ConstellationMsg;
use std::cell::Cell;
-use util::str::DOMString;
use util::vec::byte_swap;
use webrender_traits::WebGLError::*;
use webrender_traits::{WebGLCommand, WebGLError, WebGLFramebufferBindingRequest, WebGLParameter};
diff --git a/components/script/dom/webglshader.rs b/components/script/dom/webglshader.rs
index c166fbcf46d..949cb4550ae 100644
--- a/components/script/dom/webglshader.rs
+++ b/components/script/dom/webglshader.rs
@@ -10,11 +10,11 @@ use dom::bindings::codegen::Bindings::WebGLShaderBinding;
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::webglobject::WebGLObject;
use ipc_channel::ipc::{self, IpcSender};
use std::cell::Cell;
use std::sync::{ONCE_INIT, Once};
-use util::str::DOMString;
use webrender_traits::{WebGLCommand, WebGLParameter, WebGLResult};
#[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)]
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index 796fb6a6d5f..39894cbd585 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -15,7 +15,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
-use dom::bindings::str::{USVString, is_token};
+use dom::bindings::str::{DOMString, USVString, is_token};
use dom::blob::{Blob, DataSlice};
use dom::closeevent::CloseEvent;
use dom::event::{Event, EventBubbles, EventCancelable};
@@ -42,7 +42,6 @@ use std::cell::Cell;
use std::ptr;
use std::sync::Arc;
use std::thread;
-use util::str::DOMString;
use websocket::client::request::Url;
use websocket::header::{Headers, WebSocketProtocol};
use websocket::ws::util::url::parse_url;
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 8fdb7049715..e5af0ebbf26 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -19,6 +19,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::num::Finite;
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::bindings::utils::{GlobalStaticData, WindowProxyHandler};
use dom::browsingcontext::BrowsingContext;
use dom::console::Console;
@@ -92,7 +93,7 @@ use timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle, OneshotTimers
use tinyfiledialogs::{self, MessageBoxIcon};
use url::Url;
use util::geometry::{self, MAX_RECT};
-use util::str::{DOMString, HTML_SPACE_CHARACTERS};
+use util::str::HTML_SPACE_CHARACTERS;
use util::{breakpoint, opts};
use webdriver_handlers::jsval_to_webdriver;
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index f7900a0d0f0..e969328a210 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -12,6 +12,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::bindings::structuredclone::StructuredCloneData;
use dom::dedicatedworkerglobalscope::{DedicatedWorkerGlobalScope, WorkerScriptMsg};
use dom::errorevent::ErrorEvent;
@@ -31,7 +32,6 @@ use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::{Sender, channel};
use std::sync::{Arc, Mutex};
use url::Url;
-use util::str::DOMString;
pub type TrustedWorkerAddress = Trusted<Worker>;
diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs
index a8b5d9a48c3..6161b11ccc8 100644
--- a/components/script/dom/workerglobalscope.rs
+++ b/components/script/dom/workerglobalscope.rs
@@ -10,6 +10,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root};
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::console::Console;
use dom::crypto::Crypto;
use dom::dedicatedworkerglobalscope::DedicatedWorkerGlobalScope;
@@ -36,7 +37,6 @@ use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::mpsc::Receiver;
use timers::{IsInterval, OneshotTimerCallback, OneshotTimerHandle, OneshotTimers, TimerCallback};
use url::Url;
-use util::str::DOMString;
#[derive(Copy, Clone, PartialEq)]
pub enum WorkerGlobalScopeTypeId {
diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs
index e79b7ff0fc9..a037f7737a8 100644
--- a/components/script/dom/workerlocation.rs
+++ b/components/script/dom/workerlocation.rs
@@ -7,11 +7,10 @@ use dom::bindings::codegen::Bindings::WorkerLocationBinding::WorkerLocationMetho
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
-use dom::bindings::str::USVString;
+use dom::bindings::str::{DOMString, USVString};
use dom::urlhelper::UrlHelper;
use dom::workerglobalscope::WorkerGlobalScope;
use url::Url;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#worker-locations
#[dom_struct]
diff --git a/components/script/dom/workernavigator.rs b/components/script/dom/workernavigator.rs
index 07bf443d33c..1114a91a169 100644
--- a/components/script/dom/workernavigator.rs
+++ b/components/script/dom/workernavigator.rs
@@ -7,9 +7,9 @@ use dom::bindings::codegen::Bindings::WorkerNavigatorBinding::WorkerNavigatorMet
use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root;
use dom::bindings::reflector::{Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
use dom::navigatorinfo;
use dom::workerglobalscope::WorkerGlobalScope;
-use util::str::DOMString;
// https://html.spec.whatwg.org/multipage/#workernavigator
#[dom_struct]
diff --git a/components/script/dom/xmldocument.rs b/components/script/dom/xmldocument.rs
index 165ca6c6f5f..b291c912089 100644
--- a/components/script/dom/xmldocument.rs
+++ b/components/script/dom/xmldocument.rs
@@ -9,6 +9,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::str::DOMString;
use dom::browsingcontext::BrowsingContext;
use dom::document::{Document, DocumentSource, IsHTMLDocument};
use dom::location::Location;
@@ -16,7 +17,6 @@ use dom::node::Node;
use dom::window::Window;
use js::jsapi::{JSContext, JSObject};
use url::Url;
-use util::str::DOMString;
// https://dom.spec.whatwg.org/#xmldocument
#[dom_struct]
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 567db277b8f..27fe4a783f0 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -21,7 +21,7 @@ use dom::bindings::js::{JS, MutHeapJSVal, MutNullableHeap};
use dom::bindings::js::{Root, RootedReference};
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::{Reflectable, reflect_dom_object};
-use dom::bindings::str::{ByteString, USVString, is_token};
+use dom::bindings::str::{ByteString, DOMString, USVString, is_token};
use dom::blob::{Blob, DataSlice};
use dom::document::DocumentSource;
use dom::document::{Document, IsHTMLDocument};
@@ -63,7 +63,6 @@ use time;
use timers::{OneshotTimerCallback, OneshotTimerHandle};
use url::{Url, Position};
use util::prefs;
-use util::str::DOMString;
#[derive(JSTraceable, PartialEq, Copy, Clone, HeapSizeOf)]
enum XMLHttpRequestState {
diff --git a/components/script/lib.rs b/components/script/lib.rs
index 54eab466906..e647003e860 100644
--- a/components/script/lib.rs
+++ b/components/script/lib.rs
@@ -14,6 +14,7 @@
#![feature(mpsc_select)]
#![feature(nonzero)]
#![feature(on_unimplemented)]
+#![feature(optin_builtin_traits)]
#![feature(peekable_is_empty)]
#![feature(plugin)]
#![feature(slice_patterns)]
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index 2d7f71eed15..a16f35a7714 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -10,6 +10,7 @@ use dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateEl
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::{Castable, CharacterDataTypeId, NodeTypeId};
use dom::bindings::js::{JS, RootedReference};
+use dom::bindings::str::DOMString;
use dom::characterdata::CharacterData;
use dom::comment::Comment;
use dom::document::Document;
@@ -37,7 +38,6 @@ use std::borrow::Cow;
use std::io::{self, Write};
use string_cache::QualName;
use url::Url;
-use util::str::DOMString;
fn insert(parent: &Node, reference_child: Option<&Node>, child: NodeOrText<JS<Node>>) {
match child {
diff --git a/components/script/parse/xml.rs b/components/script/parse/xml.rs
index 121dc38ff05..3dd0f89f03d 100644
--- a/components/script/parse/xml.rs
+++ b/components/script/parse/xml.rs
@@ -7,6 +7,7 @@
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, Root};
+use dom::bindings::str::DOMString;
use dom::comment::Comment;
use dom::document::Document;
use dom::documenttype::DocumentType;
@@ -23,7 +24,6 @@ use parse::Parser;
use std::borrow::Cow;
use string_cache::{Atom, QualName, Namespace};
use url::Url;
-use util::str::DOMString;
use xml5ever::tendril::StrTendril;
use xml5ever::tokenizer::{Attribute, QName};
use xml5ever::tree_builder::{NextParserState, NodeOrText, TreeSink};
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index d5b572638c7..330eebafdfe 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -30,6 +30,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::{JS, MutNullableHeap, Root, RootCollection};
use dom::bindings::js::{RootCollectionPtr, RootedReference};
use dom::bindings::refcounted::{LiveDOMReferences, Trusted};
+use dom::bindings::str::DOMString;
use dom::bindings::trace::JSTraceable;
use dom::bindings::utils::WRAP_CALLBACKS;
use dom::browsingcontext::{BrowsingContext, IterableContext};
@@ -102,7 +103,6 @@ use task_source::user_interaction::{UserInteractionTaskSource, UserInteractionTa
use time::Tm;
use url::{Url, Position};
use util::opts;
-use util::str::DOMString;
use util::thread;
use util::thread_state;
use webdriver_handlers;
diff --git a/components/script/textinput.rs b/components/script/textinput.rs
index 56e3fa98631..5666fa617b4 100644
--- a/components/script/textinput.rs
+++ b/components/script/textinput.rs
@@ -5,6 +5,7 @@
//! Common handling of keyboard input and state management for text input controls
use clipboard_provider::ClipboardProvider;
+use dom::bindings::str::DOMString;
use dom::keyboardevent::{KeyboardEvent, key_value};
use msg::constellation_msg::{ALT, CONTROL, SHIFT, SUPER};
use msg::constellation_msg::{Key, KeyModifiers};
@@ -13,7 +14,6 @@ use std::cmp::{max, min};
use std::default::Default;
use std::ops::Range;
use std::usize;
-use util::str::DOMString;
#[derive(Copy, Clone, PartialEq)]
pub enum Selection {
diff --git a/components/script/timers.rs b/components/script/timers.rs
index c680fe408bc..18058b7f9f7 100644
--- a/components/script/timers.rs
+++ b/components/script/timers.rs
@@ -7,6 +7,7 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::FunctionBinding::Function;
use dom::bindings::global::GlobalRef;
use dom::bindings::reflector::Reflectable;
+use dom::bindings::str::DOMString;
use dom::window::ScriptHelpers;
use dom::xmlhttprequest::XHRTimeoutCallback;
use euclid::length::Length;
@@ -21,7 +22,6 @@ use std::cmp::{self, Ord, Ordering};
use std::collections::HashMap;
use std::default::Default;
use std::rc::Rc;
-use util::str::DOMString;
#[derive(JSTraceable, PartialEq, Eq, Copy, Clone, HeapSizeOf, Hash, PartialOrd, Ord, Debug)]
pub struct OneshotTimerHandle(i32);
diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs
index 6a7492492e2..910ffa6c426 100644
--- a/components/script/webdriver_handlers.rs
+++ b/components/script/webdriver_handlers.rs
@@ -15,6 +15,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::conversions::{FromJSValConvertible, StringificationBehavior};
use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
+use dom::bindings::str::DOMString;
use dom::browsingcontext::BrowsingContext;
use dom::element::Element;
use dom::htmlelement::HTMLElement;
@@ -34,7 +35,6 @@ use msg::constellation_msg::PipelineId;
use msg::webdriver_msg::{WebDriverFrameId, WebDriverJSError, WebDriverJSResult, WebDriverJSValue};
use script_thread::get_browsing_context;
use url::Url;
-use util::str::DOMString;
fn find_node_by_unique_id(context: &BrowsingContext,
pipeline: PipelineId,
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock
index 9d450aacfba..8e69e676201 100644
--- a/components/servo/Cargo.lock
+++ b/components/servo/Cargo.lock
@@ -2368,7 +2368,6 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "js 0.1.3 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2381,7 +2380,6 @@ dependencies = [
"serde 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml
index 819b4dfce54..d93fbfb0626 100644
--- a/components/servo/Cargo.toml
+++ b/components/servo/Cargo.toml
@@ -53,7 +53,7 @@ net_traits = {path = "../net_traits"}
msg = {path = "../msg"}
profile = {path = "../profile"}
profile_traits = {path = "../profile_traits"}
-util = {path = "../util", features = ["non-geckolib"]}
+util = {path = "../util"}
script = {path = "../script"}
script_traits = {path = "../script_traits"}
layout = {path = "../layout"}
diff --git a/components/style/attr.rs b/components/style/attr.rs
index 8c797dbcba0..8bb307040ea 100644
--- a/components/style/attr.rs
+++ b/components/style/attr.rs
@@ -10,7 +10,7 @@ use std::ascii::AsciiExt;
use std::str::FromStr;
use string_cache::{Atom, Namespace};
use url::Url;
-use util::str::{DOMString, LengthOrPercentageOrAuto, HTML_SPACE_CHARACTERS};
+use util::str::{LengthOrPercentageOrAuto, HTML_SPACE_CHARACTERS};
use util::str::{read_exponent, read_fraction, read_numbers, split_html_space_chars};
use values::specified::{Length};
@@ -19,16 +19,16 @@ const UNSIGNED_LONG_MAX: u32 = 2147483647;
#[derive(PartialEq, Clone, HeapSizeOf)]
pub enum AttrValue {
- String(DOMString),
- TokenList(DOMString, Vec<Atom>),
- UInt(DOMString, u32),
- Int(DOMString, i32),
- Double(DOMString, f64),
+ String(String),
+ TokenList(String, Vec<Atom>),
+ UInt(String, u32),
+ Int(String, i32),
+ Double(String, f64),
Atom(Atom),
- Length(DOMString, Option<Length>),
- Color(DOMString, Option<RGBA>),
- Dimension(DOMString, LengthOrPercentageOrAuto),
- Url(DOMString, Option<Url>),
+ Length(String, Option<Length>),
+ Color(String, Option<RGBA>),
+ Dimension(String, LengthOrPercentageOrAuto),
+ Url(String, Option<Url>),
}
/// Shared implementation to parse an integer according to
@@ -75,7 +75,7 @@ pub fn parse_unsigned_integer<T: Iterator<Item=char>>(input: T) -> Result<u32, (
/// Parse a floating-point number according to
/// <https://html.spec.whatwg.org/multipage/#rules-for-parsing-floating-point-number-values>
-pub fn parse_double(string: &DOMString) -> Result<f64, ()> {
+pub fn parse_double(string: &str) -> Result<f64, ()> {
let trimmed = string.trim_matches(HTML_SPACE_CHARACTERS);
let mut input = trimmed.chars().peekable();
@@ -113,7 +113,7 @@ pub fn parse_double(string: &DOMString) -> Result<f64, ()> {
}
impl AttrValue {
- pub fn from_serialized_tokenlist(tokens: DOMString) -> AttrValue {
+ pub fn from_serialized_tokenlist(tokens: String) -> AttrValue {
let atoms =
split_html_space_chars(&tokens)
.map(Atom::from)
@@ -127,13 +127,13 @@ impl AttrValue {
#[cfg(not(feature = "gecko"))] // Gecko can't borrow atoms as UTF-8.
pub fn from_atomic_tokens(atoms: Vec<Atom>) -> AttrValue {
use util::str::str_join;
- // TODO(ajeffrey): effecient conversion of Vec<Atom> to DOMString
- let tokens = DOMString::from(str_join(&atoms, "\x20"));
+ // TODO(ajeffrey): effecient conversion of Vec<Atom> to String
+ let tokens = String::from(str_join(&atoms, "\x20"));
AttrValue::TokenList(tokens, atoms)
}
// https://html.spec.whatwg.org/multipage/#reflecting-content-attributes-in-idl-attributes:idl-unsigned-long
- pub fn from_u32(string: DOMString, default: u32) -> AttrValue {
+ pub fn from_u32(string: String, default: u32) -> AttrValue {
let result = parse_unsigned_integer(string.chars()).unwrap_or(default);
let result = if result > UNSIGNED_LONG_MAX {
default
@@ -143,13 +143,13 @@ impl AttrValue {
AttrValue::UInt(string, result)
}
- pub fn from_i32(string: DOMString, default: i32) -> AttrValue {
+ pub fn from_i32(string: String, default: i32) -> AttrValue {
let result = parse_integer(string.chars()).unwrap_or(default);
AttrValue::Int(string, result)
}
// https://html.spec.whatwg.org/multipage/#reflecting-content-attributes-in-idl-attributes:idl-double
- pub fn from_double(string: DOMString, default: f64) -> AttrValue {
+ pub fn from_double(string: String, default: f64) -> AttrValue {
let result = parse_double(&string).unwrap_or(default);
let result = if result.is_infinite() {
default
@@ -160,7 +160,7 @@ impl AttrValue {
}
// https://html.spec.whatwg.org/multipage/#limited-to-only-non-negative-numbers
- pub fn from_limited_i32(string: DOMString, default: i32) -> AttrValue {
+ pub fn from_limited_i32(string: String, default: i32) -> AttrValue {
let result = parse_integer(string.chars()).unwrap_or(default);
if result < 0 {
@@ -171,7 +171,7 @@ impl AttrValue {
}
// https://html.spec.whatwg.org/multipage/#limited-to-only-non-negative-numbers-greater-than-zero
- pub fn from_limited_u32(string: DOMString, default: u32) -> AttrValue {
+ pub fn from_limited_u32(string: String, default: u32) -> AttrValue {
let result = parse_unsigned_integer(string.chars()).unwrap_or(default);
let result = if result == 0 || result > UNSIGNED_LONG_MAX {
default
@@ -181,27 +181,27 @@ impl AttrValue {
AttrValue::UInt(string, result)
}
- pub fn from_atomic(string: DOMString) -> AttrValue {
+ pub fn from_atomic(string: String) -> AttrValue {
let value = Atom::from(string);
AttrValue::Atom(value)
}
- pub fn from_url(base: &Url, url: DOMString) -> AttrValue {
+ pub fn from_url(base: &Url, url: String) -> AttrValue {
let joined = base.join(&url).ok();
AttrValue::Url(url, joined)
}
- pub fn from_legacy_color(string: DOMString) -> AttrValue {
+ pub fn from_legacy_color(string: String) -> AttrValue {
let parsed = parse_legacy_color(&string).ok();
AttrValue::Color(string, parsed)
}
- pub fn from_dimension(string: DOMString) -> AttrValue {
+ pub fn from_dimension(string: String) -> AttrValue {
let parsed = parse_length(&string);
AttrValue::Dimension(string, parsed)
}
- pub fn from_nonzero_dimension(string: DOMString) -> AttrValue {
+ pub fn from_nonzero_dimension(string: String) -> AttrValue {
let parsed = parse_nonzero_length(&string);
AttrValue::Dimension(string, parsed)
}
diff --git a/components/util/Cargo.toml b/components/util/Cargo.toml
index cec40150beb..a946a2739a1 100644
--- a/components/util/Cargo.toml
+++ b/components/util/Cargo.toml
@@ -8,15 +8,6 @@ publish = false
name = "util"
path = "lib.rs"
-[features]
-
-# This feature allows us to avoid depending on various things we don't need for
-# GeckoLib builds. Conceptually, it would make more sense to have a "geckolib"
-# feature, but Cargo is generally set up for features to add dependencies, not
-# remove them. So we do it this way, and request that all non-GeckoLib builds
-# set this feature.
-non-geckolib = ["js"]
-
[dependencies]
app_units = {version = "0.2.3", features = ["plugins"]}
backtrace = "0.2.1"
@@ -27,7 +18,6 @@ getopts = "0.2.11"
heapsize = "0.3.0"
heapsize_plugin = "0.1.2"
ipc-channel = {git = "https://github.com/servo/ipc-channel"}
-js = {git = "https://github.com/servo/rust-mozjs", optional = true}
lazy_static = "0.2"
libc = "0.2"
log = "0.3.5"
@@ -39,7 +29,6 @@ rustc-serialize = "0.3"
serde = "0.7"
serde_macros = "0.7"
smallvec = "0.1"
-string_cache = {version = "0.2.17", features = ["heap_size"]}
url = {version = "1.0.0", features = ["heap_size", "serde"]}
[target.'cfg(windows)'.dependencies]
diff --git a/components/util/lib.rs b/components/util/lib.rs
index 53391a50f84..9039e99c7b7 100644
--- a/components/util/lib.rs
+++ b/components/util/lib.rs
@@ -6,7 +6,6 @@
#![feature(core_intrinsics)]
#![feature(custom_derive)]
#![feature(fnbox)]
-#![feature(optin_builtin_traits)]
#![feature(plugin)]
#![feature(panic_handler)]
#![feature(reflect_marker)]
@@ -26,8 +25,6 @@ extern crate euclid;
extern crate getopts;
extern crate heapsize;
extern crate ipc_channel;
-#[cfg(feature = "non-geckolib")]
-extern crate js;
#[allow(unused_extern_crates)]
#[macro_use]
extern crate lazy_static;
@@ -40,7 +37,6 @@ extern crate rand;
extern crate rustc_serialize;
extern crate serde;
extern crate smallvec;
-extern crate string_cache;
extern crate url;
use std::sync::Arc;
@@ -52,9 +48,6 @@ pub mod geometry;
#[allow(unsafe_code)]
pub mod ipc;
pub mod linked_list;
-#[cfg(feature = "non-geckolib")]
-#[allow(unsafe_code)]
-pub mod non_geckolib;
#[allow(unsafe_code)]
pub mod opts;
pub mod panicking;
diff --git a/components/util/non_geckolib.rs b/components/util/non_geckolib.rs
deleted file mode 100644
index ff09ca5c983..00000000000
--- a/components/util/non_geckolib.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/. */
-
-///! Miscellaneous Code which depends on large libraries that we don't
-/// depend on in GeckoLib builds.
-use js::conversions::{FromJSValConvertible, ToJSValConvertible, latin1_to_string};
-use js::jsapi::{JSContext, JSString, HandleValue, MutableHandleValue};
-use js::jsapi::{JS_GetTwoByteStringCharsAndLength, JS_StringHasLatin1Chars};
-use js::rust::ToString;
-use opts;
-use std::char;
-use std::ptr;
-use std::slice;
-use str::DOMString;
-
-/// Behavior for stringification of `JSVal`s.
-#[derive(PartialEq, Clone)]
-pub enum StringificationBehavior {
- /// Convert `null` to the string `"null"`.
- Default,
- /// Convert `null` to the empty string.
- Empty,
-}
-
-// https://heycam.github.io/webidl/#es-DOMString
-impl ToJSValConvertible for DOMString {
- unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) {
- (**self).to_jsval(cx, rval);
- }
-}
-
-// https://heycam.github.io/webidl/#es-DOMString
-impl FromJSValConvertible for DOMString {
- type Config = StringificationBehavior;
- unsafe fn from_jsval(cx: *mut JSContext,
- value: HandleValue,
- null_behavior: StringificationBehavior)
- -> Result<DOMString, ()> {
- if null_behavior == StringificationBehavior::Empty &&
- value.get().is_null() {
- Ok(DOMString::new())
- } else {
- let jsstr = ToString(cx, value);
- if jsstr.is_null() {
- debug!("ToString failed");
- Err(())
- } else {
- Ok(jsstring_to_str(cx, jsstr))
- }
- }
- }
-}
-
-/// Convert the given `JSString` to a `DOMString`. Fails if the string does not
-/// contain valid UTF-16.
-pub unsafe fn jsstring_to_str(cx: *mut JSContext, s: *mut JSString) -> DOMString {
- let latin1 = JS_StringHasLatin1Chars(s);
- DOMString::from_string(if latin1 {
- latin1_to_string(cx, s)
- } else {
- let mut length = 0;
- let chars = JS_GetTwoByteStringCharsAndLength(cx, ptr::null(), s, &mut length);
- assert!(!chars.is_null());
- let potentially_ill_formed_utf16 = slice::from_raw_parts(chars, length as usize);
- let mut s = String::with_capacity(length as usize);
- for item in char::decode_utf16(potentially_ill_formed_utf16.iter().cloned()) {
- match item {
- Ok(c) => s.push(c),
- Err(_) => {
- // FIXME: Add more info like document URL in the message?
- macro_rules! message {
- () => {
- "Found an unpaired surrogate in a DOM string. \
- If you see this in real web content, \
- please comment on https://github.com/servo/servo/issues/6564"
- }
- }
- if opts::get().replace_surrogates {
- error!(message!());
- s.push('\u{FFFD}');
- } else {
- panic!(concat!(message!(), " Use `-Z replace-surrogates` \
- on the command line to make this non-fatal."));
- }
- }
- }
- }
- s
- })
-}
diff --git a/components/util/str.rs b/components/util/str.rs
index 1dcce6ee14a..fe23c1b5ff6 100644
--- a/components/util/str.rs
+++ b/components/util/str.rs
@@ -8,119 +8,9 @@ use num_traits::ToPrimitive;
use std::borrow::ToOwned;
use std::convert::AsRef;
use std::ffi::CStr;
-use std::fmt;
use std::iter::{Filter, Peekable};
-use std::ops::{Deref, DerefMut};
-use std::str::{Bytes, Split, from_utf8};
-use string_cache::Atom;
-
-#[derive(Clone, Debug, Deserialize, Eq, Hash, HeapSizeOf, Ord, PartialEq, PartialOrd, Serialize)]
-pub struct DOMString(String);
-
-impl !Send for DOMString {}
-
-impl DOMString {
- pub fn new() -> DOMString {
- DOMString(String::new())
- }
- pub fn from_string(s: String) -> DOMString {
- DOMString(s)
- }
- // FIXME(ajeffrey): implement more of the String methods on DOMString?
- pub fn push_str(&mut self, string: &str) {
- self.0.push_str(string)
- }
- pub fn clear(&mut self) {
- self.0.clear()
- }
-
- pub fn bytes(&self) -> Bytes {
- self.0.bytes()
- }
-}
-
-impl Default for DOMString {
- fn default() -> Self {
- DOMString(String::new())
- }
-}
-
-impl Deref for DOMString {
- type Target = str;
-
- #[inline]
- fn deref(&self) -> &str {
- &self.0
- }
-}
-
-impl DerefMut for DOMString {
- #[inline]
- fn deref_mut(&mut self) -> &mut str {
- &mut self.0
- }
-}
-
-impl AsRef<str> for DOMString {
- fn as_ref(&self) -> &str {
- &self.0
- }
-}
-
-impl fmt::Display for DOMString {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Display::fmt(&**self, f)
- }
-}
-
-impl PartialEq<str> for DOMString {
- fn eq(&self, other: &str) -> bool {
- &**self == other
- }
-}
-
-impl<'a> PartialEq<&'a str> for DOMString {
- fn eq(&self, other: &&'a str) -> bool {
- &**self == *other
- }
-}
-
-impl From<String> for DOMString {
- fn from(contents: String) -> DOMString {
- DOMString(contents)
- }
-}
-
-impl<'a> From<&'a str> for DOMString {
- fn from(contents: &str) -> DOMString {
- DOMString::from(String::from(contents))
- }
-}
-
-impl From<DOMString> for Atom {
- fn from(contents: DOMString) -> Atom {
- Atom::from(contents.0)
- }
-}
-
-impl From<DOMString> for String {
- fn from(contents: DOMString) -> String {
- contents.0
- }
-}
-
-impl Into<Vec<u8>> for DOMString {
- fn into(self) -> Vec<u8> {
- self.0.into()
- }
-}
-
-impl Extend<char> for DOMString {
- fn extend<I>(&mut self, iterable: I) where I: IntoIterator<Item=char> {
- self.0.extend(iterable)
- }
-}
+use std::ops::Deref;
+use std::str::{Split, from_utf8};
pub type StaticCharVec = &'static [char];
pub type StaticStringVec = &'static [&'static str];
diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock
index c4715c98d9a..a21f7c2de47 100644
--- a/ports/cef/Cargo.lock
+++ b/ports/cef/Cargo.lock
@@ -2236,7 +2236,6 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "js 0.1.3 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2249,7 +2248,6 @@ dependencies = [
"serde 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/ports/cef/Cargo.toml b/ports/cef/Cargo.toml
index 091236abb36..79cd8c8d698 100644
--- a/ports/cef/Cargo.toml
+++ b/ports/cef/Cargo.toml
@@ -27,7 +27,7 @@ log = {version = "0.3.5", features = ["release_max_level_info"]}
script_traits = {path = "../../components/script_traits"}
net_traits = {path = "../../components/net_traits"}
msg = {path = "../../components/msg"}
-util = {path = "../../components/util", features = ["non-geckolib"]}
+util = {path = "../../components/util"}
style_traits = {path = "../../components/style_traits"}
devtools = {path = "../../components/devtools"}
layers = {git = "https://github.com/servo/rust-layers"}
diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock
index 3e88bea0062..08bab05fb1e 100644
--- a/ports/geckolib/Cargo.lock
+++ b/ports/geckolib/Cargo.lock
@@ -583,7 +583,6 @@ dependencies = [
"serde 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock
index fdeb610e632..008d8c9cb24 100644
--- a/ports/gonk/Cargo.lock
+++ b/ports/gonk/Cargo.lock
@@ -2222,7 +2222,6 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "js 0.1.3 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/gonk/Cargo.toml b/ports/gonk/Cargo.toml
index 5933d68e457..ca4401c53f1 100644
--- a/ports/gonk/Cargo.toml
+++ b/ports/gonk/Cargo.toml
@@ -18,7 +18,7 @@ layout = {path = "../../components/layout"}
devtools = {path = "../../components/devtools"}
servo = {path = "../../components/servo", default-features = false}
profile = {path = "../../components/profile"}
-util = {path = "../../components/util", features = ["non-geckolib"]}
+util = {path = "../../components/util"}
env_logger = "0.3"
url = {version = "1.0.0", features = ["heap_size"]}
time = "0.1.17"
diff --git a/tests/unit/script/textinput.rs b/tests/unit/script/textinput.rs
index 52c5808c30a..4ee2c897bef 100644
--- a/tests/unit/script/textinput.rs
+++ b/tests/unit/script/textinput.rs
@@ -13,8 +13,8 @@ use msg::constellation_msg::CONTROL;
use msg::constellation_msg::SUPER;
use msg::constellation_msg::{Key, KeyModifiers};
use script::clipboard_provider::DummyClipboardContext;
+use script::dom::bindings::str::DOMString;
use script::textinput::{TextInput, TextPoint, Selection, Lines, Direction, SelectionDirection};
-use util::str::DOMString;
fn text_input(lines: Lines, s: &str) -> TextInput<DummyClipboardContext> {
TextInput::new(lines, DOMString::from(s), DummyClipboardContext::new(""), None, SelectionDirection::None)
diff --git a/tests/unit/style/attr.rs b/tests/unit/style/attr.rs
index 564d5cbdde7..19c3ba93312 100644
--- a/tests/unit/style/attr.rs
+++ b/tests/unit/style/attr.rs
@@ -4,11 +4,11 @@
use app_units::Au;
use style::attr::{AttrValue, parse_length};
-use util::str::{DOMString, LengthOrPercentageOrAuto};
+use util::str::{LengthOrPercentageOrAuto};
#[test]
fn test_parse_double() {
- let value = DOMString::from("432.5e2");
+ let value = String::from("432.5e2");
match AttrValue::from_double(value, 0.0) {
AttrValue::Double(_, num) => assert_eq!(num, 43250f64),
_ => panic!("expected a double value")
@@ -17,7 +17,7 @@ fn test_parse_double() {
#[test]
fn test_from_limited_i32_should_be_default_when_less_than_0() {
- let value = DOMString::from("-1");
+ let value = String::from("-1");
match AttrValue::from_limited_i32(value, 0) {
AttrValue::Int(_, 0) => (),
_ => panic!("expected an IndexSize error")
@@ -26,7 +26,7 @@ fn test_from_limited_i32_should_be_default_when_less_than_0() {
#[test]
fn test_from_limited_i32_should_parse_a_uint_when_value_is_0_or_greater() {
- match AttrValue::from_limited_i32(DOMString::from("1"), 0) {
+ match AttrValue::from_limited_i32(String::from("1"), 0) {
AttrValue::Int(_, 1) => (),
_ => panic!("expected an successful parsing")
}
@@ -34,9 +34,9 @@ fn test_from_limited_i32_should_parse_a_uint_when_value_is_0_or_greater() {
#[test]
fn test_from_limited_i32_should_keep_parsed_value_when_not_an_int() {
- match AttrValue::from_limited_i32(DOMString::from("parsed-value"), 0) {
+ match AttrValue::from_limited_i32(String::from("parsed-value"), 0) {
AttrValue::Int(p, 0) => {
- assert_eq!(p, DOMString::from("parsed-value"))
+ assert_eq!(p, String::from("parsed-value"))
},
_ => panic!("expected an successful parsing")
}