diff options
author | Ms2ger <Ms2ger@gmail.com> | 2016-09-20 10:22:39 +0200 |
---|---|---|
committer | Ms2ger <Ms2ger@gmail.com> | 2016-09-21 14:03:34 +0200 |
commit | 2d83e5a78880724713366a38f599a1dac65403dc (patch) | |
tree | a5a9e86032c1fd7c78fefa86f435447045b4be0a /components/script/dom/bindings/conversions.rs | |
parent | 9a9ca450846457613a96c4364d16d0630320d3d5 (diff) | |
download | servo-2d83e5a78880724713366a38f599a1dac65403dc.tar.gz servo-2d83e5a78880724713366a38f599a1dac65403dc.zip |
Implement the MozMap type.
Fixes #13144.
Diffstat (limited to 'components/script/dom/bindings/conversions.rs')
-rw-r--r-- | components/script/dom/bindings/conversions.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/components/script/dom/bindings/conversions.rs b/components/script/dom/bindings/conversions.rs index bb29b9904a1..55c3c41f460 100644 --- a/components/script/dom/bindings/conversions.rs +++ b/components/script/dom/bindings/conversions.rs @@ -44,6 +44,7 @@ pub use js::conversions::ConversionBehavior; use js::conversions::latin1_to_string; use js::error::throw_type_error; use js::glue::{GetProxyPrivate, IsWrapper}; +use js::glue::{RUST_JSID_IS_INT, RUST_JSID_TO_INT}; use js::glue::{RUST_JSID_IS_STRING, RUST_JSID_TO_STRING, UnwrapObject}; use js::jsapi::{HandleId, HandleObject, HandleValue, JSClass, JSContext}; use js::jsapi::{JSObject, JSString, JS_GetArrayBufferViewType, JS_GetClass}; @@ -129,6 +130,22 @@ pub fn string_jsid_to_string(cx: *mut JSContext, id: HandleId) -> DOMString { } } +/// Convert `id` to a `DOMString`. Returns `None` if `id` is not a string or +/// integer. +/// +/// Handling of invalid UTF-16 in strings depends on the relevant option. +pub unsafe fn jsid_to_string(cx: *mut JSContext, id: HandleId) -> Option<DOMString> { + if RUST_JSID_IS_STRING(id) { + return Some(jsstring_to_str(cx, RUST_JSID_TO_STRING(id))); + } + + if RUST_JSID_IS_INT(id) { + return Some(RUST_JSID_TO_INT(id).to_string().into()); + } + + None +} + // http://heycam.github.io/webidl/#es-USVString impl ToJSValConvertible for USVString { unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) { |