JSValue JSPopStateEvent::state(ExecState* exec) const { PopStateEvent* event = static_cast<PopStateEvent*>(impl()); SerializedScriptValue* serializedState = event->serializedState(); if (serializedState) return serializedState->deserialize(exec, globalObject(), 0); if (!event->state().hasNoValue()) return event->state().jsValue(); return jsNull(); }
v8::Handle<v8::Value> V8PopStateEvent::stateAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) { INC_STATS("DOM.PopStateEvent.state"); PopStateEvent* event = V8PopStateEvent::toNative(info.Holder()); SerializedScriptValue* state = event->state(); if (!state) return v8::Null(); return state->deserialize(); }
static v8::Handle<v8::Value> cachedValueAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) { INC_STATS("DOM.TestSerializedScriptValueInterface.cachedValue._get"); v8::Handle<v8::String> propertyName = v8::String::NewSymbol("cachedValue"); v8::Handle<v8::Value> value = info.Holder()->GetHiddenValue(propertyName); if (!value.IsEmpty()) return value; TestSerializedScriptValueInterface* imp = V8TestSerializedScriptValueInterface::toNative(info.Holder()); SerializedScriptValue* serialized = imp->cachedValue(); value = serialized ? serialized->deserialize() : v8::Handle<v8::Value>(v8::Null(info.GetIsolate())); info.Holder()->SetHiddenValue(propertyName, value); return value; }
v8::Handle<v8::Value> V8History::stateAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) { History* history = V8History::toNative(info.Holder()); v8::Handle<v8::Value> value = info.Holder()->GetHiddenValue(V8HiddenPropertyName::state()); if (!value.IsEmpty() && !history->stateChanged()) return value; SerializedScriptValue* serialized = history->state(); value = serialized ? serialized->deserialize(0, info.GetIsolate()) : v8::Handle<v8::Value>(v8Null(info.GetIsolate())); info.Holder()->SetHiddenValue(V8HiddenPropertyName::state(), value); return value; }
IDBValue::IDBValue(const SerializedScriptValue& scriptValue, const Vector<String>& blobURLs, const Vector<String>& blobFilePaths) : m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data())) , m_blobURLs(blobURLs) , m_blobFilePaths(blobFilePaths) { ASSERT(m_data.data()); }
void InProcessIDBServer::putOrAdd(const IDBRequestData& requestData, IDBKey* key, SerializedScriptValue& value, const IndexedDB::ObjectStoreOverwriteMode overwriteMode) { RefPtr<InProcessIDBServer> self(this); IDBKeyData keyData(key); auto valueData = ThreadSafeDataBuffer::copyVector(value.data()); RunLoop::current().dispatch([this, self, requestData, keyData, valueData, overwriteMode] { m_server->putOrAdd(requestData, keyData, valueData, overwriteMode); }); }
IDBValue::IDBValue(const SerializedScriptValue& scriptValue) : m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data())) { }
IDBValue::IDBValue(const SerializedScriptValue& scriptValue) : m_data(ThreadSafeDataBuffer::copyVector(scriptValue.data())) , m_blobURLs(scriptValue.blobURLsIsolatedCopy()) { }