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

Unified Diff: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp

Issue 2695343002: Handle OffscreenCanvas.convertToBlob exceptions: EncodingError & InvalidStateError (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
index a4b809f4aab55537f7650293aad7220b5fdf560f..99d80457fbc82d9b94c6922e0466eafe9ec50180 100644
--- a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
+++ b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
@@ -4,6 +4,7 @@
#include "core/html/canvas/CanvasAsyncBlobCreator.h"
+#include "core/dom/DOMException.h"
#include "core/dom/Document.h"
#include "core/dom/TaskRunnerHelper.h"
#include "core/fileapi/Blob.h"
@@ -478,8 +479,8 @@ void CanvasAsyncBlobCreator::createNullAndReturnResult() {
WTF::bind(&BlobCallback::handleEvent,
wrapPersistent(m_callback.get()), nullptr));
} else {
- Blob* blob = nullptr;
- m_scriptPromiseResolver->reject(blob);
+ m_scriptPromiseResolver->reject(DOMException::create(
+ EncodingError, "Encoding of the source image has failed."));
}
// Avoid unwanted retention, see dispose().
dispose();
@@ -492,10 +493,10 @@ void CanvasAsyncBlobCreator::encodeImageOnEncoderThread(double quality) {
if (!ImageDataBuffer(m_size, m_data->data())
.encodeImage("image/webp", quality, m_encodedImage.get())) {
m_parentFrameTaskRunner->get(TaskType::CanvasBlobSerialization)
- ->postTask(BLINK_FROM_HERE,
- crossThreadBind(&BlobCallback::handleEvent,
- wrapCrossThreadPersistent(m_callback.get()),
- nullptr));
+ ->postTask(
+ BLINK_FROM_HERE,
+ crossThreadBind(&CanvasAsyncBlobCreator::createNullAndReturnResult,
+ wrapCrossThreadPersistent(this)));
return;
}

Powered by Google App Engine
This is Rietveld 408576698