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

Unified Diff: third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp

Issue 2541683002: Make ImageBitmap transfers work in cases that require serialization (Closed)
Patch Set: Created 4 years, 1 month 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/SerializedScriptValue.cpp
diff --git a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
index 87116cda10a25f213fbe150663baee1defe7f8ad..d30e670af6fcb8e58dfac002a7f9604a92c95e9e 100644
--- a/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
+++ b/third_party/WebKit/Source/bindings/core/v8/SerializedScriptValue.cpp
@@ -208,19 +208,20 @@ static void accumulateArrayBuffersForAllWorlds(
}
}
-void SerializedScriptValue::transferImageBitmaps(
+std::unique_ptr<ImageBitmapContentsArray>
+SerializedScriptValue::transferImageBitmapContents(
v8::Isolate* isolate,
const ImageBitmapArray& imageBitmaps,
ExceptionState& exceptionState) {
if (!imageBitmaps.size())
- return;
+ return nullptr;
for (size_t i = 0; i < imageBitmaps.size(); ++i) {
if (imageBitmaps[i]->isNeutered()) {
exceptionState.throwDOMException(
DataCloneError, "ImageBitmap at index " + String::number(i) +
" is already detached.");
- return;
+ return nullptr;
}
}
@@ -233,6 +234,15 @@ void SerializedScriptValue::transferImageBitmaps(
visited.add(imageBitmaps[i]);
contents->append(imageBitmaps[i]->transfer());
}
+ return contents;
+}
+
+void SerializedScriptValue::transferImageBitmaps(
+ v8::Isolate* isolate,
+ const ImageBitmapArray& imageBitmaps,
+ ExceptionState& exceptionState) {
+ std::unique_ptr<ImageBitmapContentsArray> contents =
+ transferImageBitmapContents(isolate, imageBitmaps, exceptionState);
m_imageBitmapContentsArray = std::move(contents);
}

Powered by Google App Engine
This is Rietveld 408576698