bool ReadStructuredClone(JSContext* aCx, uint64_t* aData, size_t aDataLength, const StructuredCloneClosure& aClosure, JS::Value* aClone) { void* closure = &const_cast<StructuredCloneClosure&>(aClosure); return !!JS_ReadStructuredClone(aCx, aData, aDataLength, JS_STRUCTURED_CLONE_VERSION, aClone, &gCallbacks, closure); }
void StructuredCloneHelper::ReadFromBuffer(nsISupports* aParent, JSContext* aCx, uint64_t* aBuffer, size_t aBufferLength, uint32_t aAlgorithmVersion, JS::MutableHandle<JS::Value> aValue, ErrorResult& aRv) { MOZ_ASSERT(!mBuffer, "ReadFromBuffer() must be called without a Write()."); MOZ_ASSERT(aBuffer); mozilla::AutoRestore<nsISupports*> guard(mParent); mParent = aParent; if (!JS_ReadStructuredClone(aCx, aBuffer, aBufferLength, aAlgorithmVersion, aValue, &gCallbacks, this)) { JS_ClearPendingException(aCx); aRv.Throw(NS_ERROR_DOM_DATA_CLONE_ERR); } }
nsresult nsStructuredCloneContainer::DeserializeToVariant(JSContext *aCx, nsIVariant **aData) { NS_ENSURE_STATE(mData); NS_ENSURE_ARG_POINTER(aData); *aData = nsnull; // Deserialize to a jsval. jsval jsStateObj; bool success = JS_ReadStructuredClone(aCx, mData, mSize, mVersion, &jsStateObj, nsnull, nsnull); NS_ENSURE_STATE(success); // Now wrap the jsval as an nsIVariant. nsCOMPtr<nsIVariant> varStateObj; nsCOMPtr<nsIXPConnect> xpconnect = do_GetService(nsIXPConnect::GetCID()); NS_ENSURE_STATE(xpconnect); xpconnect->JSValToVariant(aCx, &jsStateObj, getter_AddRefs(varStateObj)); NS_ENSURE_STATE(varStateObj); NS_IF_ADDREF(*aData = varStateObj); return NS_OK; }
void ScriptInterface::ReadStructuredClone(const shared_ptr<ScriptInterface::StructuredClone>& ptr, JS::MutableHandleValue ret) { JSAutoRequest rq(m->m_cx); JS_ReadStructuredClone(m->m_cx, ptr->m_Data, ptr->m_Size, JS_STRUCTURED_CLONE_VERSION, ret, NULL, NULL); }
jsval ScriptInterface::ReadStructuredClone(const shared_ptr<ScriptInterface::StructuredClone>& ptr) { jsval ret = JSVAL_VOID; JS_ReadStructuredClone(m->m_cx, ptr->m_Data, ptr->m_Size, JS_STRUCTURED_CLONE_VERSION, &ret, NULL, NULL); return ret; }
bool deserializeData(JSContext *cx, jsval *vp) { return !!JS_ReadStructuredClone(cx, data, nbytes, JS_STRUCTURED_CLONE_VERSION, vp, NULL, NULL); }