| Index: Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| diff --git a/Source/bindings/core/v8/ScriptValueSerializer.cpp b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| index 8bc1ece92d2099001a1ea471191356ce550bb0b4..8436a7a0a49b27dda2210c442d715a933de39a92 100644
|
| --- a/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| +++ b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| @@ -8,10 +8,12 @@
|
| #include "bindings/core/v8/V8ArrayBuffer.h"
|
| #include "bindings/core/v8/V8ArrayBufferView.h"
|
| #include "bindings/core/v8/V8Blob.h"
|
| +#include "bindings/core/v8/V8CompositorProxy.h"
|
| #include "bindings/core/v8/V8File.h"
|
| #include "bindings/core/v8/V8FileList.h"
|
| #include "bindings/core/v8/V8ImageData.h"
|
| #include "bindings/core/v8/V8MessagePort.h"
|
| +#include "core/dom/CompositorProxy.h"
|
| #include "core/dom/DOMDataView.h"
|
| #include "core/fileapi/Blob.h"
|
| #include "core/fileapi/File.h"
|
| @@ -198,6 +200,13 @@ void SerializedScriptValueWriter::writeBlobIndex(int blobIndex)
|
| doWriteUint32(blobIndex);
|
| }
|
|
|
| +void SerializedScriptValueWriter::writeCompositorProxy(const CompositorProxy& compositorProxy)
|
| +{
|
| + append(CompositorProxyTag);
|
| + doWriteUint64(compositorProxy.elementId());
|
| + doWriteUint32(compositorProxy.bitfieldsSupported());
|
| +}
|
| +
|
| void SerializedScriptValueWriter::writeFile(const File& file)
|
| {
|
| append(FileTag);
|
| @@ -709,6 +718,8 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::doSerializeValue(v8::Lo
|
| writeRegExp(value);
|
| } else if (V8ArrayBuffer::hasInstance(value, isolate())) {
|
| return writeArrayBuffer(value, next);
|
| + } else if (V8CompositorProxy::hasInstance(value, isolate())) {
|
| + return writeCompositorProxy(value, next);
|
| } else if (value->IsObject()) {
|
| if (isHostObject(jsObject) || jsObject->IsCallable() || value->IsNativeError())
|
| return handleError(DataCloneError, "An object could not be cloned.", next);
|
| @@ -820,6 +831,15 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::writeBlob(v8::Local<v8:
|
| return 0;
|
| }
|
|
|
| +ScriptValueSerializer::StateBase* ScriptValueSerializer::writeCompositorProxy(v8::Local<v8::Value> value, ScriptValueSerializer::StateBase* next)
|
| +{
|
| + CompositorProxy* compositorProxy = V8CompositorProxy::toImpl(value.As<v8::Object>());
|
| + if (!compositorProxy)
|
| + return nullptr;
|
| + m_writer.writeCompositorProxy(*compositorProxy);
|
| + return nullptr;
|
| +}
|
| +
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::writeFile(v8::Local<v8::Value> value, ScriptValueSerializer::StateBase* next)
|
| {
|
| File* file = V8File::toImpl(value.As<v8::Object>());
|
| @@ -1097,6 +1117,12 @@ bool SerializedScriptValueReader::readWithTag(SerializationTag tag, v8::Local<v8
|
| return false;
|
| creator.pushObjectReference(*value);
|
| break;
|
| + case CompositorProxyTag:
|
| + if (!readCompositorProxy(value))
|
| + return false;
|
| + creator.pushObjectReference(*value);
|
| + break;
|
| +
|
| case ImageDataTag:
|
| if (!readImageData(value))
|
| return false;
|
| @@ -1382,6 +1408,20 @@ bool SerializedScriptValueReader::readImageData(v8::Local<v8::Value>* value)
|
| return true;
|
| }
|
|
|
| +bool SerializedScriptValueReader::readCompositorProxy(v8::Local<v8::Value>* value)
|
| +{
|
| + uint32_t attributes;
|
| + uint64_t element;
|
| + if (!doReadUint64(&element))
|
| + return false;
|
| + if (!doReadUint32(&attributes))
|
| + return false;
|
| +
|
| + CompositorProxy* compositorProxy = CompositorProxy::create(element, attributes);
|
| + *value = toV8(compositorProxy, m_scriptState->context()->Global(), isolate());
|
| + return true;
|
| +}
|
| +
|
| PassRefPtr<DOMArrayBuffer> SerializedScriptValueReader::doReadArrayBuffer()
|
| {
|
| uint32_t byteLength;
|
|
|