| Index: third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp
|
| index 850d5a02f93ce15f698b6bbfc0acb2bb1a9ac96a..f4002e686521ac523787ab51fa4450928c38b089 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp
|
| @@ -14,6 +14,14 @@
|
| #include "core/fileapi/File.h"
|
| #include "core/fileapi/FileList.h"
|
| #include "core/frame/ImageBitmap.h"
|
| +#include "core/geometry/DOMMatrix.h"
|
| +#include "core/geometry/DOMMatrixReadOnly.h"
|
| +#include "core/geometry/DOMPoint.h"
|
| +#include "core/geometry/DOMPointInit.h"
|
| +#include "core/geometry/DOMPointReadOnly.h"
|
| +#include "core/geometry/DOMQuad.h"
|
| +#include "core/geometry/DOMRect.h"
|
| +#include "core/geometry/DOMRectReadOnly.h"
|
| #include "core/html/ImageData.h"
|
| #include "core/offscreencanvas/OffscreenCanvas.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| @@ -286,6 +294,85 @@ ScriptWrappable* V8ScriptValueDeserializer::ReadDOMObject(
|
| memcpy(pixel_array->Data(), pixels, pixel_length);
|
| return image_data;
|
| }
|
| + case kDOMPointTag: {
|
| + double x = 0, y = 0, z = 0, w = 1;
|
| + if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
|
| + !ReadDouble(&w))
|
| + return nullptr;
|
| + return DOMPoint::Create(x, y, z, w);
|
| + }
|
| + case kDOMPointReadOnlyTag: {
|
| + double x = 0, y = 0, z = 0, w = 1;
|
| + if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
|
| + !ReadDouble(&w))
|
| + return nullptr;
|
| + return DOMPointReadOnly::Create(x, y, z, w);
|
| + }
|
| + case kDOMRectTag: {
|
| + double x = 0, y = 0, width = 0, height = 0;
|
| + if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&width) ||
|
| + !ReadDouble(&height))
|
| + return nullptr;
|
| + return DOMRect::Create(x, y, width, height);
|
| + }
|
| + case kDOMRectReadOnlyTag: {
|
| + double x = 0, y = 0, width = 0, height = 0;
|
| + if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&width) ||
|
| + !ReadDouble(&height))
|
| + return nullptr;
|
| + return DOMRectReadOnly::Create(x, y, width, height);
|
| + }
|
| + case kDOMQuadTag: {
|
| + DOMPointInit pointInits[4];
|
| + for (DOMPointInit& init : pointInits) {
|
| + double x = 0, y = 0, z = 0, w = 0;
|
| + if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
|
| + !ReadDouble(&w))
|
| + return nullptr;
|
| + init.setX(x);
|
| + init.setY(y);
|
| + init.setZ(z);
|
| + init.setW(w);
|
| + }
|
| + return DOMQuad::Create(pointInits[0], pointInits[1], pointInits[2],
|
| + pointInits[3]);
|
| + }
|
| + case kDOMMatrix2DTag: {
|
| + double values[6];
|
| + for (double& d : values) {
|
| + if (!ReadDouble(&d))
|
| + return nullptr;
|
| + }
|
| + return DOMMatrix::CreateForSerialization(values,
|
| + WTF_ARRAY_LENGTH(values));
|
| + }
|
| + case kDOMMatrix2DReadOnlyTag: {
|
| + double values[6];
|
| + for (double& d : values) {
|
| + if (!ReadDouble(&d))
|
| + return nullptr;
|
| + }
|
| + return DOMMatrixReadOnly::CreateForSerialization(
|
| + values, WTF_ARRAY_LENGTH(values));
|
| + }
|
| + case kDOMMatrixTag: {
|
| + double values[16];
|
| + for (double& d : values) {
|
| + if (!ReadDouble(&d))
|
| + return nullptr;
|
| + }
|
| + return DOMMatrix::CreateForSerialization(values,
|
| + WTF_ARRAY_LENGTH(values));
|
| + }
|
| + case kDOMMatrixReadOnlyTag: {
|
| + double values[16];
|
| + for (double& d : values) {
|
| + if (!ReadDouble(&d))
|
| + return nullptr;
|
| + }
|
| + return DOMMatrixReadOnly::CreateForSerialization(
|
| + values, WTF_ARRAY_LENGTH(values));
|
| + }
|
| case kMessagePortTag: {
|
| uint32_t index = 0;
|
| if (!ReadUint32(&index) || !transferred_message_ports_ ||
|
|
|