Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Unified Diff: Source/bindings/core/v8/ScriptValueSerializer.cpp

Issue 1024233002: compositor-worker: Introduce CompositorProxy. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: ctrl-z-bitfields Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698