blob: 84b662a55bdeffd5a37bf2c8b2c068991de43b82 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "bindings/core/v8/SerializedScriptValueFactory.h"
#include "bindings/core/v8/serialization/V8ScriptValueDeserializer.h"
#include "bindings/core/v8/serialization/V8ScriptValueSerializer.h"
#include "platform/instrumentation/tracing/TraceEvent.h"
namespace blink {
SerializedScriptValueFactory* SerializedScriptValueFactory::m_instance = 0;
PassRefPtr<SerializedScriptValue> SerializedScriptValueFactory::create(
v8::Isolate* isolate,
v8::Local<v8::Value> value,
Transferables* transferables,
WebBlobInfoArray* blobInfo,
ExceptionState& exceptionState) {
TRACE_EVENT0("blink", "SerializedScriptValueFactory::create");
V8ScriptValueSerializer serializer(ScriptState::current(isolate));
serializer.setBlobInfoArray(blobInfo);
return serializer.serialize(value, transferables, exceptionState);
}
v8::Local<v8::Value> SerializedScriptValueFactory::deserialize(
SerializedScriptValue* value,
v8::Isolate* isolate,
MessagePortArray* messagePorts,
const WebBlobInfoArray* blobInfo) {
TRACE_EVENT0("blink", "SerializedScriptValueFactory::deserialize");
V8ScriptValueDeserializer deserializer(ScriptState::current(isolate), value);
deserializer.setTransferredMessagePorts(messagePorts);
deserializer.setBlobInfoArray(blobInfo);
return deserializer.deserialize();
}
} // namespace blink