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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp

Issue 2874203003: Implement serialization/deserialization of geometry interfaces (Closed)
Patch Set: x Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "bindings/core/v8/serialization/V8ScriptValueDeserializer.h" 5 #include "bindings/core/v8/serialization/V8ScriptValueDeserializer.h"
6 6
7 #include "bindings/core/v8/ToV8ForCore.h" 7 #include "bindings/core/v8/ToV8ForCore.h"
8 #include "core/dom/CompositorProxy.h" 8 #include "core/dom/CompositorProxy.h"
9 #include "core/dom/DOMArrayBuffer.h" 9 #include "core/dom/DOMArrayBuffer.h"
10 #include "core/dom/DOMSharedArrayBuffer.h" 10 #include "core/dom/DOMSharedArrayBuffer.h"
11 #include "core/dom/ExecutionContext.h" 11 #include "core/dom/ExecutionContext.h"
12 #include "core/dom/MessagePort.h" 12 #include "core/dom/MessagePort.h"
13 #include "core/fileapi/Blob.h" 13 #include "core/fileapi/Blob.h"
14 #include "core/fileapi/File.h" 14 #include "core/fileapi/File.h"
15 #include "core/fileapi/FileList.h" 15 #include "core/fileapi/FileList.h"
16 #include "core/frame/ImageBitmap.h" 16 #include "core/frame/ImageBitmap.h"
17 #include "core/geometry/DOMMatrix.h"
18 #include "core/geometry/DOMMatrixReadOnly.h"
19 #include "core/geometry/DOMPoint.h"
20 #include "core/geometry/DOMPointInit.h"
21 #include "core/geometry/DOMPointReadOnly.h"
22 #include "core/geometry/DOMQuad.h"
23 #include "core/geometry/DOMRect.h"
24 #include "core/geometry/DOMRectReadOnly.h"
17 #include "core/html/ImageData.h" 25 #include "core/html/ImageData.h"
18 #include "core/offscreencanvas/OffscreenCanvas.h" 26 #include "core/offscreencanvas/OffscreenCanvas.h"
19 #include "platform/RuntimeEnabledFeatures.h" 27 #include "platform/RuntimeEnabledFeatures.h"
20 #include "platform/graphics/CompositorMutableProperties.h" 28 #include "platform/graphics/CompositorMutableProperties.h"
21 #include "platform/wtf/CheckedNumeric.h" 29 #include "platform/wtf/CheckedNumeric.h"
22 #include "platform/wtf/DateMath.h" 30 #include "platform/wtf/DateMath.h"
23 #include "public/platform/WebBlobInfo.h" 31 #include "public/platform/WebBlobInfo.h"
24 32
25 namespace blink { 33 namespace blink {
26 34
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 computed_pixel_length.ValueOrDie() != pixel_length) 298 computed_pixel_length.ValueOrDie() != pixel_length)
291 return nullptr; 299 return nullptr;
292 ImageData* image_data = ImageData::Create(IntSize(width, height)); 300 ImageData* image_data = ImageData::Create(IntSize(width, height));
293 if (!image_data) 301 if (!image_data)
294 return nullptr; 302 return nullptr;
295 DOMUint8ClampedArray* pixel_array = image_data->data(); 303 DOMUint8ClampedArray* pixel_array = image_data->data();
296 DCHECK_EQ(pixel_array->length(), pixel_length); 304 DCHECK_EQ(pixel_array->length(), pixel_length);
297 memcpy(pixel_array->Data(), pixels, pixel_length); 305 memcpy(pixel_array->Data(), pixels, pixel_length);
298 return image_data; 306 return image_data;
299 } 307 }
308 case kDOMPointTag: {
309 double x = 0, y = 0, z = 0, w = 1;
310 if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
311 !ReadDouble(&w))
312 return nullptr;
313 DOMPoint* point = DOMPoint::Create(x, y, z, w);
314 if (!point)
jbroman 2017/05/15 18:00:30 nit: These null checks don't really add much (exce
fserb 2017/05/15 18:27:28 yep. done.
315 return nullptr;
316 return point;
317 }
318 case kDOMPointReadOnlyTag: {
319 double x = 0, y = 0, z = 0, w = 1;
320 if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
321 !ReadDouble(&w))
322 return nullptr;
323 DOMPointReadOnly* point = DOMPointReadOnly::Create(x, y, z, w);
324 if (!point)
325 return nullptr;
326 return point;
327 }
328 case kDOMRectTag: {
329 double x = 0, y = 0, width = 0, height = 0;
330 if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&width) ||
331 !ReadDouble(&height))
332 return nullptr;
333 DOMRect* rect = DOMRect::Create(x, y, width, height);
334 if (!rect)
335 return nullptr;
336 return rect;
337 }
338 case kDOMRectReadOnlyTag: {
339 double x = 0, y = 0, width = 0, height = 0;
340 if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&width) ||
341 !ReadDouble(&height))
342 return nullptr;
343 DOMRectReadOnly* rect = DOMRectReadOnly::Create(x, y, width, height);
344 if (!rect)
345 return nullptr;
346 return rect;
347 }
348 case kDOMQuadTag: {
349 DOMPointInit pointInits[4];
350 for (DOMPointInit& init : pointInits) {
351 double x = 0, y = 0, z = 0, w = 0;
352 if (!ReadDouble(&x) || !ReadDouble(&y) || !ReadDouble(&z) ||
353 !ReadDouble(&w))
354 return nullptr;
355 init.setX(x);
356 init.setY(y);
357 init.setZ(z);
358 init.setW(w);
359 }
360 DOMQuad* quad = DOMQuad::Create(pointInits[0], pointInits[1],
361 pointInits[2], pointInits[3]);
362 if (!quad)
363 return nullptr;
364 return quad;
365 }
366 case kDOMMatrix2DTag: {
367 double values[6];
368 for (double& d : values) {
369 if (!ReadDouble(&d))
370 return nullptr;
371 }
372 DOMMatrix* matrix =
373 DOMMatrix::CreateForSerialization(values, WTF_ARRAY_LENGTH(values));
374 if (!matrix)
375 return nullptr;
376 return matrix;
377 }
378 case kDOMMatrix2DReadOnlyTag: {
379 double values[6];
380 for (double& d : values) {
381 if (!ReadDouble(&d))
382 return nullptr;
383 }
384 DOMMatrixReadOnly* matrix = DOMMatrixReadOnly::CreateForSerialization(
385 values, WTF_ARRAY_LENGTH(values));
386 if (!matrix)
387 return nullptr;
388 return matrix;
389 }
390 case kDOMMatrixTag: {
391 double values[16];
392 for (double& d : values) {
393 if (!ReadDouble(&d))
394 return nullptr;
395 }
396 DOMMatrix* matrix =
397 DOMMatrix::CreateForSerialization(values, WTF_ARRAY_LENGTH(values));
398 if (!matrix)
399 return nullptr;
400 return matrix;
401 }
402 case kDOMMatrixReadOnlyTag: {
403 double values[16];
404 for (double& d : values) {
405 if (!ReadDouble(&d))
406 return nullptr;
407 }
408 DOMMatrixReadOnly* matrix = DOMMatrixReadOnly::CreateForSerialization(
409 values, WTF_ARRAY_LENGTH(values));
410 if (!matrix)
411 return nullptr;
412 return matrix;
413 }
300 case kMessagePortTag: { 414 case kMessagePortTag: {
301 uint32_t index = 0; 415 uint32_t index = 0;
302 if (!ReadUint32(&index) || !transferred_message_ports_ || 416 if (!ReadUint32(&index) || !transferred_message_ports_ ||
303 index >= transferred_message_ports_->size()) 417 index >= transferred_message_ports_->size())
304 return nullptr; 418 return nullptr;
305 return (*transferred_message_ports_)[index].Get(); 419 return (*transferred_message_ports_)[index].Get();
306 } 420 }
307 case kOffscreenCanvasTransferTag: { 421 case kOffscreenCanvasTransferTag: {
308 uint32_t width = 0, height = 0, canvas_id = 0, client_id = 0, sink_id = 0; 422 uint32_t width = 0, height = 0, canvas_id = 0, client_id = 0, sink_id = 0;
309 if (!ReadUint32(&width) || !ReadUint32(&height) || 423 if (!ReadUint32(&width) || !ReadUint32(&height) ||
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 uint32_t id) { 528 uint32_t id) {
415 if (id < serialized_script_value_->WasmModules().size()) { 529 if (id < serialized_script_value_->WasmModules().size()) {
416 return v8::WasmCompiledModule::FromTransferrableModule( 530 return v8::WasmCompiledModule::FromTransferrableModule(
417 isolate, serialized_script_value_->WasmModules()[id]); 531 isolate, serialized_script_value_->WasmModules()[id]);
418 } 532 }
419 CHECK(serialized_script_value_->WasmModules().IsEmpty()); 533 CHECK(serialized_script_value_->WasmModules().IsEmpty());
420 return v8::MaybeLocal<v8::WasmCompiledModule>(); 534 return v8::MaybeLocal<v8::WasmCompiledModule>();
421 } 535 }
422 536
423 } // namespace blink 537 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698