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

Unified Diff: third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.h

Issue 2686113002: Remove ScriptValueSerializer. (Closed)
Patch Set: Created 3 years, 10 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: third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.h
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.h b/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.h
deleted file mode 100644
index 03ca5c58020662fc4b90f11bff5cd5b551cb739b..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.h
+++ /dev/null
@@ -1,675 +0,0 @@
-// 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.
-
-#ifndef ScriptValueSerializer_h
-#define ScriptValueSerializer_h
-
-#include "base/gtest_prod_util.h"
-#include "bindings/core/v8/SerializationTag.h"
-#include "bindings/core/v8/SerializedScriptValue.h"
-#include "bindings/core/v8/V8Binding.h"
-#include "core/CoreExport.h"
-#include "wtf/HashMap.h"
-#include "wtf/Noncopyable.h"
-#include "wtf/Vector.h"
-#include "wtf/text/WTFString.h"
-#include "wtf/typed_arrays/ArrayBufferContents.h"
-#include <v8.h>
-
-namespace blink {
-
-class CompositorProxy;
-class DOMArrayBuffer;
-class DOMArrayBufferView;
-class File;
-class FileList;
-class StaticBitmapImage;
-
-typedef Vector<WTF::ArrayBufferContents, 1> ArrayBufferContentsArray;
-typedef Vector<RefPtr<StaticBitmapImage>, 1> ImageBitmapContentsArray;
-
-// V8ObjectMap is a map from V8 objects to arbitrary values of type T.
-// V8 objects (or handles to V8 objects) cannot be used as keys in ordinary
-// wtf::HashMaps; this class should be used instead. GCObject must be a subtype
-// of v8::Object.
-// Suggested usage:
-// V8ObjectMap<v8::Object, int> map;
-// v8::Local<v8::Object> obj = ...;
-// map.set(obj, 42);
-template <typename GCObject, typename T>
-class V8ObjectMap {
- STACK_ALLOCATED();
-
- public:
- bool contains(const v8::Local<GCObject>& handle) {
- return m_map.contains(*handle);
- }
-
- bool tryGet(const v8::Local<GCObject>& handle, T* valueOut) {
- typename HandleToT::iterator result = m_map.find(*handle);
- if (result != m_map.end()) {
- *valueOut = result->value;
- return true;
- }
- return false;
- }
-
- void set(const v8::Local<GCObject>& handle, const T& value) {
- m_map.set(*handle, value);
- }
-
- private:
- // This implementation uses GetIdentityHash(), which sets a hidden property on
- // the object containing a random integer (or returns the one that had been
- // previously set). This ensures that the table never needs to be rebuilt
- // across garbage collections at the expense of doing additional allocation
- // and making more round trips into V8. Note that since GetIdentityHash() is
- // defined only on v8::Objects, this V8ObjectMap cannot be used to map
- // v8::Strings to T (because the public V8 API considers a v8::String to be a
- // v8::Primitive).
-
- // If V8 exposes a way to get at the address of the object held by a handle,
- // then we can produce an alternate implementation that does not need to do
- // any V8-side allocation; however, it will need to rehash after every garbage
- // collection because a key object may have been moved.
- template <typename G>
- struct V8HandlePtrHash {
- STATIC_ONLY(V8HandlePtrHash);
- static v8::Local<G> unsafeHandleFromRawValue(const G* value) {
- const v8::Local<G>* handle =
- reinterpret_cast<const v8::Local<G>*>(&value);
- return *handle;
- }
-
- static unsigned hash(const G* key) {
- return static_cast<unsigned>(
- unsafeHandleFromRawValue(key)->GetIdentityHash());
- }
- static bool equal(const G* a, const G* b) {
- return unsafeHandleFromRawValue(a) == unsafeHandleFromRawValue(b);
- }
- // For HashArg.
- static const bool safeToCompareToEmptyOrDeleted = false;
- };
-
- typedef WTF::HashMap<GCObject*, T, V8HandlePtrHash<GCObject>> HandleToT;
- HandleToT m_map;
-};
-
-// SerializedScriptValueWriter is responsible for serializing primitive types
-// and storing information used to reconstruct composite types.
-class CORE_EXPORT SerializedScriptValueWriter {
- STACK_ALLOCATED();
- WTF_MAKE_NONCOPYABLE(SerializedScriptValueWriter);
-
- public:
- typedef UChar BufferValueType;
-
- SerializedScriptValueWriter() : m_position(0) {}
-
- protected:
- friend class ScriptValueSerializer;
-
- String takeWireString();
-
- // Write functions for primitive types.
- void writeUndefined();
- void writeNull();
- void writeTrue();
- void writeFalse();
- void writeBooleanObject(bool value);
- void writeOneByteString(v8::Local<v8::String>&);
- void writeRawStringBytes(v8::Local<v8::String>&);
- void writeUtf8String(v8::Local<v8::String>&);
- void writeUCharString(v8::Local<v8::String>&);
- void writeStringObject(const char* data, int length);
- void writeWebCoreString(const String&);
- void writeVersion();
- void writeInt32(int32_t value);
- void writeUint32(uint32_t value);
- void writeDate(double numberValue);
- void writeNumber(double number);
- void writeNumberObject(double number);
- void writeBlob(const String& uuid,
- const String& type,
- unsigned long long size);
- void writeBlobIndex(int blobIndex);
- void writeCompositorProxy(const CompositorProxy&);
- void writeFile(const File&);
- void writeFileIndex(int blobIndex);
- void writeFileList(const FileList&);
- void writeFileListIndex(const Vector<int>& blobIndices);
- void writeArrayBuffer(const DOMArrayBuffer&);
- void writeArrayBufferView(const DOMArrayBufferView&);
- void doWriteImageData(uint32_t width,
- uint32_t height,
- const uint8_t* pixelData,
- uint32_t pixelDataLength);
- void writeImageData(uint32_t width,
- uint32_t height,
- const uint8_t* pixelData,
- uint32_t pixelDataLength);
- void writeImageBitmap(uint32_t width,
- uint32_t height,
- uint32_t isOriginClean,
- uint32_t isPremultiplied,
- const uint8_t* pixelData,
- uint32_t pixelDataLength);
- void writeRegExp(v8::Local<v8::String> pattern, v8::RegExp::Flags);
- void writeTransferredMessagePort(uint32_t index);
- void writeTransferredArrayBuffer(uint32_t index);
- void writeTransferredImageBitmap(uint32_t index);
- void writeTransferredOffscreenCanvas(uint32_t width,
- uint32_t height,
- uint32_t canvasId,
- uint32_t clientId,
- uint32_t sinkId);
- void writeTransferredSharedArrayBuffer(uint32_t index);
- void writeObjectReference(uint32_t reference);
- void writeObject(uint32_t numProperties);
- void writeSparseArray(uint32_t numProperties, uint32_t length);
- void writeDenseArray(uint32_t numProperties, uint32_t length);
- void writeReferenceCount(uint32_t numberOfReferences);
- void writeGenerateFreshObject();
- void writeGenerateFreshSparseArray(uint32_t length);
- void writeGenerateFreshDenseArray(uint32_t length);
- void writeGenerateFreshMap();
- void writeGenerateFreshSet();
- void writeMap(uint32_t length);
- void writeSet(uint32_t length);
-
- void doWriteFile(const File&);
- void doWriteArrayBuffer(const DOMArrayBuffer&);
- void doWriteString(const char* data, int length);
- void doWriteWebCoreString(const String&);
- int bytesNeededToWireEncode(uint32_t value);
-
- template <class T>
- void doWriteUintHelper(T value) {
- while (true) {
- uint8_t b = (value & SerializedScriptValue::varIntMask);
- value >>= SerializedScriptValue::varIntShift;
- if (!value) {
- append(b);
- break;
- }
- append(b | (1 << SerializedScriptValue::varIntShift));
- }
- }
-
- void doWriteUint32(uint32_t value);
- void doWriteUint64(uint64_t value);
- void doWriteNumber(double number);
- void append(SerializationTag);
- void append(uint8_t b);
- void append(const uint8_t* data, int length);
- void ensureSpace(unsigned extra);
- void fillHole();
- uint8_t* byteAt(int position);
- int v8StringWriteOptions();
-
- private:
- Vector<BufferValueType> m_buffer;
- unsigned m_position;
-};
-
-class CORE_EXPORT ScriptValueSerializer {
- STACK_ALLOCATED();
- WTF_MAKE_NONCOPYABLE(ScriptValueSerializer);
-
- protected:
- class StateBase;
- enum class Status { Success, InputError, DataCloneError, JSException };
-
- public:
- ScriptValueSerializer(SerializedScriptValueWriter&,
- WebBlobInfoArray*,
- ScriptState*);
- v8::Isolate* isolate() { return m_scriptState->isolate(); }
- v8::Local<v8::Context> context() { return m_scriptState->context(); }
-
- PassRefPtr<SerializedScriptValue> serialize(v8::Local<v8::Value>,
- Transferables*,
- ExceptionState&);
-
- protected:
- class StateBase {
- USING_FAST_MALLOC(StateBase);
- WTF_MAKE_NONCOPYABLE(StateBase);
-
- public:
- virtual ~StateBase() {}
-
- // Link to the next state to form a stack.
- StateBase* nextState() { return m_next; }
-
- // Composite object we're processing in this state.
- v8::Local<v8::Value> composite() { return m_composite; }
-
- // Serializes (a part of) the current composite and returns
- // the next state to process or null when this is the final
- // state.
- virtual StateBase* advance(ScriptValueSerializer&) = 0;
-
- protected:
- StateBase(v8::Local<v8::Value> composite, StateBase* next)
- : m_composite(composite), m_next(next) {}
-
- private:
- v8::Local<v8::Value> m_composite;
- StateBase* m_next;
- };
-
- // Dummy state that is used to signal serialization errors.
- class ErrorState final : public StateBase {
- public:
- ErrorState() : StateBase(v8Undefined(), 0) {}
-
- StateBase* advance(ScriptValueSerializer&) override {
- delete this;
- return 0;
- }
- };
-
- template <typename T>
- class State : public StateBase {
- public:
- v8::Local<T> composite() {
- return v8::Local<T>::Cast(StateBase::composite());
- }
-
- protected:
- State(v8::Local<T> composite, StateBase* next)
- : StateBase(composite, next) {}
- };
-
- class AbstractObjectState : public State<v8::Object> {
- public:
- AbstractObjectState(v8::Local<v8::Object> object, StateBase* next)
- : State<v8::Object>(object, next),
- m_index(0),
- m_numSerializedProperties(0) {}
-
- protected:
- virtual StateBase* objectDone(unsigned numProperties,
- ScriptValueSerializer&) = 0;
-
- StateBase* serializeProperties(ScriptValueSerializer&);
- v8::Local<v8::Array> m_propertyNames;
-
- private:
- unsigned m_index;
- unsigned m_numSerializedProperties;
- };
-
- class ObjectState final : public AbstractObjectState {
- public:
- ObjectState(v8::Local<v8::Object> object, StateBase* next)
- : AbstractObjectState(object, next) {}
-
- StateBase* advance(ScriptValueSerializer&) override;
-
- protected:
- StateBase* objectDone(unsigned numProperties,
- ScriptValueSerializer&) override;
- };
-
- class DenseArrayState final : public AbstractObjectState {
- public:
- DenseArrayState(v8::Local<v8::Array> array,
- v8::Local<v8::Array> propertyNames,
- StateBase* next,
- v8::Isolate* isolate)
- : AbstractObjectState(array, next),
- m_arrayIndex(0),
- m_arrayLength(array->Length()) {
- m_propertyNames = v8::Local<v8::Array>::New(isolate, propertyNames);
- }
-
- StateBase* advance(ScriptValueSerializer&) override;
-
- protected:
- StateBase* objectDone(unsigned numProperties,
- ScriptValueSerializer&) override;
-
- private:
- uint32_t m_arrayIndex;
- uint32_t m_arrayLength;
- };
-
- class SparseArrayState final : public AbstractObjectState {
- public:
- SparseArrayState(v8::Local<v8::Array> array,
- v8::Local<v8::Array> propertyNames,
- StateBase* next,
- v8::Isolate* isolate)
- : AbstractObjectState(array, next) {
- m_propertyNames = v8::Local<v8::Array>::New(isolate, propertyNames);
- }
-
- StateBase* advance(ScriptValueSerializer&) override;
-
- protected:
- StateBase* objectDone(unsigned numProperties,
- ScriptValueSerializer&) override;
- };
-
- template <typename T>
- class CollectionState : public State<T> {
- public:
- CollectionState(v8::Local<T> collection, StateBase* next)
- : State<T>(collection, next),
- m_entries(collection->AsArray()),
- m_index(0),
- m_length(m_entries->Length()) {}
-
- StateBase* advance(ScriptValueSerializer&) override;
-
- private:
- v8::Local<v8::Array> m_entries;
- uint32_t m_index;
- uint32_t m_length;
- };
-
- typedef CollectionState<v8::Map> MapState;
- typedef CollectionState<v8::Set> SetState;
-
- virtual StateBase* doSerializeObject(v8::Local<v8::Object>, StateBase* next);
-
- // Marks object as having been visited by the serializer and assigns it a
- // unique object reference ID. An object may only be greyed once.
- void greyObject(const v8::Local<v8::Object>&);
-
- StateBase* handleError(Status errorStatus, const String& message, StateBase*);
-
- SerializedScriptValueWriter& writer() { return m_writer; }
-
- private:
- StateBase* doSerialize(v8::Local<v8::Value>, StateBase* next);
- StateBase* doSerializeArrayBuffer(v8::Local<v8::Value> arrayBuffer,
- StateBase* next);
- void transferData(Transferables*, ExceptionState&, SerializedScriptValue*);
-
- StateBase* checkException(StateBase*);
- StateBase* writeObject(uint32_t numProperties, StateBase*);
- StateBase* writeSparseArray(uint32_t numProperties,
- uint32_t length,
- StateBase*);
- StateBase* writeDenseArray(uint32_t numProperties,
- uint32_t length,
- StateBase*);
-
- template <typename T>
- StateBase* writeCollection(uint32_t length, StateBase*);
-
- StateBase* push(StateBase* state) {
- ASSERT(state);
- ++m_depth;
- return checkComposite(state) ? state
- : handleError(Status::InputError,
- "Value being cloned is either "
- "cyclic or too deeply nested.",
- state);
- }
-
- StateBase* pop(StateBase* state) {
- ASSERT(state);
- --m_depth;
- StateBase* next = state->nextState();
- delete state;
- return next;
- }
-
- bool checkComposite(StateBase* top);
- void writeString(v8::Local<v8::Value>);
- void writeStringObject(v8::Local<v8::Value>);
- void writeNumberObject(v8::Local<v8::Value>);
- void writeBooleanObject(v8::Local<v8::Value>);
- StateBase* writeBlob(v8::Local<v8::Value>, StateBase* next);
- StateBase* writeCompositorProxy(v8::Local<v8::Value>, StateBase* next);
- StateBase* writeFile(v8::Local<v8::Value>, StateBase* next);
- StateBase* writeFileList(v8::Local<v8::Value>, StateBase* next);
- void writeImageData(v8::Local<v8::Value>);
- StateBase* writeAndGreyImageBitmap(v8::Local<v8::Object>, StateBase* next);
- void writeRegExp(v8::Local<v8::Value>);
- StateBase* writeAndGreyArrayBufferView(v8::Local<v8::Object>,
- StateBase* next);
- StateBase* writeWasmCompiledModule(v8::Local<v8::Object>, StateBase* next);
- StateBase* writeAndGreyArrayBuffer(v8::Local<v8::Object>, StateBase* next);
- StateBase* writeTransferredOffscreenCanvas(v8::Local<v8::Value>,
- StateBase* next);
- StateBase* writeTransferredSharedArrayBuffer(v8::Local<v8::Value>,
- uint32_t index,
- StateBase* next);
- static bool shouldSerializeDensely(uint32_t length, uint32_t propertyCount);
-
- StateBase* startArrayState(v8::Local<v8::Array>, StateBase* next);
- StateBase* startObjectState(v8::Local<v8::Object>, StateBase* next);
- StateBase* startMapState(v8::Local<v8::Map>, StateBase* next);
- StateBase* startSetState(v8::Local<v8::Set>, StateBase* next);
-
- bool appendBlobInfo(const String& uuid,
- const String& type,
- unsigned long long size,
- int* index);
- bool appendFileInfo(const File*, int* index);
-
- void copyTransferables(const Transferables&);
-
- RefPtr<ScriptState> m_scriptState;
- SerializedScriptValueWriter& m_writer;
- v8::TryCatch m_tryCatch;
- int m_depth;
- Status m_status;
- String m_errorMessage;
- typedef V8ObjectMap<v8::Object, uint32_t> ObjectPool;
- ObjectPool m_objectPool;
- ObjectPool m_transferredMessagePorts;
- ObjectPool m_transferredArrayBuffers;
- ObjectPool m_transferredImageBitmaps;
- ObjectPool m_transferredOffscreenCanvas;
- uint32_t m_nextObjectReference;
- WebBlobInfoArray* m_blobInfo;
- BlobDataHandleMap* m_blobDataHandles;
-};
-
-class ScriptValueDeserializer;
-
-// SerializedScriptValueReader is responsible for deserializing primitive types
-// and restoring information about saved objects of composite types.
-class CORE_EXPORT SerializedScriptValueReader {
- STACK_ALLOCATED();
- WTF_MAKE_NONCOPYABLE(SerializedScriptValueReader);
-
- public:
- SerializedScriptValueReader(const uint8_t* buffer,
- int length,
- const WebBlobInfoArray* blobInfo,
- BlobDataHandleMap& blobDataHandles,
- ScriptState* scriptState)
- : m_scriptState(scriptState),
- m_buffer(buffer),
- m_length(length),
- m_position(0),
- m_version(0),
- m_blobInfo(blobInfo),
- m_blobDataHandles(blobDataHandles) {
- ASSERT(!(reinterpret_cast<size_t>(buffer) & 1));
- ASSERT(length >= 0);
- }
-
- bool isEof() const { return m_position >= m_length; }
-
- ScriptState* getScriptState() const { return m_scriptState.get(); }
-
- virtual bool read(v8::Local<v8::Value>*, ScriptValueDeserializer&);
- bool readVersion(uint32_t& version);
- void setVersion(uint32_t);
-
- protected:
- v8::Isolate* isolate() const { return m_scriptState->isolate(); }
- v8::Local<v8::Context> context() const { return m_scriptState->context(); }
- unsigned length() const { return m_length; }
- unsigned position() const { return m_position; }
-
- const uint8_t* allocate(uint32_t size) {
- const uint8_t* allocated = m_buffer + m_position;
- m_position += size;
- return allocated;
- }
-
- bool readWithTag(SerializationTag,
- v8::Local<v8::Value>*,
- ScriptValueDeserializer&);
-
- bool readTag(SerializationTag*);
- bool readWebCoreString(String*);
- bool readUint32(v8::Local<v8::Value>*);
-
- bool doReadUint32(uint32_t* value);
-
- private:
- void undoReadTag();
- bool readArrayBufferViewSubTag(ArrayBufferViewSubTag*);
- bool readString(v8::Local<v8::Value>*);
- bool readUCharString(v8::Local<v8::Value>*);
- bool readStringObject(v8::Local<v8::Value>*);
- bool readInt32(v8::Local<v8::Value>*);
- bool readDate(v8::Local<v8::Value>*);
- bool readNumber(v8::Local<v8::Value>*);
- bool readNumberObject(v8::Local<v8::Value>*);
- bool doReadImageDataProperties(uint32_t* width,
- uint32_t* height,
- uint32_t* pixelDataLength);
- bool readImageData(v8::Local<v8::Value>*);
- bool readImageBitmap(v8::Local<v8::Value>*);
- bool readCompositorProxy(v8::Local<v8::Value>*);
- DOMArrayBuffer* doReadArrayBuffer();
- bool readArrayBuffer(v8::Local<v8::Value>*);
- bool readArrayBufferView(v8::Local<v8::Value>*, ScriptValueDeserializer&);
- bool readWasmCompiledModule(v8::Local<v8::Value>*);
- bool readRegExp(v8::Local<v8::Value>*);
- bool readBlob(v8::Local<v8::Value>*, bool isIndexed);
- bool readFile(v8::Local<v8::Value>*, bool isIndexed);
- bool readFileList(v8::Local<v8::Value>*, bool isIndexed);
- File* readFileHelper();
- File* readFileIndexHelper();
-
- template <class T>
- bool doReadUintHelper(T* value) {
- *value = 0;
- uint8_t currentByte;
- int shift = 0;
- do {
- if (m_position >= m_length)
- return false;
- currentByte = m_buffer[m_position++];
- *value |= (static_cast<T>(currentByte & SerializedScriptValue::varIntMask)
- << shift);
- shift += SerializedScriptValue::varIntShift;
- } while (currentByte & (1 << SerializedScriptValue::varIntShift));
- return true;
- }
-
- bool doReadUint64(uint64_t* value);
- bool doReadNumber(double* number);
- PassRefPtr<BlobDataHandle> getOrCreateBlobDataHandle(const String& uuid,
- const String& type,
- long long size = -1);
-
- RefPtr<ScriptState> m_scriptState;
- const uint8_t* m_buffer;
- const unsigned m_length;
- unsigned m_position;
- uint32_t m_version;
- const WebBlobInfoArray* m_blobInfo;
- const BlobDataHandleMap& m_blobDataHandles;
-
- FRIEND_TEST_ALL_PREFIXES(ScriptValueSerializerTest, Uint64Decode);
-};
-
-class CORE_EXPORT ScriptValueDeserializer {
- STACK_ALLOCATED();
- WTF_MAKE_NONCOPYABLE(ScriptValueDeserializer);
-
- public:
- ScriptValueDeserializer(SerializedScriptValueReader& reader,
- MessagePortArray* messagePorts,
- ArrayBufferContentsArray* arrayBufferContents,
- ImageBitmapContentsArray* imageBitmapContents)
- : m_reader(reader),
- m_transferredMessagePorts(messagePorts),
- m_arrayBufferContents(arrayBufferContents),
- m_imageBitmapContents(imageBitmapContents),
- m_arrayBuffers(arrayBufferContents ? arrayBufferContents->size() : 0),
- m_imageBitmaps(imageBitmapContents ? imageBitmapContents->size() : 0),
- m_version(0) {}
-
- v8::Local<v8::Value> deserialize();
- bool newSparseArray(uint32_t);
- bool newDenseArray(uint32_t length);
- bool newMap();
- bool newSet();
- bool consumeTopOfStack(v8::Local<v8::Value>*);
- bool newObject();
- bool completeObject(uint32_t numProperties, v8::Local<v8::Value>*);
- bool completeSparseArray(uint32_t numProperties,
- uint32_t length,
- v8::Local<v8::Value>*);
- bool completeDenseArray(uint32_t numProperties,
- uint32_t length,
- v8::Local<v8::Value>*);
- bool completeMap(uint32_t length, v8::Local<v8::Value>*);
- bool completeSet(uint32_t length, v8::Local<v8::Value>*);
- void pushObjectReference(const v8::Local<v8::Value>&);
- bool tryGetTransferredMessagePort(uint32_t index, v8::Local<v8::Value>*);
- bool tryGetTransferredArrayBuffer(uint32_t index, v8::Local<v8::Value>*);
- bool tryGetTransferredImageBitmap(uint32_t index, v8::Local<v8::Value>*);
- bool tryGetTransferredOffscreenCanvas(uint32_t width,
- uint32_t height,
- uint32_t canvasId,
- uint32_t clientId,
- uint32_t sinkId,
- v8::Local<v8::Value>*);
- bool tryGetTransferredSharedArrayBuffer(uint32_t index,
- v8::Local<v8::Value>*);
- bool tryGetObjectFromObjectReference(uint32_t reference,
- v8::Local<v8::Value>*);
- uint32_t objectReferenceCount();
-
- protected:
- SerializedScriptValueReader& reader() { return m_reader; }
- virtual bool read(v8::Local<v8::Value>*);
-
- private:
- bool initializeObject(v8::Local<v8::Object>,
- uint32_t numProperties,
- v8::Local<v8::Value>*);
- bool doDeserialize();
- void push(v8::Local<v8::Value> value) { m_stack.push_back(value); };
- void pop(unsigned length) {
- ASSERT(length <= m_stack.size());
- m_stack.shrink(m_stack.size() - length);
- }
- unsigned stackDepth() const { return m_stack.size(); }
-
- v8::Local<v8::Value> element(unsigned index);
- void openComposite(const v8::Local<v8::Value>&);
- bool closeComposite(v8::Local<v8::Value>*);
-
- SerializedScriptValueReader& m_reader;
- Vector<v8::Local<v8::Value>> m_stack;
- Vector<v8::Local<v8::Value>> m_objectPool;
- Vector<uint32_t> m_openCompositeReferenceStack;
- MessagePortArray* m_transferredMessagePorts;
- ArrayBufferContentsArray* m_arrayBufferContents;
- ImageBitmapContentsArray* m_imageBitmapContents;
- Vector<v8::Local<v8::Value>> m_arrayBuffers;
- Vector<v8::Local<v8::Value>> m_imageBitmaps;
- uint32_t m_version;
-};
-
-} // namespace blink
-
-#endif // ScriptValueSerializer_h
« no previous file with comments | « third_party/WebKit/Source/bindings/bindings.gni ('k') | third_party/WebKit/Source/bindings/core/v8/ScriptValueSerializer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698