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 94e2e0df8fbb44ac5f534c4f86e2078149cee712..29ab92b1a292867027d19017d55ee5c33b329f90 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueDeserializer.cpp |
@@ -81,6 +81,13 @@ void V8ScriptValueDeserializer::transfer() |
} |
} |
} |
+ |
+ // Transfer image bitmaps. |
+ if (auto* imageBitmapContents = m_serializedScriptValue->getImageBitmapContentsArray()) { |
+ m_transferredImageBitmaps.reserveInitialCapacity(imageBitmapContents->size()); |
+ for (const auto& image : *imageBitmapContents) |
+ m_transferredImageBitmaps.append(ImageBitmap::create(image)); |
+ } |
} |
bool V8ScriptValueDeserializer::readUTF8String(String* string) |
@@ -113,6 +120,12 @@ ScriptWrappable* V8ScriptValueDeserializer::readDOMObject(SerializationTag tag) |
return nullptr; |
return ImageBitmap::create(pixels, width, height, isPremultiplied, originClean); |
} |
+ case ImageBitmapTransferTag: { |
+ uint32_t index = 0; |
+ if (!readUint32(&index) || index >= m_transferredImageBitmaps.size()) |
+ return nullptr; |
+ return m_transferredImageBitmaps[index].get(); |
+ } |
case ImageDataTag: { |
uint32_t width = 0, height = 0, pixelLength = 0; |
const void* pixels = nullptr; |