OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef ScriptValueSerializer_h | 5 #ifndef ScriptValueSerializer_h |
6 #define ScriptValueSerializer_h | 6 #define ScriptValueSerializer_h |
7 | 7 |
8 #include "bindings/core/v8/SerializationTag.h" | 8 #include "bindings/core/v8/SerializationTag.h" |
9 #include "bindings/core/v8/SerializedScriptValue.h" | 9 #include "bindings/core/v8/SerializedScriptValue.h" |
10 #include "bindings/core/v8/V8Binding.h" | 10 #include "bindings/core/v8/V8Binding.h" |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 void writeFileListIndex(const Vector<int>& blobIndices); | 136 void writeFileListIndex(const Vector<int>& blobIndices); |
137 void writeArrayBuffer(const DOMArrayBuffer&); | 137 void writeArrayBuffer(const DOMArrayBuffer&); |
138 void writeArrayBufferView(const DOMArrayBufferView&); | 138 void writeArrayBufferView(const DOMArrayBufferView&); |
139 void doWriteImageData(uint32_t width, uint32_t height, const uint8_t* pixelD
ata, uint32_t pixelDataLength); | 139 void doWriteImageData(uint32_t width, uint32_t height, const uint8_t* pixelD
ata, uint32_t pixelDataLength); |
140 void writeImageData(uint32_t width, uint32_t height, const uint8_t* pixelDat
a, uint32_t pixelDataLength); | 140 void writeImageData(uint32_t width, uint32_t height, const uint8_t* pixelDat
a, uint32_t pixelDataLength); |
141 void writeImageBitmap(uint32_t width, uint32_t height, const uint8_t* pixelD
ata, uint32_t pixelDataLength); | 141 void writeImageBitmap(uint32_t width, uint32_t height, const uint8_t* pixelD
ata, uint32_t pixelDataLength); |
142 void writeRegExp(v8::Local<v8::String> pattern, v8::RegExp::Flags); | 142 void writeRegExp(v8::Local<v8::String> pattern, v8::RegExp::Flags); |
143 void writeTransferredMessagePort(uint32_t index); | 143 void writeTransferredMessagePort(uint32_t index); |
144 void writeTransferredArrayBuffer(uint32_t index); | 144 void writeTransferredArrayBuffer(uint32_t index); |
145 void writeTransferredImageBitmap(uint32_t index); | 145 void writeTransferredImageBitmap(uint32_t index); |
| 146 void writeTransferredOffscreenCanvas(uint32_t index, uint32_t width, uint32_
t height, uint32_t id); |
146 void writeTransferredSharedArrayBuffer(uint32_t index); | 147 void writeTransferredSharedArrayBuffer(uint32_t index); |
147 void writeObjectReference(uint32_t reference); | 148 void writeObjectReference(uint32_t reference); |
148 void writeObject(uint32_t numProperties); | 149 void writeObject(uint32_t numProperties); |
149 void writeSparseArray(uint32_t numProperties, uint32_t length); | 150 void writeSparseArray(uint32_t numProperties, uint32_t length); |
150 void writeDenseArray(uint32_t numProperties, uint32_t length); | 151 void writeDenseArray(uint32_t numProperties, uint32_t length); |
151 String takeWireString(); | 152 String takeWireString(); |
152 void writeReferenceCount(uint32_t numberOfReferences); | 153 void writeReferenceCount(uint32_t numberOfReferences); |
153 void writeGenerateFreshObject(); | 154 void writeGenerateFreshObject(); |
154 void writeGenerateFreshSparseArray(uint32_t length); | 155 void writeGenerateFreshSparseArray(uint32_t length); |
155 void writeGenerateFreshDenseArray(uint32_t length); | 156 void writeGenerateFreshDenseArray(uint32_t length); |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 StateBase* writeCompositorProxy(v8::Local<v8::Value>, StateBase* next); | 403 StateBase* writeCompositorProxy(v8::Local<v8::Value>, StateBase* next); |
403 StateBase* writeFile(v8::Local<v8::Value>, StateBase* next); | 404 StateBase* writeFile(v8::Local<v8::Value>, StateBase* next); |
404 StateBase* writeFileList(v8::Local<v8::Value>, StateBase* next); | 405 StateBase* writeFileList(v8::Local<v8::Value>, StateBase* next); |
405 void writeImageData(v8::Local<v8::Value>); | 406 void writeImageData(v8::Local<v8::Value>); |
406 StateBase* writeImageBitmap(v8::Local<v8::Value>, StateBase* next); | 407 StateBase* writeImageBitmap(v8::Local<v8::Value>, StateBase* next); |
407 void writeRegExp(v8::Local<v8::Value>); | 408 void writeRegExp(v8::Local<v8::Value>); |
408 StateBase* writeAndGreyArrayBufferView(v8::Local<v8::Object>, StateBase* nex
t); | 409 StateBase* writeAndGreyArrayBufferView(v8::Local<v8::Object>, StateBase* nex
t); |
409 StateBase* writeArrayBuffer(v8::Local<v8::Value>, StateBase* next); | 410 StateBase* writeArrayBuffer(v8::Local<v8::Value>, StateBase* next); |
410 StateBase* writeTransferredArrayBuffer(v8::Local<v8::Value>, uint32_t index,
StateBase* next); | 411 StateBase* writeTransferredArrayBuffer(v8::Local<v8::Value>, uint32_t index,
StateBase* next); |
411 StateBase* writeTransferredImageBitmap(v8::Local<v8::Value>, uint32_t index,
StateBase* next); | 412 StateBase* writeTransferredImageBitmap(v8::Local<v8::Value>, uint32_t index,
StateBase* next); |
| 413 StateBase* writeTransferredOffscreenCanvas(v8::Local<v8::Value>, uint32_t in
dex, StateBase* next); |
412 StateBase* writeTransferredSharedArrayBuffer(v8::Local<v8::Value>, uint32_t
index, StateBase* next); | 414 StateBase* writeTransferredSharedArrayBuffer(v8::Local<v8::Value>, uint32_t
index, StateBase* next); |
413 static bool shouldSerializeDensely(uint32_t length, uint32_t propertyCount); | 415 static bool shouldSerializeDensely(uint32_t length, uint32_t propertyCount); |
414 | 416 |
415 StateBase* startArrayState(v8::Local<v8::Array>, StateBase* next); | 417 StateBase* startArrayState(v8::Local<v8::Array>, StateBase* next); |
416 StateBase* startObjectState(v8::Local<v8::Object>, StateBase* next); | 418 StateBase* startObjectState(v8::Local<v8::Object>, StateBase* next); |
417 StateBase* startMapState(v8::Local<v8::Map>, StateBase* next); | 419 StateBase* startMapState(v8::Local<v8::Map>, StateBase* next); |
418 StateBase* startSetState(v8::Local<v8::Set>, StateBase* next); | 420 StateBase* startSetState(v8::Local<v8::Set>, StateBase* next); |
419 | 421 |
420 bool appendBlobInfo(const String& uuid, const String& type, unsigned long lo
ng size, int* index); | 422 bool appendBlobInfo(const String& uuid, const String& type, unsigned long lo
ng size, int* index); |
421 bool appendFileInfo(const File*, int* index); | 423 bool appendFileInfo(const File*, int* index); |
(...skipping 16 matching lines...) Expand all Loading... |
438 SerializedScriptValueWriter& m_writer; | 440 SerializedScriptValueWriter& m_writer; |
439 v8::TryCatch& m_tryCatch; | 441 v8::TryCatch& m_tryCatch; |
440 int m_depth; | 442 int m_depth; |
441 Status m_status; | 443 Status m_status; |
442 String m_errorMessage; | 444 String m_errorMessage; |
443 typedef V8ObjectMap<v8::Object, uint32_t> ObjectPool; | 445 typedef V8ObjectMap<v8::Object, uint32_t> ObjectPool; |
444 ObjectPool m_objectPool; | 446 ObjectPool m_objectPool; |
445 ObjectPool m_transferredMessagePorts; | 447 ObjectPool m_transferredMessagePorts; |
446 ObjectPool m_transferredArrayBuffers; | 448 ObjectPool m_transferredArrayBuffers; |
447 ObjectPool m_transferredImageBitmaps; | 449 ObjectPool m_transferredImageBitmaps; |
| 450 ObjectPool m_transferredOffscreenCanvas; |
448 uint32_t m_nextObjectReference; | 451 uint32_t m_nextObjectReference; |
449 WebBlobInfoArray* m_blobInfo; | 452 WebBlobInfoArray* m_blobInfo; |
450 BlobDataHandleMap& m_blobDataHandles; | 453 BlobDataHandleMap& m_blobDataHandles; |
451 }; | 454 }; |
452 | 455 |
453 // Interface used by SerializedScriptValueReader to create objects of composite
types. | 456 // Interface used by SerializedScriptValueReader to create objects of composite
types. |
454 class CORE_EXPORT ScriptValueCompositeCreator { | 457 class CORE_EXPORT ScriptValueCompositeCreator { |
455 STACK_ALLOCATED(); | 458 STACK_ALLOCATED(); |
456 WTF_MAKE_NONCOPYABLE(ScriptValueCompositeCreator); | 459 WTF_MAKE_NONCOPYABLE(ScriptValueCompositeCreator); |
457 public: | 460 public: |
458 ScriptValueCompositeCreator() { } | 461 ScriptValueCompositeCreator() { } |
459 virtual ~ScriptValueCompositeCreator() { } | 462 virtual ~ScriptValueCompositeCreator() { } |
460 | 463 |
461 virtual bool consumeTopOfStack(v8::Local<v8::Value>*) = 0; | 464 virtual bool consumeTopOfStack(v8::Local<v8::Value>*) = 0; |
462 virtual uint32_t objectReferenceCount() = 0; | 465 virtual uint32_t objectReferenceCount() = 0; |
463 virtual void pushObjectReference(const v8::Local<v8::Value>&) = 0; | 466 virtual void pushObjectReference(const v8::Local<v8::Value>&) = 0; |
464 virtual bool tryGetObjectFromObjectReference(uint32_t reference, v8::Local<v
8::Value>*) = 0; | 467 virtual bool tryGetObjectFromObjectReference(uint32_t reference, v8::Local<v
8::Value>*) = 0; |
465 virtual bool tryGetTransferredMessagePort(uint32_t index, v8::Local<v8::Valu
e>*) = 0; | 468 virtual bool tryGetTransferredMessagePort(uint32_t index, v8::Local<v8::Valu
e>*) = 0; |
466 virtual bool tryGetTransferredArrayBuffer(uint32_t index, v8::Local<v8::Valu
e>*) = 0; | 469 virtual bool tryGetTransferredArrayBuffer(uint32_t index, v8::Local<v8::Valu
e>*) = 0; |
467 virtual bool tryGetTransferredImageBitmap(uint32_t index, v8::Local<v8::Valu
e>*) = 0; | 470 virtual bool tryGetTransferredImageBitmap(uint32_t index, v8::Local<v8::Valu
e>*) = 0; |
468 virtual bool tryGetTransferredSharedArrayBuffer(uint32_t index, v8::Local<v8
::Value>*) = 0; | 471 virtual bool tryGetTransferredSharedArrayBuffer(uint32_t index, v8::Local<v8
::Value>*) = 0; |
| 472 virtual bool tryGetTransferredOffscreenCanvas(uint32_t index, uint32_t width
, uint32_t height, uint32_t id, v8::Local<v8::Value>*) = 0; |
469 virtual bool newSparseArray(uint32_t length) = 0; | 473 virtual bool newSparseArray(uint32_t length) = 0; |
470 virtual bool newDenseArray(uint32_t length) = 0; | 474 virtual bool newDenseArray(uint32_t length) = 0; |
471 virtual bool newMap() = 0; | 475 virtual bool newMap() = 0; |
472 virtual bool newSet() = 0; | 476 virtual bool newSet() = 0; |
473 virtual bool newObject() = 0; | 477 virtual bool newObject() = 0; |
474 virtual bool completeObject(uint32_t numProperties, v8::Local<v8::Value>*) =
0; | 478 virtual bool completeObject(uint32_t numProperties, v8::Local<v8::Value>*) =
0; |
475 virtual bool completeSparseArray(uint32_t numProperties, uint32_t length, v8
::Local<v8::Value>*) = 0; | 479 virtual bool completeSparseArray(uint32_t numProperties, uint32_t length, v8
::Local<v8::Value>*) = 0; |
476 virtual bool completeDenseArray(uint32_t numProperties, uint32_t length, v8:
:Local<v8::Value>*) = 0; | 480 virtual bool completeDenseArray(uint32_t numProperties, uint32_t length, v8:
:Local<v8::Value>*) = 0; |
477 virtual bool completeMap(uint32_t length, v8::Local<v8::Value>*) = 0; | 481 virtual bool completeMap(uint32_t length, v8::Local<v8::Value>*) = 0; |
478 virtual bool completeSet(uint32_t length, v8::Local<v8::Value>*) = 0; | 482 virtual bool completeSet(uint32_t length, v8::Local<v8::Value>*) = 0; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 bool newObject() override; | 610 bool newObject() override; |
607 bool completeObject(uint32_t numProperties, v8::Local<v8::Value>*) override; | 611 bool completeObject(uint32_t numProperties, v8::Local<v8::Value>*) override; |
608 bool completeSparseArray(uint32_t numProperties, uint32_t length, v8::Local<
v8::Value>*) override; | 612 bool completeSparseArray(uint32_t numProperties, uint32_t length, v8::Local<
v8::Value>*) override; |
609 bool completeDenseArray(uint32_t numProperties, uint32_t length, v8::Local<v
8::Value>*) override; | 613 bool completeDenseArray(uint32_t numProperties, uint32_t length, v8::Local<v
8::Value>*) override; |
610 bool completeMap(uint32_t length, v8::Local<v8::Value>*) override; | 614 bool completeMap(uint32_t length, v8::Local<v8::Value>*) override; |
611 bool completeSet(uint32_t length, v8::Local<v8::Value>*) override; | 615 bool completeSet(uint32_t length, v8::Local<v8::Value>*) override; |
612 void pushObjectReference(const v8::Local<v8::Value>&) override; | 616 void pushObjectReference(const v8::Local<v8::Value>&) override; |
613 bool tryGetTransferredMessagePort(uint32_t index, v8::Local<v8::Value>*) ove
rride; | 617 bool tryGetTransferredMessagePort(uint32_t index, v8::Local<v8::Value>*) ove
rride; |
614 bool tryGetTransferredArrayBuffer(uint32_t index, v8::Local<v8::Value>*) ove
rride; | 618 bool tryGetTransferredArrayBuffer(uint32_t index, v8::Local<v8::Value>*) ove
rride; |
615 bool tryGetTransferredImageBitmap(uint32_t index, v8::Local<v8::Value>*) ove
rride; | 619 bool tryGetTransferredImageBitmap(uint32_t index, v8::Local<v8::Value>*) ove
rride; |
| 620 bool tryGetTransferredOffscreenCanvas(uint32_t index, uint32_t width, uint32
_t height, uint32_t id, v8::Local<v8::Value>*) override; |
616 bool tryGetTransferredSharedArrayBuffer(uint32_t index, v8::Local<v8::Value>
*) override; | 621 bool tryGetTransferredSharedArrayBuffer(uint32_t index, v8::Local<v8::Value>
*) override; |
617 bool tryGetObjectFromObjectReference(uint32_t reference, v8::Local<v8::Value
>*) override; | 622 bool tryGetObjectFromObjectReference(uint32_t reference, v8::Local<v8::Value
>*) override; |
618 uint32_t objectReferenceCount() override; | 623 uint32_t objectReferenceCount() override; |
619 | 624 |
620 protected: | 625 protected: |
621 SerializedScriptValueReader& reader() { return m_reader; } | 626 SerializedScriptValueReader& reader() { return m_reader; } |
622 virtual bool read(v8::Local<v8::Value>*); | 627 virtual bool read(v8::Local<v8::Value>*); |
623 | 628 |
624 private: | 629 private: |
625 bool initializeObject(v8::Local<v8::Object>, uint32_t numProperties, v8::Loc
al<v8::Value>*); | 630 bool initializeObject(v8::Local<v8::Object>, uint32_t numProperties, v8::Loc
al<v8::Value>*); |
(...skipping 18 matching lines...) Expand all Loading... |
644 ArrayBufferContentsArray* m_arrayBufferContents; | 649 ArrayBufferContentsArray* m_arrayBufferContents; |
645 ImageBitmapContentsArray* m_imageBitmapContents; | 650 ImageBitmapContentsArray* m_imageBitmapContents; |
646 Vector<v8::Local<v8::Value>> m_arrayBuffers; | 651 Vector<v8::Local<v8::Value>> m_arrayBuffers; |
647 Vector<v8::Local<v8::Value>> m_imageBitmaps; | 652 Vector<v8::Local<v8::Value>> m_imageBitmaps; |
648 uint32_t m_version; | 653 uint32_t m_version; |
649 }; | 654 }; |
650 | 655 |
651 } // namespace blink | 656 } // namespace blink |
652 | 657 |
653 #endif // ScriptValueSerializer_h | 658 #endif // ScriptValueSerializer_h |
OLD | NEW |