diff options
64 files changed, 256 insertions, 254 deletions
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 57b0008c842..b5f507f0108 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -981,7 +981,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { } if let Some(input) = this.downcast::<HTMLInputElement>() { let data = unsafe { input.get_value_for_layout() }; - return TextContent::Text(data.0); + return TextContent::Text(data); } if let Some(area) = this.downcast::<HTMLTextAreaElement>() { let data = unsafe { area.get_value_for_layout() }; diff --git a/components/script/devtools.rs b/components/script/devtools.rs index 3d1bc95c2de..94a84011caf 100644 --- a/components/script/devtools.rs +++ b/components/script/devtools.rs @@ -42,7 +42,7 @@ pub fn handle_evaluate_js(global: &GlobalRef, eval: String, reply: IpcSender<Eva EvaluateJSReply::NumberValue( FromJSValConvertible::from_jsval(cx, rval.handle(), ()).unwrap()) } else if rval.ptr.is_string() { - EvaluateJSReply::StringValue(jsstring_to_str(cx, rval.ptr.to_string()).0) + EvaluateJSReply::StringValue(String::from(jsstring_to_str(cx, rval.ptr.to_string()))) } else if rval.ptr.is_null() { EvaluateJSReply::NullValue } else { @@ -164,9 +164,9 @@ pub fn handle_modify_attribute(page: &Rc<Page>, for modification in modifications { match modification.newValue { Some(string) => { - let _ = elem.SetAttribute(DOMString(modification.attributeName), DOMString(string)); + let _ = elem.SetAttribute(DOMString::from(modification.attributeName), DOMString::from(string)); }, - None => elem.RemoveAttribute(DOMString(modification.attributeName)), + None => elem.RemoveAttribute(DOMString::from(modification.attributeName)), } } } diff --git a/components/script/dom/activation.rs b/components/script/dom/activation.rs index 59af792007a..ffc4deb33df 100644 --- a/components/script/dom/activation.rs +++ b/components/script/dom/activation.rs @@ -9,7 +9,6 @@ use dom::event::{Event, EventBubbles, EventCancelable}; use dom::eventtarget::EventTarget; use dom::mouseevent::MouseEvent; use dom::node::window_from_node; -use std::borrow::ToOwned; use util::str::DOMString; /// Trait for elements with defined activation behavior @@ -47,7 +46,7 @@ pub trait Activatable { // https://html.spec.whatwg.org/multipage/#fire-a-synthetic-mouse-event let win = window_from_node(element); let target = element.upcast(); - let mouse = MouseEvent::new(win.r(), DOMString("click".to_owned()), + let mouse = MouseEvent::new(win.r(), DOMString::from("click"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, Some(win.r()), 1, 0, 0, 0, 0, ctrlKey, shiftKey, altKey, metaKey, 0, None); diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 02ef5e4451e..350d5de8543 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -75,12 +75,14 @@ impl Attr { impl AttrMethods for Attr { // https://dom.spec.whatwg.org/#dom-attr-localname fn LocalName(&self) -> DOMString { - DOMString((**self.local_name()).to_owned()) + // FIXME(ajeffrey): convert directly from Atom to DOMString + DOMString::from(&**self.local_name()) } // https://dom.spec.whatwg.org/#dom-attr-value fn Value(&self) -> DOMString { - DOMString((**self.value()).to_owned()) + // FIXME(ajeffrey): convert directly from AttrValue to DOMString + DOMString::from(&**self.value()) } // https://dom.spec.whatwg.org/#dom-attr-value @@ -116,7 +118,8 @@ impl AttrMethods for Attr { // https://dom.spec.whatwg.org/#dom-attr-name fn Name(&self) -> DOMString { - DOMString((*self.identifier.name).to_owned()) + // FIXME(ajeffrey): convert directly from Atom to DOMString + DOMString::from(&*self.identifier.name) } // https://dom.spec.whatwg.org/#dom-attr-namespaceuri @@ -124,13 +127,14 @@ impl AttrMethods for Attr { let Namespace(ref atom) = self.identifier.namespace; match &**atom { "" => None, - url => Some(DOMString(url.to_owned())), + url => Some(DOMString::from(url)) } } // https://dom.spec.whatwg.org/#dom-attr-prefix fn GetPrefix(&self) -> Option<DOMString> { - self.prefix().as_ref().map(|p| DOMString((**p).to_owned())) + // FIXME(ajeffrey): convert directly from Atom to DOMString + self.prefix().as_ref().map(|p| DOMString::from(&**p)) } // https://dom.spec.whatwg.org/#dom-attr-ownerelement @@ -194,8 +198,8 @@ impl Attr { let Namespace(ref ns) = self.identifier.namespace; AttrInfo { namespace: (**ns).to_owned(), - name: self.Name().0, - value: self.Value().0, + name: String::from(self.Name()), + value: String::from(self.Value()), } } } diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index dcc1f164d25..29997ebb55b 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -159,7 +159,8 @@ impl FromJSValConvertible for USVString { } let latin1 = JS_StringHasLatin1Chars(jsstr); if latin1 { - return Ok(USVString(jsstring_to_str(cx, jsstr).0)); + // FIXME(ajeffrey): Convert directly from DOMString to USVString + return Ok(USVString(String::from(jsstring_to_str(cx, jsstr)))); } let mut length = 0; let chars = JS_GetTwoByteStringCharsAndLength(cx, ptr::null(), jsstr, &mut length); diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index 4ada4533ffc..c807fa58914 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -60,7 +60,8 @@ impl Blob { pub fn Constructor_(global: GlobalRef, blobParts: DOMString, blobPropertyBag: &BlobBinding::BlobPropertyBag) -> Fallible<Root<Blob>> { //TODO: accept other blobParts types - ArrayBuffer or ArrayBufferView or Blob - let bytes: Option<Vec<u8>> = Some(blobParts.0.into_bytes()); + // FIXME(ajeffrey): convert directly from a DOMString to a Vec<u8> + let bytes: Option<Vec<u8>> = Some(String::from(blobParts).into_bytes()); let typeString = if is_ascii_printable(&blobPropertyBag.type_) { &*blobPropertyBag.type_ } else { @@ -90,7 +91,7 @@ impl BlobMethods for Blob { // https://dev.w3.org/2006/webapi/FileAPI/#dfn-type fn Type(&self) -> DOMString { - DOMString(self.typeString.clone()) + DOMString::from(self.typeString.clone()) } // https://dev.w3.org/2006/webapi/FileAPI/#slice-method-algo diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 47ede77d7de..757f7e19cad 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -37,7 +37,6 @@ use msg::constellation_msg::Msg as ConstellationMsg; use net_traits::image::base::PixelFormat; use net_traits::image_cache_task::ImageResponse; use num::{Float, ToPrimitive}; -use std::borrow::ToOwned; use std::str::FromStr; use std::sync::mpsc::channel; use std::{cmp, fmt}; @@ -536,10 +535,10 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-globalcompositeoperation fn GlobalCompositeOperation(&self) -> DOMString { let state = self.state.borrow(); - DOMString(match state.global_composition { - CompositionOrBlending::Composition(op) => op.to_str().to_owned(), - CompositionOrBlending::Blending(op) => op.to_str().to_owned(), - }) + match state.global_composition { + CompositionOrBlending::Composition(op) => DOMString::from(op.to_str()), + CompositionOrBlending::Blending(op) => DOMString::from(op.to_str()), + } } // https://html.spec.whatwg.org/multipage/#dom-context-2d-globalcompositeoperation @@ -760,7 +759,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { CanvasFillOrStrokeStyle::Color(ref rgba) => { let mut result = String::new(); serialize(rgba, &mut result).unwrap(); - StringOrCanvasGradientOrCanvasPattern::eString(DOMString(result)) + StringOrCanvasGradientOrCanvasPattern::eString(DOMString::from(result)) }, CanvasFillOrStrokeStyle::Gradient(ref gradient) => { StringOrCanvasGradientOrCanvasPattern::eCanvasGradient(Root::from_ref(&*gradient)) @@ -800,7 +799,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { CanvasFillOrStrokeStyle::Color(ref rgba) => { let mut result = String::new(); serialize(rgba, &mut result).unwrap(); - StringOrCanvasGradientOrCanvasPattern::eString(DOMString(result)) + StringOrCanvasGradientOrCanvasPattern::eString(DOMString::from(result)) }, CanvasFillOrStrokeStyle::Gradient(ref gradient) => { StringOrCanvasGradientOrCanvasPattern::eCanvasGradient(Root::from_ref(&*gradient)) @@ -1001,11 +1000,11 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-linecap fn LineCap(&self) -> DOMString { let state = self.state.borrow(); - DOMString(match state.line_cap { - LineCapStyle::Butt => "butt".to_owned(), - LineCapStyle::Round => "round".to_owned(), - LineCapStyle::Square => "square".to_owned(), - }) + match state.line_cap { + LineCapStyle::Butt => DOMString::from("butt"), + LineCapStyle::Round => DOMString::from("round"), + LineCapStyle::Square => DOMString::from("square"), + } } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linecap @@ -1019,11 +1018,11 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-linejoin fn LineJoin(&self) -> DOMString { let state = self.state.borrow(); - DOMString(match state.line_join { - LineJoinStyle::Round => "round".to_owned(), - LineJoinStyle::Bevel => "bevel".to_owned(), - LineJoinStyle::Miter => "miter".to_owned(), - }) + match state.line_join { + LineJoinStyle::Round => DOMString::from("round"), + LineJoinStyle::Bevel => DOMString::from("bevel"), + LineJoinStyle::Miter => DOMString::from("miter"), + } } // https://html.spec.whatwg.org/multipage/#dom-context-2d-linejoin @@ -1098,7 +1097,7 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D { fn ShadowColor(&self) -> DOMString { let mut result = String::new(); serialize(&self.state.borrow().shadow_color, &mut result).unwrap(); - DOMString(result) + DOMString::from(result) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-shadowcolor diff --git a/components/script/dom/characterdata.rs b/components/script/dom/characterdata.rs index d001db1cc6b..1e5b0048bdd 100644 --- a/components/script/dom/characterdata.rs +++ b/components/script/dom/characterdata.rs @@ -13,7 +13,6 @@ use dom::bindings::js::{LayoutJS, Root}; use dom::document::Document; use dom::element::Element; use dom::node::{Node, NodeDamage}; -use std::borrow::ToOwned; use std::cell::Ref; use util::str::DOMString; @@ -65,7 +64,7 @@ impl CharacterDataMethods for CharacterData { // Steps 4. Some(count_bytes) => &data_from_offset[..count_bytes], }; - Ok(DOMString(substring.to_owned())) + Ok(DOMString::from(substring)) } // https://dom.spec.whatwg.org/#dom-characterdata-appenddatadata @@ -103,9 +102,9 @@ impl CharacterDataMethods for CharacterData { new_data.push_str(prefix); new_data.push_str(&arg); new_data.push_str(suffix); - DOMString(new_data) + new_data }; - *self.data.borrow_mut() = new_data; + *self.data.borrow_mut() = DOMString::from(new_data); self.content_changed(); // FIXME: Once we have `Range`, we should implement step 8 to step 11 Ok(()) diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 86b6d27193a..4a3f4b21cc4 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -74,7 +74,7 @@ impl ConsoleMethods for Console { // https://developer.mozilla.org/en-US/docs/Web/API/Console/assert fn Assert(&self, condition: bool, message: Option<DOMString>) { if !condition { - let message = message.unwrap_or_else(|| DOMString("no message".to_owned())); + let message = message.unwrap_or_else(|| DOMString::from("no message")); println!("Assertion failed: {}", message); propagate_console_msg(&self, prepare_message(LogLevel::Error, message)); } @@ -84,7 +84,7 @@ impl ConsoleMethods for Console { fn prepare_message(logLevel: LogLevel, message: DOMString) -> ConsoleMessage { //TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later ConsoleMessage { - message: message.0, + message: String::from(message), logLevel: logLevel, filename: "test".to_owned(), lineNumber: 1, diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 2f1d35d3b59..9a50e1ed9d8 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -74,26 +74,27 @@ use dom::htmltrackelement::HTMLTrackElement; use dom::htmlulistelement::HTMLUListElement; use dom::htmlunknownelement::HTMLUnknownElement; use dom::htmlvideoelement::HTMLVideoElement; -use std::borrow::ToOwned; use string_cache::{Atom, QualName}; use util::str::DOMString; pub fn create_element(name: QualName, prefix: Option<Atom>, document: &Document, creator: ElementCreator) -> Root<Element> { - let prefix = prefix.map(|p| DOMString((*p).to_owned())); + // FIXME(ajeffrey): Convert directly from Atom to DOMString. + + let prefix = prefix.map(|p| DOMString::from(&*p)); if name.ns != ns!(HTML) { - return Element::new(DOMString((*name.local).to_owned()), name.ns, prefix, document); + return Element::new(DOMString::from(&*name.local), name.ns, prefix, document); } macro_rules! make( ($ctor:ident) => ({ - let obj = $ctor::new(DOMString((*name.local).to_owned()), prefix, document); + let obj = $ctor::new(DOMString::from(&*name.local), prefix, document); Root::upcast(obj) }); ($ctor:ident, $($arg:expr),+) => ({ - let obj = $ctor::new(DOMString((*name.local).to_owned()), prefix, document, $($arg),+); + let obj = $ctor::new(DOMString::from(&*name.local), prefix, document, $($arg),+); Root::upcast(obj) }) ); diff --git a/components/script/dom/css.rs b/components/script/dom/css.rs index e1963410869..e1d2917084e 100644 --- a/components/script/dom/css.rs +++ b/components/script/dom/css.rs @@ -19,8 +19,8 @@ impl CSS { if ident.bytes().any(|b| b == b'\0') { return Err(Error::InvalidCharacter); } - let mut escaped = DOMString::new(); - serialize_identifier(&ident, &mut escaped.0).unwrap(); - Ok(escaped) + let mut escaped = String::new(); + serialize_identifier(&ident, &mut escaped).unwrap(); + Ok(DOMString::from(escaped)) } } diff --git a/components/script/dom/cssstyledeclaration.rs b/components/script/dom/cssstyledeclaration.rs index aa2ce366819..9cdb6a9adb6 100644 --- a/components/script/dom/cssstyledeclaration.rs +++ b/components/script/dom/cssstyledeclaration.rs @@ -39,10 +39,10 @@ macro_rules! css_properties( ( $([$getter:ident, $setter:ident, $cssprop:expr]),* ) => ( $( fn $getter(&self) -> DOMString { - self.GetPropertyValue(DOMString($cssprop.to_owned())) + self.GetPropertyValue(DOMString::from($cssprop)) } fn $setter(&self, value: DOMString) -> ErrorResult { - self.SetPropertyValue(DOMString($cssprop.to_owned()), value) + self.SetPropertyValue(DOMString::from($cssprop), value) } )* ); @@ -131,7 +131,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { } }); - DOMString(result.unwrap_or(String::new())) + result.map(DOMString::from).unwrap_or(DOMString::new()) } // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-getpropertyvalue @@ -165,12 +165,12 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { } // Step 2.3 - return DOMString(serialize_shorthand(shorthand, &list)); + return DOMString::from(serialize_shorthand(shorthand, &list)); } // Step 3 & 4 let result = match owner.get_inline_style_declaration(&property) { - Some(declaration) => DOMString(declaration.value()), + Some(declaration) => DOMString::from(declaration.value()), None => DOMString::new(), }; result @@ -186,15 +186,15 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { if let Some(shorthand) = Shorthand::from_name(&property) { // Step 2.1 & 2.2 & 2.3 if shorthand.longhands().iter() - .map(|&longhand| self.GetPropertyPriority(DOMString(longhand.to_owned()))) + .map(|&longhand| self.GetPropertyPriority(DOMString::from(longhand))) .all(|priority| priority == "important") { - return DOMString("important".to_owned()); + return DOMString::from("important"); } // Step 3 } else { if self.owner.get_important_inline_style_declaration(&property).is_some() { - return DOMString("important".to_owned()); + return DOMString::from("important"); } } @@ -327,12 +327,12 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-cssfloat fn CssFloat(&self) -> DOMString { - self.GetPropertyValue(DOMString("float".to_owned())) + self.GetPropertyValue(DOMString::from("float")) } // https://dev.w3.org/csswg/cssom/#dom-cssstyledeclaration-cssfloat fn SetCssFloat(&self, value: DOMString) -> ErrorResult { - self.SetPropertyValue(DOMString("float".to_owned()), value) + self.SetPropertyValue(DOMString::from("float"), value) } // https://dev.w3.org/csswg/cssom/#the-cssstyledeclaration-interface diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index a8a42ddf1ae..8bfd3e8695a 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -264,7 +264,7 @@ impl DedicatedWorkerGlobalScope { { let _ar = AutoWorkerReset::new(global.r(), worker); - scope.execute_script(DOMString(source)); + scope.execute_script(DOMString::from(source)); } let reporter_name = format!("worker-reporter-{}", random::<u64>()); diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 05bc4bffc21..6928d6f4977 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -510,7 +510,7 @@ impl Document { self.ready_state.set(state); let event = Event::new(GlobalRef::Window(&self.window), - DOMString("readystatechange".to_owned()), + DOMString::from("readystatechange"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); let target = self.upcast::<EventTarget>(); @@ -568,7 +568,7 @@ impl Document { /// Handles any updates when the document's title has changed. pub fn title_changed(&self) { // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsertitlechange - self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(self.Title().0)); + self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(String::from(self.Title()))); self.send_title_to_compositor(); } @@ -577,7 +577,7 @@ impl Document { pub fn send_title_to_compositor(&self) { let window = self.window(); let compositor = window.compositor(); - compositor.send(ScriptToCompositorMsg::SetTitle(window.pipeline(), Some(self.Title().0))).unwrap(); + compositor.send(ScriptToCompositorMsg::SetTitle(window.pipeline(), Some(String::from(self.Title())))).unwrap(); } pub fn dirty_all_nodes(&self) { @@ -598,7 +598,7 @@ impl Document { debug!("{}: at {:?}", mouse_event_type_string, point); let node = match self.hit_test(&point) { Some(node_address) => { - debug!("node address is {:?}", node_address.0); + debug!("node address is {:?}", node_address); node::from_untrusted_node_address(js_runtime, node_address) }, None => return, @@ -631,7 +631,7 @@ impl Document { let y = point.y as i32; let clickCount = 1; let event = MouseEvent::new(&self.window, - DOMString(mouse_event_type_string), + DOMString::from(mouse_event_type_string), EventBubbles::Bubbles, EventCancelable::Cancelable, Some(&self.window), @@ -669,7 +669,7 @@ impl Document { let y = point.y.to_i32().unwrap_or(0); let mouse_event = MouseEvent::new(&self.window, - DOMString(event_name), + DOMString::from(event_name), EventBubbles::Bubbles, EventCancelable::Cancelable, Some(&self.window), @@ -827,7 +827,7 @@ impl Document { |t| t.Target() == target).cloned()); let event = TouchEvent::new(window, - DOMString(event_name.to_owned()), + DOMString::from(event_name), EventBubbles::Bubbles, EventCancelable::Cancelable, Some(window), @@ -868,7 +868,7 @@ impl Document { let is_composing = false; let is_repeating = state == KeyState::Repeated; - let ev_type = DOMString(match state { + let ev_type = DOMString::from(match state { KeyState::Pressed | KeyState::Repeated => "keydown", KeyState::Released => "keyup", }.to_owned()); @@ -877,8 +877,8 @@ impl Document { let keyevent = KeyboardEvent::new(&self.window, ev_type, true, true, Some(&self.window), 0, Some(key), - DOMString(props.key_string.to_owned()), - DOMString(props.code.to_owned()), + DOMString::from(props.key_string), + DOMString::from(props.code), props.location, is_repeating, is_composing, ctrl, alt, shift, meta, None, props.key_code); @@ -889,10 +889,10 @@ impl Document { // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#keys-cancelable-keys if state != KeyState::Released && props.is_printable() && !prevented { // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#keypress-event-order - let event = KeyboardEvent::new(&self.window, DOMString("keypress".to_owned()), + let event = KeyboardEvent::new(&self.window, DOMString::from("keypress"), true, true, Some(&self.window), 0, Some(key), - DOMString(props.key_string.to_owned()), - DOMString(props.code.to_owned()), + DOMString::from(props.key_string), + DOMString::from(props.code), props.location, is_repeating, is_composing, ctrl, alt, shift, meta, props.char_code, 0); @@ -1227,7 +1227,7 @@ impl Document { } self.domcontentloaded_dispatched.set(true); let event = Event::new(GlobalRef::Window(self.window()), - DOMString("DOMContentLoaded".to_owned()), + DOMString::from("DOMContentLoaded"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); let doctarget = self.upcast::<EventTarget>(); @@ -1320,11 +1320,11 @@ impl Document { location: Default::default(), content_type: match content_type { Some(string) => string, - None => DOMString(match is_html_document { + None => DOMString::from(match is_html_document { // https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument - IsHTMLDocument::HTMLDocument => "text/html".to_owned(), + IsHTMLDocument::HTMLDocument => "text/html", // https://dom.spec.whatwg.org/#concept-document-content-type - IsHTMLDocument::NonHTMLDocument => "application/xml".to_owned() + IsHTMLDocument::NonHTMLDocument => "application/xml" }) }, last_modified: last_modified, @@ -1332,7 +1332,7 @@ impl Document { // https://dom.spec.whatwg.org/#concept-document-quirks quirks_mode: Cell::new(NoQuirks), // https://dom.spec.whatwg.org/#concept-document-encoding - encoding_name: DOMRefCell::new(DOMString("UTF-8".to_owned())), + encoding_name: DOMRefCell::new(DOMString::from("UTF-8")), is_html_document: is_html_document == IsHTMLDocument::HTMLDocument, id_map: DOMRefCell::new(HashMap::new()), tag_map: DOMRefCell::new(HashMap::new()), @@ -1502,7 +1502,7 @@ impl DocumentMethods for Document { // https://dom.spec.whatwg.org/#dom-document-url fn URL(&self) -> DOMString { - DOMString(self.url().serialize()) + DOMString::from(self.url().serialize()) } // https://html.spec.whatwg.org/multipage/#dom-document-activeelement @@ -1544,9 +1544,9 @@ impl DocumentMethods for Document { // https://dom.spec.whatwg.org/#dom-document-compatmode fn CompatMode(&self) -> DOMString { - DOMString(match self.quirks_mode.get() { - LimitedQuirks | NoQuirks => "CSS1Compat".to_owned(), - Quirks => "BackCompat".to_owned() + DOMString::from(match self.quirks_mode.get() { + LimitedQuirks | NoQuirks => "CSS1Compat", + Quirks => "BackCompat" }) } @@ -1767,10 +1767,10 @@ impl DocumentMethods for Document { // https://html.spec.whatwg.org/multipage/#dom-document-lastmodified fn LastModified(&self) -> DOMString { - DOMString(match self.last_modified { - Some(ref t) => t.clone(), - None => time::now().strftime("%m/%d/%Y %H:%M:%S").unwrap().to_string(), - }) + match self.last_modified { + Some(ref t) => DOMString::from(t.clone()), + None => DOMString::from(time::now().strftime("%m/%d/%Y %H:%M:%S").unwrap().to_string()), + } } // https://dom.spec.whatwg.org/#dom-document-createrange @@ -1827,7 +1827,7 @@ impl DocumentMethods for Document { Some(ref title) => { // Steps 3-4. let value = Node::collect_text_contents(title.children()); - DOMString(str_join(split_html_space_chars(&value), " ")) + DOMString::from(str_join(split_html_space_chars(&value), " ")) }, } } @@ -2096,7 +2096,7 @@ impl DocumentMethods for Document { let (tx, rx) = ipc::channel().unwrap(); let _ = self.window.resource_task().send(GetCookiesForUrl((*url).clone(), tx, NonHTTP)); let cookies = rx.recv().unwrap(); - Ok(DOMString(cookies.unwrap_or("".to_owned()))) + Ok(cookies.map(DOMString::from).unwrap_or(DOMString::from(""))) } // https://html.spec.whatwg.org/multipage/#dom-document-cookie @@ -2106,7 +2106,7 @@ impl DocumentMethods for Document { if !is_scheme_host_port_tuple(url) { return Err(Error::Security); } - let _ = self.window.resource_task().send(SetCookiesForUrl((*url).clone(), cookie.0, NonHTTP)); + let _ = self.window.resource_task().send(SetCookiesForUrl((*url).clone(), String::from(cookie), NonHTTP)); Ok(()) } @@ -2256,7 +2256,7 @@ impl DocumentProgressHandler { fn dispatch_load(&self) { let document = self.addr.root(); let window = document.window(); - let event = Event::new(GlobalRef::Window(window), DOMString("load".to_owned()), + let event = Event::new(GlobalRef::Window(window), DOMString::from("load"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); let wintarget = window.upcast::<EventTarget>(); @@ -2268,7 +2268,7 @@ impl DocumentProgressHandler { if let Some(frame_element) = browsing_context.frame_element() { let frame_window = window_from_node(frame_element); - let event = Event::new(GlobalRef::Window(frame_window.r()), DOMString("load".to_owned()), + let event = Event::new(GlobalRef::Window(frame_window.r()), DOMString::from("load"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); event.fire(frame_element.upcast()); diff --git a/components/script/dom/domexception.rs b/components/script/dom/domexception.rs index 70b96e89325..477be7a0a30 100644 --- a/components/script/dom/domexception.rs +++ b/components/script/dom/domexception.rs @@ -8,7 +8,6 @@ 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 std::borrow::ToOwned; use util::str::DOMString; #[repr(u16)] @@ -70,7 +69,7 @@ impl DOMExceptionMethods for DOMException { // https://heycam.github.io/webidl/#idl-DOMException-error-names fn Name(&self) -> DOMString { - DOMString(format!("{:?}", self.code)) + DOMString::from(format!("{:?}", self.code)) } // https://heycam.github.io/webidl/#error-names @@ -102,11 +101,11 @@ impl DOMExceptionMethods for DOMException { DOMErrorName::EncodingError => "The encoding operation (either encoded or decoding) failed." }; - DOMString(message.to_owned()) + DOMString::from(message) } // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-error.prototype.tostring fn Stringifier(&self) -> DOMString { - DOMString(format!("{}: {}", self.Name(), self.Message())) + DOMString::from(format!("{}: {}", self.Name(), self.Message())) } } diff --git a/components/script/dom/domimplementation.rs b/components/script/dom/domimplementation.rs index 8571584aea4..54143256e0b 100644 --- a/components/script/dom/domimplementation.rs +++ b/components/script/dom/domimplementation.rs @@ -22,7 +22,6 @@ use dom::htmlhtmlelement::HTMLHtmlElement; use dom::htmltitleelement::HTMLTitleElement; use dom::node::Node; use dom::text::Text; -use std::borrow::ToOwned; use util::str::DOMString; // https://dom.spec.whatwg.org/#domimplementation @@ -109,7 +108,7 @@ impl DOMImplementationMethods for DOMImplementation { { // Step 3. let doc_node = doc.upcast::<Node>(); - let doc_type = DocumentType::new(DOMString("html".to_owned()), None, None, doc.r()); + let doc_type = DocumentType::new(DOMString::from("html"), None, None, doc.r()); doc_node.AppendChild(doc_type.upcast()).unwrap(); } @@ -117,13 +116,13 @@ impl DOMImplementationMethods for DOMImplementation { // Step 4. let doc_node = doc.upcast::<Node>(); let doc_html = Root::upcast::<Node>( - HTMLHtmlElement::new(DOMString("html".to_owned()), None, doc.r())); + HTMLHtmlElement::new(DOMString::from("html"), None, doc.r())); doc_node.AppendChild(&doc_html).expect("Appending failed"); { // Step 5. let doc_head = Root::upcast::<Node>( - HTMLHeadElement::new(DOMString("head".to_owned()), None, doc.r())); + HTMLHeadElement::new(DOMString::from("head"), None, doc.r())); doc_html.AppendChild(&doc_head).unwrap(); // Step 6. @@ -132,7 +131,7 @@ impl DOMImplementationMethods for DOMImplementation { Some(title_str) => { // Step 6.1. let doc_title = Root::upcast::<Node>( - HTMLTitleElement::new(DOMString("title".to_owned()), None, doc.r())); + HTMLTitleElement::new(DOMString::from("title"), None, doc.r())); doc_head.AppendChild(&doc_title).unwrap(); // Step 6.2. @@ -143,7 +142,7 @@ impl DOMImplementationMethods for DOMImplementation { } // Step 7. - let doc_body = HTMLBodyElement::new(DOMString("body".to_owned()), None, doc.r()); + let doc_body = HTMLBodyElement::new(DOMString::from("body"), None, doc.r()); doc_html.AppendChild(doc_body.upcast()).unwrap(); } diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index f11f92ba6e6..aa0475f88dd 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -17,7 +17,6 @@ use dom::document::{Document, IsHTMLDocument}; use dom::window::Window; use parse::html::{ParseContext, parse_html}; use parse::xml::{self, parse_xml}; -use std::borrow::ToOwned; use util::str::DOMString; #[dom_struct] @@ -51,7 +50,7 @@ impl DOMParserMethods for DOMParser { ty: DOMParserBinding::SupportedType) -> Fallible<Root<Document>> { let url = self.window.get_url(); - let content_type = DOMString(DOMParserBinding::SupportedTypeValues::strings[ty as usize].to_owned()); + let content_type = DOMString::from(DOMParserBinding::SupportedTypeValues::strings[ty as usize]); let doc = self.window.Document(); let doc = doc.r(); let loader = DocumentLoader::new(&*doc.loader()); diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index 65c1ca9f7f2..28c71f0838f 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -11,7 +11,6 @@ use dom::bindings::js::{JS, Root}; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::element::Element; use dom::node::window_from_node; -use std::borrow::ToOwned; use string_cache::Atom; use util::str::{DOMString, HTML_SPACE_CHARACTERS, str_join}; @@ -64,7 +63,8 @@ impl DOMTokenListMethods for DOMTokenList { // https://dom.spec.whatwg.org/#dom-domtokenlist-item fn Item(&self, index: u32) -> Option<DOMString> { self.attribute().and_then(|attr| { - attr.value().as_tokens().get(index as usize).map(|token| DOMString((**token).to_owned())) + // FIXME(ajeffrey): Convert directly from Atom to DOMString + attr.value().as_tokens().get(index as usize).map(|token| DOMString::from(&**token)) }) } @@ -134,7 +134,7 @@ impl DOMTokenListMethods for DOMTokenList { // https://dom.spec.whatwg.org/#stringification-behavior fn Stringifier(&self) -> DOMString { let tokenlist = self.element.get_tokenlist_attribute(&self.local_name); - DOMString(str_join(&tokenlist, "\x20")) + DOMString::from(str_join(&tokenlist, "\x20")) } // check-tidy: no specs after this line diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 6da455fe649..158d9612442 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -69,7 +69,7 @@ use selectors::parser::{AttrSelector, NamespaceConstraint, parse_author_origin_s use selectors::states::*; use smallvec::VecLike; use std::ascii::AsciiExt; -use std::borrow::{Cow, ToOwned}; +use std::borrow::Cow; use std::cell::{Cell, Ref}; use std::default::Default; use std::mem; @@ -757,7 +757,8 @@ impl Element { traversal_scope: traversal_scope, .. Default::default() }) { - Ok(()) => Ok(DOMString(String::from_utf8(writer).unwrap())), + // FIXME(ajeffrey): Directly convert UTF8 to DOMString + Ok(()) => Ok(DOMString::from(String::from_utf8(writer).unwrap())), Err(_) => panic!("Cannot serialize element"), } } @@ -1012,10 +1013,10 @@ impl Element { let base = doc.url(); // https://html.spec.whatwg.org/multipage/#reflect // XXXManishearth this doesn't handle `javascript:` urls properly - DOMString(match UrlParser::new().base_url(&base).parse(&url) { - Ok(parsed) => parsed.serialize(), - Err(_) => "".to_owned() - }) + match UrlParser::new().base_url(&base).parse(&url) { + Ok(parsed) => DOMString::from(parsed.serialize()), + Err(_) => DOMString::from("") + } } pub fn set_url_attribute(&self, local_name: &Atom, value: DOMString) { self.set_string_attribute(local_name, value); @@ -1069,7 +1070,8 @@ impl Element { } pub fn set_uint_attribute(&self, local_name: &Atom, value: u32) { assert!(&**local_name == local_name.to_ascii_lowercase()); - self.set_attribute(local_name, AttrValue::UInt(DOMString(value.to_string()), value)); + // FIXME(ajeffrey): Directly convert u32 to DOMString + self.set_attribute(local_name, AttrValue::UInt(DOMString::from(value.to_string()), value)); } pub fn will_mutate_attr(&self) { @@ -1086,7 +1088,8 @@ impl ElementMethods for Element { // https://dom.spec.whatwg.org/#dom-element-localname fn LocalName(&self) -> DOMString { - DOMString((*self.local_name).to_owned()) + // FIXME(ajeffrey): Convert directly from Atom to DOMString + DOMString::from(&*self.local_name) } // https://dom.spec.whatwg.org/#dom-element-prefix @@ -1102,7 +1105,7 @@ impl ElementMethods for Element { }, None => Cow::Borrowed(&*self.local_name) }; - DOMString(if self.html_element_in_html_document() { + DOMString::from(if self.html_element_in_html_document() { qualified_name.to_ascii_uppercase() } else { qualified_name.into_owned() diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index 0b0b3ce6028..2ba9fe152b9 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -10,7 +10,6 @@ use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::eventtarget::EventTarget; -use std::borrow::ToOwned; use std::cell::Cell; use std::default::Default; use string_cache::Atom; @@ -169,7 +168,7 @@ impl EventMethods for Event { // https://dom.spec.whatwg.org/#dom-event-type fn Type(&self) -> DOMString { - DOMString((*self.type_()).to_owned()) + DOMString::from(&*self.type_()) // FIXME(ajeffrey): Directly convert from Atom to DOMString } // https://dom.spec.whatwg.org/#dom-event-target diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs index 0312d2c2841..96b14caed9d 100644 --- a/components/script/dom/filereader.rs +++ b/components/script/dom/filereader.rs @@ -228,7 +228,7 @@ impl FileReader { let convert = blob_bytes; // Step 7 let output = enc.decode(convert, DecoderTrap::Replace).unwrap(); - DOMString(output) + DOMString::from(output) } //https://w3c.github.io/FileAPI/#dfn-readAsDataURL @@ -248,7 +248,7 @@ impl FileReader { format!("data:{};base64,{}", data.blobtype, base64) }; - DOMString(output) + DOMString::from(output) } } @@ -323,7 +323,7 @@ impl FileReader { let global = self.global.root(); let progressevent = ProgressEvent::new(global.r(), - DOMString(type_), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, + DOMString::from(type_), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, total.is_some(), loaded, total.unwrap_or(0)); progressevent.upcast::<Event>().fire(self.upcast()); } diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 7736051fe16..01fc4b140c6 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -15,7 +15,6 @@ use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::blob::Blob; use dom::file::File; use dom::htmlformelement::HTMLFormElement; -use std::borrow::ToOwned; use std::collections::HashMap; use std::collections::hash_map::Entry::{Occupied, Vacant}; use util::str::DOMString; @@ -117,7 +116,7 @@ impl FormData { fn get_file_from_blob(&self, value: &Blob, filename: Option<DOMString>) -> Root<File> { let global = self.global.root(); let f = value.downcast::<File>(); - let name = filename.unwrap_or(f.map(|inner| inner.name().clone()).unwrap_or(DOMString("blob".to_owned()))); + let name = filename.unwrap_or(f.map(|inner| inner.name().clone()).unwrap_or(DOMString::from("blob"))); File::new(global.r(), value, name) } } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index a3c53071134..b7af752fdfc 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -19,7 +19,6 @@ use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use msg::constellation_msg::ConstellationChan; use msg::constellation_msg::Msg as ConstellationMsg; -use std::borrow::ToOwned; use std::rc::Rc; use string_cache::Atom; use time; @@ -179,7 +178,7 @@ impl VirtualMethods for HTMLBodyElement { let evtarget = window.upcast::<EventTarget>(); // forwarded event evtarget.set_event_handler_uncompiled(cx, url, reflector, &name[2..], - DOMString((**attr.value()).to_owned())); + DOMString::from((**attr.value()).to_owned())); false } _ => true, // HTMLElement::attribute_mutated will take care of this. diff --git a/components/script/dom/htmlbuttonelement.rs b/components/script/dom/htmlbuttonelement.rs index 01161241a16..4d32648541c 100644 --- a/components/script/dom/htmlbuttonelement.rs +++ b/components/script/dom/htmlbuttonelement.rs @@ -22,7 +22,6 @@ use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use selectors::states::*; use std::ascii::AsciiExt; -use std::borrow::ToOwned; use std::cell::Cell; use util::str::DOMString; @@ -226,7 +225,7 @@ impl<'a> Activatable for &'a HTMLButtonElement { if owner.is_none() || self.upcast::<Element>().click_in_progress() { return; } - node.query_selector_iter(DOMString("button[type=submit]".to_owned())).unwrap() + node.query_selector_iter(DOMString::from("button[type=submit]")).unwrap() .filter_map(Root::downcast::<HTMLButtonElement>) .find(|r| r.form_owner() == owner) .map(|s| s.r().synthetic_click_activation(ctrlKey, shiftKey, altKey, metaKey)); diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index b0663192d99..af3ffce3987 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -256,7 +256,7 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement { // Step 2. if self.Width() == 0 || self.Height() == 0 { - return Ok(DOMString("data:,".to_owned())); + return Ok(DOMString::from("data:,")); } // Step 3. @@ -277,7 +277,7 @@ impl HTMLCanvasElementMethods for HTMLCanvasElement { } let encoded = encoded.to_base64(STANDARD); - Ok(DOMString(format!("data:{};base64,{}", mime_type, encoded))) + Ok(DOMString::from(format!("data:{};base64,{}", mime_type, encoded))) } else { Err(Error::NotSupported) } diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index 8b40ca4e5b1..85c64b669f8 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -275,7 +275,7 @@ fn to_snake_case(name: DOMString) -> DOMString { attr_name.push(ch); } } - DOMString(attr_name) + DOMString::from(attr_name) } @@ -314,7 +314,7 @@ fn to_camel_case(name: &str) -> Option<DOMString> { result.push(curr_char); } } - Some(DOMString(result)) + Some(DOMString::from(result)) } impl HTMLElement { @@ -330,7 +330,7 @@ impl HTMLElement { pub fn get_custom_attr(&self, local_name: DOMString) -> Option<DOMString> { let local_name = Atom::from_slice(&to_snake_case(local_name)); self.upcast::<Element>().get_attribute(&ns!(""), &local_name).map(|attr| { - DOMString((**attr.value()).to_owned()) + DOMString::from(&**attr.value()) // FIXME(ajeffrey): Convert directly from AttrValue to DOMString }) } @@ -423,7 +423,8 @@ impl VirtualMethods for HTMLElement { let evtarget = self.upcast::<EventTarget>(); evtarget.set_event_handler_uncompiled(cx, url, reflector, &name[2..], - DOMString((**attr.value()).to_owned())); + // FIXME(ajeffrey): Convert directly from AttrValue to DOMString + DOMString::from(&**attr.value())); }, _ => {} } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index debf3e4b20e..6a332b14694 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -159,7 +159,7 @@ impl HTMLFormElement { // TODO: Handle browsing contexts // TODO: Handle validation let event = Event::new(GlobalRef::Window(win.r()), - DOMString("submit".to_owned()), + DOMString::from("submit"), EventBubbles::Bubbles, EventCancelable::Cancelable); event.fire(self.upcast()); @@ -171,7 +171,7 @@ impl HTMLFormElement { // Step 7-8 let mut action = submitter.action(); if action.is_empty() { - action = DOMString(base.serialize()); + action = DOMString::from(base.serialize()); } // TODO: Resolve the url relative to the submitter element // Step 10-15 @@ -283,7 +283,7 @@ impl HTMLFormElement { if prev == '\r' { buf.push('\n'); } - DOMString(buf) + DOMString::from(buf) } let mut ret = self.get_unclean_dataset(submitter); @@ -311,7 +311,7 @@ impl HTMLFormElement { let win = window_from_node(self); let event = Event::new(GlobalRef::Window(win.r()), - DOMString("reset".to_owned()), + DOMString::from("reset"), EventBubbles::Bubbles, EventCancelable::Cancelable); event.fire(self.upcast()); diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 1665c60d58f..2281c9e371f 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -29,7 +29,6 @@ use msg::constellation_msg::{ConstellationChan, IframeLoadInfo, MozBrowserEvent} use msg::constellation_msg::{NavigationDirection, PipelineId, SubpageId}; use page::IterablePage; use std::ascii::AsciiExt; -use std::borrow::ToOwned; use std::cell::Cell; use string_cache::Atom; use url::{Url, UrlParser}; @@ -146,7 +145,7 @@ impl HTMLIFrameElement { let mut detail = RootedValue::new(cx, UndefinedValue()); event.detail().to_jsval(cx, detail.handle_mut()); CustomEvent::new(GlobalRef::Window(window.r()), - DOMString(event.name().to_owned()), + DOMString::from(event.name()), true, true, detail.handle()) diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index e05a50e6027..c31d792a887 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -25,7 +25,6 @@ use net_traits::image::base::Image; use net_traits::image_cache_task::{ImageResponder, ImageResponse}; use script_task::ScriptTaskEventCategory::UpdateReplacedElement; use script_task::{CommonScriptMsg, Runnable, ScriptChan}; -use std::borrow::ToOwned; use std::sync::Arc; use string_cache::Atom; use url::{Url, UrlParser}; @@ -79,7 +78,7 @@ impl Runnable for ImageResponseHandlerRunnable { // Fire image.onload let window = window_from_node(document.r()); let event = Event::new(GlobalRef::Window(window.r()), - DOMString("load".to_owned()), + DOMString::from("load"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); event.fire(element.upcast()); @@ -149,7 +148,7 @@ impl HTMLImageElement { width: Option<u32>, height: Option<u32>) -> Fallible<Root<HTMLImageElement>> { let document = global.as_window().Document(); - let image = HTMLImageElement::new(DOMString("img".to_owned()), None, document.r()); + let image = HTMLImageElement::new(DOMString::from("img"), None, document.r()); if let Some(w) = width { image.SetWidth(w); } @@ -295,7 +294,8 @@ impl VirtualMethods for HTMLImageElement { match attr.local_name() { &atom!(src) => { self.update_image(mutation.new_value(attr).map(|value| { - (DOMString((**value).to_owned()), window_from_node(self).get_url()) + // FIXME(ajeffrey): convert directly from AttrValue to DOMString + (DOMString::from(&**value), window_from_node(self).get_url()) })); }, _ => {}, diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index ff4492a5520..898a0d69ff8 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -137,7 +137,7 @@ impl HTMLInputElement { pub trait LayoutHTMLInputElementHelpers { #[allow(unsafe_code)] - unsafe fn get_value_for_layout(self) -> DOMString; + unsafe fn get_value_for_layout(self) -> String; #[allow(unsafe_code)] unsafe fn get_size_for_layout(self) -> u32; #[allow(unsafe_code)] @@ -160,28 +160,28 @@ unsafe fn get_raw_textinput_value(input: LayoutJS<HTMLInputElement>) -> DOMStrin impl LayoutHTMLInputElementHelpers for LayoutJS<HTMLInputElement> { #[allow(unsafe_code)] - unsafe fn get_value_for_layout(self) -> DOMString { + unsafe fn get_value_for_layout(self) -> String { #[allow(unsafe_code)] - unsafe fn get_raw_attr_value(input: LayoutJS<HTMLInputElement>, default: &str) -> DOMString { + unsafe fn get_raw_attr_value(input: LayoutJS<HTMLInputElement>, default: &str) -> String { let elem = input.upcast::<Element>(); let value = (*elem.unsafe_get()) .get_attr_val_for_layout(&ns!(""), &atom!("value")) .unwrap_or(default); - DOMString(value.to_owned()) + String::from(value) } match (*self.unsafe_get()).input_type.get() { - InputType::InputCheckbox | InputType::InputRadio => DOMString::new(), - InputType::InputFile | InputType::InputImage => DOMString::new(), + InputType::InputCheckbox | InputType::InputRadio => String::new(), + InputType::InputFile | InputType::InputImage => String::new(), InputType::InputButton => get_raw_attr_value(self, ""), InputType::InputSubmit => get_raw_attr_value(self, DEFAULT_SUBMIT_VALUE), InputType::InputReset => get_raw_attr_value(self, DEFAULT_RESET_VALUE), InputType::InputPassword => { let raw = get_raw_textinput_value(self); // The implementation of get_insertion_point_index_for_layout expects a 1:1 mapping of chars. - DOMString(raw.chars().map(|_| '●').collect()) + raw.chars().map(|_| '●').collect() } - _ => get_raw_textinput_value(self), + _ => String::from(get_raw_textinput_value(self)), } } @@ -371,7 +371,7 @@ fn broadcast_radio_checked(broadcaster: &HTMLInputElement, group: Option<&Atom>) // This function is a workaround for lifetime constraint difficulties. fn do_broadcast(doc_node: &Node, broadcaster: &HTMLInputElement, owner: Option<&HTMLFormElement>, group: Option<&Atom>) { - let iter = doc_node.query_selector_iter(DOMString("input[type=radio]".to_owned())).unwrap() + let iter = doc_node.query_selector_iter(DOMString::from("input[type=radio]")).unwrap() .filter_map(Root::downcast::<HTMLInputElement>) .filter(|r| in_same_group(r.r(), owner, group) && broadcaster != r.r()); for ref r in iter { @@ -436,11 +436,11 @@ impl HTMLInputElement { let mut value = self.Value(); if &*ty == "radio" || &*ty == "checkbox" { if value.is_empty() { - value = DOMString("on".to_owned()); + value = DOMString::from("on"); } } Some(FormDatum { - ty: DOMString(ty.to_string()), + ty: DOMString::from(&*ty), // FIXME(ajeffrey): Convert directly from Atoms to DOMStrings name: name, value: value }) @@ -568,8 +568,8 @@ impl VirtualMethods for HTMLInputElement { }, &atom!(value) if !self.value_changed.get() => { let value = mutation.new_value(attr).map(|value| (**value).to_owned()); - self.textinput.borrow_mut().set_content(DOMString( - value.unwrap_or_else(|| "".to_owned()))); + self.textinput.borrow_mut().set_content( + value.map(DOMString::from).unwrap_or(DOMString::from(""))); }, &atom!(name) if self.input_type.get() == InputType::InputRadio => { self.radio_group_updated( @@ -718,7 +718,7 @@ impl Activatable for HTMLInputElement { let group = self.get_radio_group_name();; // Safe since we only manipulate the DOM tree after finding an element - let checked_member = doc_node.query_selector_iter(DOMString("input[type=radio]".to_owned())) + let checked_member = doc_node.query_selector_iter(DOMString::from("input[type=radio]")) .unwrap() .filter_map(Root::downcast::<HTMLInputElement>) .find(|r| { @@ -820,13 +820,13 @@ impl Activatable for HTMLInputElement { let target = self.upcast(); let event = Event::new(GlobalRef::Window(win.r()), - DOMString("input".to_owned()), + DOMString::from("input"), EventBubbles::Bubbles, EventCancelable::NotCancelable); event.fire(target); let event = Event::new(GlobalRef::Window(win.r()), - DOMString("change".to_owned()), + DOMString::from("change"), EventBubbles::Bubbles, EventCancelable::NotCancelable); event.fire(target); @@ -851,7 +851,7 @@ impl Activatable for HTMLInputElement { return; } let submit_button; - submit_button = node.query_selector_iter(DOMString("input[type=submit]".to_owned())).unwrap() + submit_button = node.query_selector_iter(DOMString::from("input[type=submit]")).unwrap() .filter_map(Root::downcast::<HTMLInputElement>) .find(|r| r.form_owner() == owner); match submit_button { @@ -861,7 +861,7 @@ impl Activatable for HTMLInputElement { } } None => { - let inputs = node.query_selector_iter(DOMString("input".to_owned())).unwrap() + let inputs = node.query_selector_iter(DOMString::from("input")).unwrap() .filter_map(Root::downcast::<HTMLInputElement>) .filter(|input| { input.form_owner() == owner && match input.type_() { diff --git a/components/script/dom/htmloptionelement.rs b/components/script/dom/htmloptionelement.rs index 39a153e6465..b29d0bc2332 100644 --- a/components/script/dom/htmloptionelement.rs +++ b/components/script/dom/htmloptionelement.rs @@ -70,7 +70,8 @@ impl HTMLOptionElement { } } -fn collect_text(element: &Element, value: &mut DOMString) { +// FIXME(ajeffrey): Provide a way of buffering DOMStrings other than using Strings +fn collect_text(element: &Element, value: &mut String) { let svg_script = *element.namespace() == ns!(SVG) && element.local_name() == &atom!("script"); let html_script = element.is::<HTMLScriptElement>(); if svg_script || html_script { @@ -80,7 +81,7 @@ fn collect_text(element: &Element, value: &mut DOMString) { for child in element.upcast::<Node>().children() { if child.is::<Text>() { let characterdata = child.downcast::<CharacterData>().unwrap(); - value.0.push_str(&characterdata.Data()); + value.push_str(&characterdata.Data()); } else if let Some(element_child) = child.downcast() { collect_text(element_child, value); } @@ -96,9 +97,9 @@ impl HTMLOptionElementMethods for HTMLOptionElement { // https://html.spec.whatwg.org/multipage/#dom-option-text fn Text(&self) -> DOMString { - let mut content = DOMString::new(); + let mut content = String::new(); collect_text(self.upcast(), &mut content); - DOMString(str_join(split_html_space_chars(&content), " ")) + DOMString::from(str_join(split_html_space_chars(&content), " ")) } // https://html.spec.whatwg.org/multipage/#dom-option-text diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index 7822fea99e9..1a37926772e 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -401,7 +401,7 @@ impl HTMLScriptElement { // TODO: Otherwise, decode the file to Unicode, using character // encoding as the fallback encoding. - (DOMString(UTF_8.decode(&*bytes, DecoderTrap::Replace).unwrap()), + (DOMString::from(UTF_8.decode(&*bytes, DecoderTrap::Replace).unwrap()), true, metadata.final_url) }, @@ -549,7 +549,7 @@ impl HTMLScriptElement { let window = window_from_node(self); let window = window.r(); let event = Event::new(GlobalRef::Window(window), - DOMString(type_), + DOMString::from(type_), bubbles, cancelable); event.fire(self.upcast()) diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index f47e225f76c..3531e2587da 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -21,7 +21,6 @@ use dom::nodelist::NodeList; use dom::validitystate::ValidityState; use dom::virtualmethods::VirtualMethods; use selectors::states::*; -use std::borrow::ToOwned; use string_cache::Atom; use util::str::DOMString; @@ -153,11 +152,11 @@ impl HTMLSelectElementMethods for HTMLSelectElement { // https://html.spec.whatwg.org/multipage/#dom-select-type fn Type(&self) -> DOMString { - DOMString(if self.Multiple() { + DOMString::from(if self.Multiple() { "select-multiple" } else { "select-one" - }.to_owned()) + }) } // https://html.spec.whatwg.org/multipage/#dom-lfe-labels diff --git a/components/script/dom/htmltableelement.rs b/components/script/dom/htmltableelement.rs index 355e23f6c59..3279b59bc53 100644 --- a/components/script/dom/htmltableelement.rs +++ b/components/script/dom/htmltableelement.rs @@ -75,7 +75,7 @@ impl HTMLTableElementMethods for HTMLTableElement { let caption = match self.GetCaption() { Some(caption) => caption, None => { - let caption = HTMLTableCaptionElement::new(DOMString("caption".to_owned()), + let caption = HTMLTableCaptionElement::new(DOMString::from("caption"), None, document_from_node(self).r()); self.SetCaption(Some(caption.r())); @@ -94,7 +94,7 @@ impl HTMLTableElementMethods for HTMLTableElement { // https://html.spec.whatwg.org/multipage/#dom-table-createtbody fn CreateTBody(&self) -> Root<HTMLTableSectionElement> { - let tbody = HTMLTableSectionElement::new(DOMString("tbody".to_owned()), + let tbody = HTMLTableSectionElement::new(DOMString::from("tbody"), None, document_from_node(self).r()); let node = self.upcast::<Node>(); diff --git a/components/script/dom/htmltablerowelement.rs b/components/script/dom/htmltablerowelement.rs index 044c7df8183..b37fb125e0c 100644 --- a/components/script/dom/htmltablerowelement.rs +++ b/components/script/dom/htmltablerowelement.rs @@ -76,7 +76,7 @@ impl HTMLTableRowElementMethods for HTMLTableRowElement { node.insert_cell_or_row( index, || self.Cells(), - || HTMLTableDataCellElement::new(DOMString("td".to_owned()), None, node.owner_doc().r())) + || HTMLTableDataCellElement::new(DOMString::from("td"), None, node.owner_doc().r())) } // https://html.spec.whatwg.org/multipage/#dom-tr-deletecell diff --git a/components/script/dom/htmltablesectionelement.rs b/components/script/dom/htmltablesectionelement.rs index 94010724ded..63954707758 100644 --- a/components/script/dom/htmltablesectionelement.rs +++ b/components/script/dom/htmltablesectionelement.rs @@ -61,7 +61,7 @@ impl HTMLTableSectionElementMethods for HTMLTableSectionElement { node.insert_cell_or_row( index, || self.Rows(), - || HTMLTableRowElement::new(DOMString("tr".to_owned()), None, node.owner_doc().r())) + || HTMLTableRowElement::new(DOMString::from("tr"), None, node.owner_doc().r())) } // https://html.spec.whatwg.org/multipage/#dom-tbody-deleterow diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs index 9b3f50bf91e..76194a2044e 100644 --- a/components/script/dom/htmltextareaelement.rs +++ b/components/script/dom/htmltextareaelement.rs @@ -28,7 +28,6 @@ use msg::constellation_msg::ConstellationChan; use script_task::ScriptTaskEventCategory::InputEvent; use script_task::{CommonScriptMsg, Runnable}; use selectors::states::*; -use std::borrow::ToOwned; use std::cell::Cell; use string_cache::Atom; use textinput::{KeyReaction, Lines, TextInput}; @@ -63,7 +62,7 @@ impl LayoutHTMLTextAreaElementHelpers for LayoutJS<HTMLTextAreaElement> { #[allow(unrooted_must_root)] #[allow(unsafe_code)] unsafe fn get_value_for_layout(self) -> String { - (*self.unsafe_get()).textinput.borrow_for_layout().get_content().0 + String::from((*self.unsafe_get()).textinput.borrow_for_layout().get_content()) } #[allow(unrooted_must_root)] @@ -174,7 +173,7 @@ impl HTMLTextAreaElementMethods for HTMLTextAreaElement { // https://html.spec.whatwg.org/multipage/#dom-textarea-type fn Type(&self) -> DOMString { - DOMString("textarea".to_owned()) + DOMString::from("textarea") } // https://html.spec.whatwg.org/multipage/#dom-textarea-defaultvalue @@ -238,7 +237,7 @@ impl HTMLTextAreaElement { let window = window_from_node(self); let window = window.r(); let event = Event::new(GlobalRef::Window(window), - DOMString("input".to_owned()), + DOMString::from("input"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); diff --git a/components/script/dom/htmltitleelement.rs b/components/script/dom/htmltitleelement.rs index 98abf2e42a4..374074bda30 100644 --- a/components/script/dom/htmltitleelement.rs +++ b/components/script/dom/htmltitleelement.rs @@ -45,7 +45,7 @@ impl HTMLTitleElementMethods for HTMLTitleElement { content.push_str(&text.upcast::<CharacterData>().data()); } } - DOMString(content) + DOMString::from(content) } // https://html.spec.whatwg.org/multipage/#dom-title-text diff --git a/components/script/dom/location.rs b/components/script/dom/location.rs index 6a4cc98543a..bae61d36c99 100644 --- a/components/script/dom/location.rs +++ b/components/script/dom/location.rs @@ -135,7 +135,7 @@ impl LocationMethods for Location { // https://html.spec.whatwg.org/multipage/#dom-location-href fn Stringifier(&self) -> DOMString { - DOMString(self.Href().0) + DOMString::from(self.Href().0) } // https://html.spec.whatwg.org/multipage/#dom-location-search diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 370621dfe8d..4cdd6eb277e 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -84,7 +84,7 @@ macro_rules! make_url_or_base_getter( let url = element.get_url_attribute(&Atom::from_slice($htmlname)); if url.is_empty() { let window = window_from_node(self); - DOMString(window.get_url().serialize()) + DOMString::from(window.get_url().serialize()) } else { url } @@ -102,7 +102,6 @@ macro_rules! make_enumerated_getter( use dom::bindings::inheritance::Castable; use dom::element::Element; use std::ascii::AsciiExt; - use std::borrow::ToOwned; use string_cache::Atom; let element = self.upcast::<Element>(); let mut val = element.get_string_attribute(&Atom::from_slice($htmlname)); @@ -110,7 +109,7 @@ macro_rules! make_enumerated_getter( // https://html.spec.whatwg.org/multipage/#attr-fs-method match &*val { $($choices)|+ => val, - _ => DOMString($default.to_owned()) + _ => DOMString::from($default) } } ); diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 05acd3447ef..e0dc835282b 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -14,7 +14,6 @@ use dom::event::Event; use dom::eventtarget::EventTarget; use js::jsapi::{RootedValue, HandleValue, Heap, JSContext}; use js::jsval::JSVal; -use std::borrow::ToOwned; use std::default::Default; use util::str::DOMString; @@ -79,7 +78,7 @@ impl MessageEvent { scope: GlobalRef, message: HandleValue) { let messageevent = MessageEvent::new( - scope, DOMString("message".to_owned()), false, false, message, + scope, DOMString::from("message"), false, false, message, DOMString::new(), DOMString::new()); messageevent.upcast::<Event>().fire(target); } diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index 8d9b3bb5627..437cc59c890 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -89,7 +89,7 @@ impl NamedNodeMapMethods for NamedNodeMap { // https://heycam.github.io/webidl/#dfn-supported-property-names fn SupportedPropertyNames(&self) -> Vec<DOMString> { self.owner.attrs().iter().map(|attr| { - DOMString((**attr.name()).to_owned()) + DOMString::from(&**attr.name()) // FIXME(ajeffrey): Convert directly from &Atom to DOMString }).collect() } } diff --git a/components/script/dom/navigatorinfo.rs b/components/script/dom/navigatorinfo.rs index 324bda1cd11..1d86deb45ad 100644 --- a/components/script/dom/navigatorinfo.rs +++ b/components/script/dom/navigatorinfo.rs @@ -2,12 +2,11 @@ * 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 std::borrow::ToOwned; use util::opts; use util::str::DOMString; pub fn Product() -> DOMString { - DOMString("Gecko".to_owned()) + DOMString::from("Gecko") } pub fn TaintEnabled() -> bool { @@ -15,32 +14,32 @@ pub fn TaintEnabled() -> bool { } pub fn AppName() -> DOMString { - DOMString("Netscape".to_owned()) // Like Gecko/Webkit + DOMString::from("Netscape") // Like Gecko/Webkit } pub fn AppCodeName() -> DOMString { - DOMString("Mozilla".to_owned()) + DOMString::from("Mozilla") } #[cfg(target_os = "windows")] pub fn Platform() -> DOMString { - DOMString("Win32".to_owned()) + DOMString::from("Win32") } #[cfg(any(target_os = "android", target_os = "linux"))] pub fn Platform() -> DOMString { - DOMString("Linux".to_owned()) + DOMString::from("Linux") } #[cfg(target_os = "macos")] pub fn Platform() -> DOMString { - DOMString("Mac".to_owned()) + DOMString::from("Mac") } pub fn UserAgent() -> DOMString { - DOMString(opts::get().user_agent.clone()) + DOMString::from(&*opts::get().user_agent) } pub fn AppVersion() -> DOMString { - DOMString("4.0".to_owned()) + DOMString::from("4.0") } diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 40e039280e5..3db56ed3c1d 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -1710,13 +1710,14 @@ impl Node { None => (), } } - DOMString(content) + DOMString::from(content) } pub fn namespace_to_string(namespace: Namespace) -> Option<DOMString> { match namespace { ns!("") => None, - Namespace(ref ns) => Some(DOMString((**ns).to_owned())) + // FIXME(ajeffrey): convert directly from &Atom to DOMString + Namespace(ref ns) => Some(DOMString::from(&**ns)) } } @@ -1812,16 +1813,16 @@ impl NodeMethods for Node { NodeTypeId::Element(..) => { self.downcast::<Element>().unwrap().TagName() } - NodeTypeId::CharacterData(CharacterDataTypeId::Text) => DOMString("#text".to_owned()), + NodeTypeId::CharacterData(CharacterDataTypeId::Text) => DOMString::from("#text"), NodeTypeId::CharacterData(CharacterDataTypeId::ProcessingInstruction) => { self.downcast::<ProcessingInstruction>().unwrap().Target() } - NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => DOMString("#comment".to_owned()), + NodeTypeId::CharacterData(CharacterDataTypeId::Comment) => DOMString::from("#comment"), NodeTypeId::DocumentType => { self.downcast::<DocumentType>().unwrap().name().clone() }, - NodeTypeId::DocumentFragment => DOMString("#document-fragment".to_owned()), - NodeTypeId::Document => DOMString("#document".to_owned()) + NodeTypeId::DocumentFragment => DOMString::from("#document-fragment"), + NodeTypeId::Document => DOMString::from("#document") } } diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs index f1274108767..50132dc42a2 100644 --- a/components/script/dom/servohtmlparser.rs +++ b/components/script/dom/servohtmlparser.rs @@ -48,7 +48,9 @@ impl Sink { match child { NodeOrText::AppendNode(n) => Root::from_ref(&*n), NodeOrText::AppendText(t) => { - let text = Text::new(DOMString(t.into()), &self.document); + // FIXME(ajeffrey): convert directly from tendrils to DOMStrings + let s: String = t.into(); + let text = Text::new(DOMString::from(s), &self.document); Root::upcast(text) } } diff --git a/components/script/dom/text.rs b/components/script/dom/text.rs index 8fdf9dd8be6..ee92332752c 100644 --- a/components/script/dom/text.rs +++ b/components/script/dom/text.rs @@ -83,11 +83,11 @@ impl TextMethods for Text { .last().unwrap(); let nodes = first.inclusively_following_siblings() .take_while(|node| node.is::<Text>()); - let mut text = DOMString::new(); + let mut text = String::new(); for ref node in nodes { let cdata = node.downcast::<CharacterData>().unwrap(); - text.0.push_str(&cdata.data()); + text.push_str(&cdata.data()); } - text + DOMString::from(text) } } diff --git a/components/script/dom/textdecoder.rs b/components/script/dom/textdecoder.rs index 899961963c5..c0dcd485c9f 100644 --- a/components/script/dom/textdecoder.rs +++ b/components/script/dom/textdecoder.rs @@ -72,7 +72,7 @@ impl TextDecoder { impl TextDecoderMethods for TextDecoder { // https://encoding.spec.whatwg.org/#dom-textdecoder-encoding fn Encoding(&self) -> DOMString { - DOMString(self.encoding.whatwg_name().unwrap().to_owned()) + DOMString::from(self.encoding.whatwg_name().unwrap()) } // https://encoding.spec.whatwg.org/#dom-textdecoder-fatal diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 0181ec7c6e3..114cca38908 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -66,7 +66,7 @@ impl TextEncoder { impl TextEncoderMethods for TextEncoder { // https://encoding.spec.whatwg.org/#dom-textencoder-encoding fn Encoding(&self) -> DOMString { - DOMString(self.encoder.name().to_owned()) + DOMString::from(self.encoder.name()) } #[allow(unsafe_code)] diff --git a/components/script/dom/url.rs b/components/script/dom/url.rs index b7a235dc741..a0370d7f767 100644 --- a/components/script/dom/url.rs +++ b/components/script/dom/url.rs @@ -188,7 +188,7 @@ impl URLMethods for URL { // https://url.spec.whatwg.org/#dom-url-href fn Stringifier(&self) -> DOMString { - DOMString(self.Href().0) + DOMString::from(self.Href().0) } // https://url.spec.whatwg.org/#dom-url-username diff --git a/components/script/dom/urlsearchparams.rs b/components/script/dom/urlsearchparams.rs index 66591a6ffa1..246924c061d 100644 --- a/components/script/dom/urlsearchparams.rs +++ b/components/script/dom/urlsearchparams.rs @@ -119,7 +119,7 @@ impl URLSearchParamsMethods for URLSearchParams { // https://url.spec.whatwg.org/#stringification-behavior fn Stringifier(&self) -> DOMString { - DOMString(self.serialize(None)) + DOMString::from(self.serialize(None)) } } diff --git a/components/script/dom/userscripts.rs b/components/script/dom/userscripts.rs index 7a29b460840..6cd08257b00 100644 --- a/components/script/dom/userscripts.rs +++ b/components/script/dom/userscripts.rs @@ -42,9 +42,9 @@ pub fn load_script(head: &HTMLHeadElement) { Ok(ref s) if s.ends_with(".js") => "file://".to_owned() + &s[..], _ => continue }; - let new_script = doc.CreateElement(DOMString("script".to_owned())).unwrap(); + let new_script = doc.CreateElement(DOMString::from("script")).unwrap(); let new_script = new_script.r(); - new_script.set_string_attribute(&atom!("src"), DOMString(name)); + new_script.set_string_attribute(&atom!("src"), DOMString::from(name)); node.InsertBefore(new_script.upcast(), first_child.r()).unwrap(); } } diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs index 2e8bc24e8b6..eb822fcaec0 100644 --- a/components/script/dom/webglprogram.rs +++ b/components/script/dom/webglprogram.rs @@ -106,7 +106,9 @@ impl WebGLProgram { } let (sender, receiver) = ipc::channel().unwrap(); - self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetAttribLocation(self.id, name.0, sender))).unwrap(); + self.renderer + .send(CanvasMsg::WebGL(CanvasWebGLMsg::GetAttribLocation(self.id, String::from(name), sender))) + .unwrap(); Ok(receiver.recv().unwrap()) } @@ -122,7 +124,9 @@ impl WebGLProgram { } let (sender, receiver) = ipc::channel().unwrap(); - self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetUniformLocation(self.id, name.0, sender))).unwrap(); + self.renderer + .send(CanvasMsg::WebGL(CanvasWebGLMsg::GetUniformLocation(self.id, String::from(name), sender))) + .unwrap(); Ok(receiver.recv().unwrap()) } } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index c0a00adf102..a6da1d0d2ea 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -119,10 +119,10 @@ impl WebGLRenderingContext { Err(msg) => { error!("Couldn't create WebGLRenderingContext: {}", msg); let event = WebGLContextEvent::new(global, - DOMString("webglcontextcreationerror".to_owned()), + DOMString::from("webglcontextcreationerror"), EventBubbles::DoesNotBubble, EventCancelable::Cancelable, - DOMString(msg)); + DOMString::from(msg)); event.upcast::<Event>().fire(canvas.upcast()); None } @@ -631,7 +631,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 fn GetShaderInfoLog(&self, shader: Option<&WebGLShader>) -> Option<DOMString> { if let Some(shader) = shader { - shader.info_log().map(DOMString) + shader.info_log().map(DOMString::from) } else { None } diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index 2f7994c373e..d96ee00311d 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -353,7 +353,7 @@ impl WebSocketMethods for WebSocket { // https://html.spec.whatwg.org/multipage/#dom-websocket-url fn Url(&self) -> DOMString { - DOMString(self.url.serialize()) + DOMString::from(self.url.serialize()) } // https://html.spec.whatwg.org/multipage/#dom-websocket-readystate @@ -489,7 +489,7 @@ impl Runnable for ConnectionEstablishedTask { // Step 6. let global = ws.global.root(); - let event = Event::new(global.r(), DOMString("open".to_owned()), + let event = Event::new(global.r(), DOMString::from("open"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); event.fire(ws.upcast()); @@ -531,7 +531,7 @@ impl Runnable for CloseTask { //A Bad close ws.clean_close.set(false); let event = Event::new(global.r(), - DOMString("error".to_owned()), + DOMString::from("error"), EventBubbles::DoesNotBubble, EventCancelable::Cancelable); event.fire(ws.upcast()); @@ -541,12 +541,12 @@ impl Runnable for CloseTask { https://html.spec.whatwg.org/multipage/#closeWebSocket */ let close_event = CloseEvent::new(global.r(), - DOMString("close".to_owned()), + DOMString::from("close"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, ws.clean_close.get(), ws.code.get(), - DOMString(reason)); + DOMString::from(reason)); close_event.upcast::<Event>().fire(ws.upcast()); } } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 5a914fcc49d..7e1bee33308 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -306,7 +306,7 @@ pub fn base64_btoa(input: DOMString) -> Fallible<DOMString> { // "and then must apply the base64 algorithm to that sequence of // octets, and return the result. [RFC4648]" - Ok(DOMString(octets.to_base64(STANDARD))) + Ok(DOMString::from(octets.to_base64(STANDARD))) } } @@ -353,7 +353,7 @@ pub fn base64_atob(input: DOMString) -> Fallible<DOMString> { } match input.from_base64() { - Ok(data) => Ok(DOMString(data.iter().map(|&b| b as char).collect::<String>())), + Ok(data) => Ok(DOMString::from(data.iter().map(|&b| b as char).collect::<String>())), Err(..) => Err(Error::InvalidCharacter) } } @@ -1003,7 +1003,7 @@ impl Window { ReflowQueryType::ResolvedStyleQuery(element, pseudo, property.clone()), ReflowReason::Query); let ResolvedStyleResponse(resolved) = self.layout_rpc.resolved_style(); - resolved.map(DOMString) + resolved.map(DOMString::from) } pub fn offset_parent_query(&self, node: TrustedNodeAddress) -> (Option<Root<Element>>, Rect<Au>) { diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 0ab8b3a323d..bb95138dd75 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -25,7 +25,6 @@ use js::jsapi::{HandleValue, JSContext, RootedValue}; use js::jsapi::{JSAutoCompartment, JSAutoRequest}; use js::jsval::UndefinedValue; use script_task::{Runnable, ScriptChan}; -use std::borrow::ToOwned; use std::sync::mpsc::{Sender, channel}; use url::UrlParser; use util::str::DOMString; @@ -129,7 +128,7 @@ impl Worker { let worker = address.root(); let global = worker.r().global.root(); let event = Event::new(global.r(), - DOMString("error".to_owned()), + DOMString::from("error"), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable); event.fire(worker.upcast()); @@ -140,7 +139,7 @@ impl Worker { let worker = address.root(); let global = worker.r().global.root(); let error = RootedValue::new(global.r().get_cx(), UndefinedValue()); - let errorevent = ErrorEvent::new(global.r(), DOMString("error".to_owned()), + let errorevent = ErrorEvent::new(global.r(), DOMString::from("error"), EventBubbles::Bubbles, EventCancelable::Cancelable, message, filename, lineno, colno, error.handle()); errorevent.upcast::<Event>().fire(worker.upcast()); diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 019d526b48f..eb75b6d830e 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -299,7 +299,7 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope { impl WorkerGlobalScope { pub fn execute_script(&self, source: DOMString) { match self.runtime.evaluate_script( - self.reflector().get_jsobject(), source.0, self.worker_url.serialize(), 1) { + self.reflector().get_jsobject(), String::from(source), self.worker_url.serialize(), 1) { Ok(_) => (), Err(_) => { // TODO: An error needs to be dispatched to the parent. diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs index 9e26ca4a70e..e79b7ff0fc9 100644 --- a/components/script/dom/workerlocation.rs +++ b/components/script/dom/workerlocation.rs @@ -78,6 +78,6 @@ impl WorkerLocationMethods for WorkerLocation { // https://html.spec.whatwg.org/multipage/#dom-workerlocation-href fn Stringifier(&self) -> DOMString { - DOMString(self.Href().0) + DOMString::from(self.Href().0) } } diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index bdef4b5ebb1..24a93225d2b 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -722,7 +722,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { fn GetResponseText(&self) -> Fallible<DOMString> { match self.response_type.get() { _empty | Text => { - Ok(DOMString(match self.ready_state.get() { + Ok(DOMString::from(match self.ready_state.get() { XMLHttpRequestState::Loading | XMLHttpRequestState::Done => self.text_response(), _ => "".to_owned() })) @@ -746,7 +746,7 @@ impl XMLHttpRequest { self.ready_state.set(rs); let global = self.global.root(); let event = Event::new(global.r(), - DOMString("readystatechange".to_owned()), + DOMString::from("readystatechange"), EventBubbles::DoesNotBubble, EventCancelable::Cancelable); event.fire(self.upcast()); @@ -927,7 +927,7 @@ impl XMLHttpRequest { fn dispatch_progress_event(&self, upload: bool, type_: String, loaded: u64, total: Option<u64>) { let global = self.global.root(); let progressevent = ProgressEvent::new(global.r(), - DOMString(type_), + DOMString::from(type_), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable, total.is_some(), loaded, diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs index 10115b9a235..0f0b6a00f87 100644 --- a/components/script/parse/html.rs +++ b/components/script/parse/html.rs @@ -71,14 +71,14 @@ impl<'a> TreeSink for servohtmlparser::Sink { ElementCreator::ParserCreated); for attr in attrs { - elem.set_attribute_from_parser(attr.name, DOMString(attr.value.into()), None); + elem.set_attribute_from_parser(attr.name, DOMString::from(String::from(attr.value)), None); } JS::from_ref(elem.upcast()) } fn create_comment(&mut self, text: StrTendril) -> JS<Node> { - let comment = Comment::new(DOMString(text.into()), &*self.document); + let comment = Comment::new(DOMString::from(String::from(text)), &*self.document); JS::from_ref(comment.upcast()) } @@ -115,8 +115,8 @@ impl<'a> TreeSink for servohtmlparser::Sink { system_id: StrTendril) { let doc = &*self.document; let doctype = DocumentType::new( - DOMString(name.into()), Some(DOMString(public_id.into())), - Some(DOMString(system_id.into())), doc); + DOMString::from(String::from(name)), Some(DOMString::from(String::from(public_id))), + Some(DOMString::from(String::from(system_id))), doc); doc.upcast::<Node>().AppendChild(doctype.upcast()).expect("Appending failed"); } @@ -124,7 +124,7 @@ impl<'a> TreeSink for servohtmlparser::Sink { let elem = target.downcast::<Element>() .expect("tried to set attrs on non-Element in HTML parsing"); for attr in attrs { - elem.set_attribute_from_parser(attr.name, DOMString(attr.value.into()), None); + elem.set_attribute_from_parser(attr.name, DOMString::from(String::from(attr.value)), None); } } @@ -247,7 +247,7 @@ pub fn parse_html(document: &Document, ParseContext::Fragment(fc) => ServoHTMLParser::new_for_fragment(Some(url), document, fc), }; - parser.parse_chunk(input.0.into()); + parser.parse_chunk(String::from(input)); } // https://html.spec.whatwg.org/multipage/#parsing-html-fragments diff --git a/components/script/textinput.rs b/components/script/textinput.rs index 98b080fd1b8..643b514c21a 100644 --- a/components/script/textinput.rs +++ b/components/script/textinput.rs @@ -137,7 +137,7 @@ impl<T: ClipboardProvider> TextInput<T> { if self.selection_begin.is_none() { self.selection_begin = Some(self.edit_point); } - self.replace_selection(DOMString(s.into())); + self.replace_selection(DOMString::from(s.into())); } pub fn get_sorted_selection(&self) -> Option<(TextPoint, TextPoint)> { @@ -181,14 +181,14 @@ impl<T: ClipboardProvider> TextInput<T> { let lines_suffix = &self.lines[end.line + 1..]; let mut insert_lines = if self.multiline { - insert.split('\n').map(|s| DOMString(s.to_owned())).collect() + insert.split('\n').map(DOMString::from).collect() } else { vec!(insert) }; let mut new_line = prefix.to_owned(); new_line.push_str(&insert_lines[0]); - insert_lines[0] = DOMString(new_line); + insert_lines[0] = DOMString::from(new_line); let last_insert_lines_index = insert_lines.len() - 1; self.edit_point.index = insert_lines[last_insert_lines_index].len(); @@ -441,14 +441,14 @@ impl<T: ClipboardProvider> TextInput<T> { content.push('\n'); } } - DOMString(content) + DOMString::from(content) } /// Set the current contents of the text input. If this is control supports multiple lines, /// any \n encountered will be stripped and force a new logical line. pub fn set_content(&mut self, content: DOMString) { self.lines = if self.multiline { - content.split('\n').map(|s| DOMString(s.to_owned())).collect() + content.split('\n').map(DOMString::from).collect() } else { vec!(content) }; diff --git a/components/script/webdriver_handlers.rs b/components/script/webdriver_handlers.rs index 9f095fab309..8a2385ae0f4 100644 --- a/components/script/webdriver_handlers.rs +++ b/components/script/webdriver_handlers.rs @@ -51,7 +51,7 @@ pub unsafe fn jsval_to_webdriver(cx: *mut JSContext, val: HandleValue) -> WebDri } else if val.get().is_string() { //FIXME: use jsstring_to_str when jsval grows to_jsstring let string: DOMString = FromJSValConvertible::from_jsval(cx, val, StringificationBehavior::Default).unwrap(); - Ok(WebDriverJSValue::String(string.0)) + Ok(WebDriverJSValue::String(String::from(string))) } else if val.get().is_null() { Ok(WebDriverJSValue::Null) } else { @@ -119,7 +119,7 @@ pub fn handle_get_frame_id(page: &Rc<Page>, pub fn handle_find_element_css(page: &Rc<Page>, _pipeline: PipelineId, selector: String, reply: IpcSender<Result<Option<String>, ()>>) { - reply.send(match page.document().QuerySelector(DOMString(selector)) { + reply.send(match page.document().QuerySelector(DOMString::from(selector)) { Ok(node) => { Ok(node.map(|x| x.upcast::<Node>().get_unique_id())) } @@ -131,7 +131,7 @@ pub fn handle_find_elements_css(page: &Rc<Page>, _pipeline: PipelineId, selector: String, reply: IpcSender<Result<Vec<String>, ()>>) { - reply.send(match page.document().QuerySelectorAll(DOMString(selector)) { + reply.send(match page.document().QuerySelectorAll(DOMString::from(selector)) { Ok(ref nodes) => { let mut result = Vec::with_capacity(nodes.Length() as usize); for i in 0..nodes.Length() { @@ -155,7 +155,7 @@ pub fn handle_get_active_element(page: &Rc<Page>, } pub fn handle_get_title(page: &Rc<Page>, _pipeline: PipelineId, reply: IpcSender<String>) { - reply.send(page.document().Title().0).unwrap(); + reply.send(String::from(page.document().Title())).unwrap(); } pub fn handle_get_text(page: &Rc<Page>, @@ -164,7 +164,7 @@ pub fn handle_get_text(page: &Rc<Page>, reply: IpcSender<Result<String, ()>>) { reply.send(match find_node_by_unique_id(&*page, pipeline, node_id) { Some(ref node) => { - Ok(node.GetTextContent().map(|x| x.0).unwrap_or("".to_owned())) + Ok(node.GetTextContent().map(String::from).unwrap_or("".to_owned())) }, None => Err(()) }).unwrap(); @@ -176,7 +176,7 @@ pub fn handle_get_name(page: &Rc<Page>, reply: IpcSender<Result<String, ()>>) { reply.send(match find_node_by_unique_id(&*page, pipeline, node_id) { Some(node) => { - Ok(node.downcast::<Element>().unwrap().TagName().0) + Ok(String::from(node.downcast::<Element>().unwrap().TagName())) }, None => Err(()) }).unwrap(); diff --git a/components/style/attr.rs b/components/style/attr.rs index e9fc50e0845..a973650a931 100644 --- a/components/style/attr.rs +++ b/components/style/attr.rs @@ -36,7 +36,8 @@ impl AttrValue { } pub fn from_atomic_tokens(atoms: Vec<Atom>) -> AttrValue { - let tokens = DOMString(str_join(&atoms, "\x20")); + // TODO(ajeffrey): effecient conversion of Vec<Atom> to DOMString + let tokens = DOMString::from(str_join(&atoms, "\x20")); AttrValue::TokenList(tokens, atoms) } diff --git a/tests/unit/script/textinput.rs b/tests/unit/script/textinput.rs index da7555f7775..3d62f1f32ed 100644 --- a/tests/unit/script/textinput.rs +++ b/tests/unit/script/textinput.rs @@ -14,11 +14,10 @@ use msg::constellation_msg::SUPER; use msg::constellation_msg::{Key, KeyModifiers}; use script::clipboard_provider::DummyClipboardContext; use script::textinput::{TextInput, Selection, Lines, Direction}; -use std::borrow::ToOwned; use util::str::DOMString; fn text_input(lines: Lines, s: &str) -> TextInput<DummyClipboardContext> { - TextInput::new(lines, DOMString(s.to_owned()), DummyClipboardContext::new("")) + TextInput::new(lines, DOMString::from(s), DummyClipboardContext::new("")) } #[test] @@ -86,7 +85,7 @@ fn test_textinput_replace_selection() { textinput.adjust_horizontal(2, Selection::NotSelected); textinput.adjust_horizontal(2, Selection::Selected); - textinput.replace_selection(DOMString("xyz".to_owned())); + textinput.replace_selection(DOMString::from("xyz")); assert_eq!(textinput.get_content(), "abxyzefg"); } @@ -177,7 +176,7 @@ fn test_textinput_set_content() { let mut textinput = text_input(Lines::Multiple, "abc\nde\nf"); assert_eq!(textinput.get_content(), "abc\nde\nf"); - textinput.set_content(DOMString("abc\nf".to_owned())); + textinput.set_content(DOMString::from("abc\nf")); assert_eq!(textinput.get_content(), "abc\nf"); assert_eq!(textinput.edit_point.line, 0); @@ -185,7 +184,7 @@ fn test_textinput_set_content() { textinput.adjust_horizontal(3, Selection::Selected); assert_eq!(textinput.edit_point.line, 0); assert_eq!(textinput.edit_point.index, 3); - textinput.set_content(DOMString("de".to_owned())); + textinput.set_content(DOMString::from("de")); assert_eq!(textinput.get_content(), "de"); assert_eq!(textinput.edit_point.line, 0); assert_eq!(textinput.edit_point.index, 2); @@ -199,7 +198,7 @@ fn test_clipboard_paste() { const MODIFIERS: KeyModifiers = CONTROL; let mut textinput = TextInput::new(Lines::Single, - DOMString("defg".to_owned()), + DOMString::from("defg"), DummyClipboardContext::new("abc")); assert_eq!(textinput.get_content(), "defg"); assert_eq!(textinput.edit_point.index, 0); |