aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-01-01 03:00:44 -0700
committerbors-servo <metajack+bors@gmail.com>2015-01-01 03:00:44 -0700
commitfda38cf673ed1fb0818e4e33c3e7b7bef1eff02a (patch)
tree55e0fba1e66b9a12825e87d2a496f304f256a5f7 /components/script/dom
parent685dec1abc61402ab22db93f4a362a58f8377d68 (diff)
parentbb087c238bce1bc5e50ac02ff45d344061794519 (diff)
downloadservo-fda38cf673ed1fb0818e4e33c3e7b7bef1eff02a.tar.gz
servo-fda38cf673ed1fb0818e4e33c3e7b7bef1eff02a.zip
auto merge of #4496 : yodalee/servo/issue4484-ToJSValConvertible-for-str, r=jdm
#4484 Add ToJSValConvertible trait to str type.
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py2
-rw-r--r--components/script/dom/bindings/conversions.rs12
-rw-r--r--components/script/dom/xmlhttprequest.rs2
3 files changed, 11 insertions, 5 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index 814f453c1f7..49abbdfd6fb 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2781,7 +2781,7 @@ pub const strings: &'static [&'static str] = &[
impl ToJSValConvertible for super::%s {
fn to_jsval(&self, cx: *mut JSContext) -> JSVal {
- strings[*self as uint].into_string().to_jsval(cx)
+ strings[*self as uint].to_jsval(cx)
}
}
""" % (",\n ".join(['"%s"' % val for val in enum.values()]), enum.identifier.name)
diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs
index 7cc6ef2cdaf..08c2abb9e8b 100644
--- a/components/script/dom/bindings/conversions.rs
+++ b/components/script/dom/bindings/conversions.rs
@@ -44,7 +44,7 @@ pub trait IDLInterface {
}
/// A trait to convert Rust types to `JSVal`s.
-pub trait ToJSValConvertible {
+pub trait ToJSValConvertible for Sized? {
/// Convert `self` to a `JSVal`. JSAPI failure causes a task failure.
fn to_jsval(&self, cx: *mut JSContext) -> JSVal;
}
@@ -232,10 +232,10 @@ impl FromJSValConvertible<()> for f64 {
}
}
-impl ToJSValConvertible for DOMString {
+impl ToJSValConvertible for str {
fn to_jsval(&self, cx: *mut JSContext) -> JSVal {
unsafe {
- let string_utf16: Vec<u16> = self.as_slice().utf16_units().collect();
+ let string_utf16: Vec<u16> = self.utf16_units().collect();
let jsstr = JS_NewUCStringCopyN(cx, string_utf16.as_ptr(), string_utf16.len() as libc::size_t);
if jsstr.is_null() {
panic!("JS_NewUCStringCopyN failed");
@@ -245,6 +245,12 @@ impl ToJSValConvertible for DOMString {
}
}
+impl ToJSValConvertible for DOMString {
+ fn to_jsval(&self, cx: *mut JSContext) -> JSVal {
+ self.as_slice().to_jsval(cx)
+ }
+}
+
/// Behavior for stringification of `JSVal`s.
#[deriving(PartialEq)]
pub enum StringificationBehavior {
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index b50a5c4330a..c8e2fbdd5a5 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -695,7 +695,7 @@ impl<'a> XMLHttpRequestMethods for JSRef<'a, XMLHttpRequest> {
if ready_state == XMLHttpRequestState::XHRDone || ready_state == XMLHttpRequestState::Loading {
self.text_response().to_jsval(cx)
} else {
- "".into_string().to_jsval(cx)
+ "".to_jsval(cx)
}
},
_ if self.ready_state.get() != XMLHttpRequestState::XHRDone => NullValue(),