diff options
Diffstat (limited to 'components/script/dom/bindings')
-rw-r--r-- | components/script/dom/bindings/structuredclone.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/components/script/dom/bindings/structuredclone.rs b/components/script/dom/bindings/structuredclone.rs index 018ac30e340..843b7bea30c 100644 --- a/components/script/dom/bindings/structuredclone.rs +++ b/components/script/dom/bindings/structuredclone.rs @@ -4,10 +4,13 @@ use dom::bindings::error::Fallible; use dom::bindings::error::Error::DataClone; +use dom::bindings::global::GlobalRef; +use js::glue::JS_STRUCTURED_CLONE_VERSION; use js::jsapi::JSContext; use js::jsapi::{JS_WriteStructuredClone, JS_ClearPendingException}; -use js::jsval::JSVal; +use js::jsapi::JS_ReadStructuredClone; +use js::jsval::{JSVal, UndefinedValue}; use libc::size_t; use std::ptr; @@ -37,4 +40,15 @@ impl StructuredCloneData { nbytes: nbytes, }) } + + pub fn read(self, global: GlobalRef) -> JSVal { + let mut message = UndefinedValue(); + unsafe { + assert!(JS_ReadStructuredClone( + global.get_cx(), self.data as *const u64, self.nbytes, + JS_STRUCTURED_CLONE_VERSION, &mut message, + ptr::null(), ptr::null_mut()) != 0); + } + message + } } |