mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
auto merge of #4496 : yodalee/servo/issue4484-ToJSValConvertible-for-str, r=jdm
#4484 Add ToJSValConvertible trait to str type.
This commit is contained in:
commit
fda38cf673
3 changed files with 11 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue