Index: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h |
diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h |
index 178a267f26468c7b492235b1cf632cfe44d4cc1a..ca2fff69083b94b0cb2c03e108be4bf78c11d766 100644 |
--- a/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h |
+++ b/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
#include "core/CoreExport.h" |
#include "core/dom/DOMTypedArray.h" |
#include "core/fileapi/BlobCallback.h" |
@@ -27,10 +28,16 @@ class CORE_EXPORT CanvasAsyncBlobCreator |
const String& mimeType, |
const IntSize&, |
BlobCallback*, |
- double, |
- Document&); |
- void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, |
- const double& quality = 0.0); |
+ double startTime, |
+ Document*); |
+ static CanvasAsyncBlobCreator* create( |
+ DOMUint8ClampedArray* unpremultipliedRGBAImageData, |
+ const String& mimeType, |
+ const IntSize&, |
+ double startTime, |
+ Document*, |
+ ScriptPromiseResolver*); |
+ void scheduleAsyncBlobCreation(const double& quality); |
virtual ~CanvasAsyncBlobCreator(); |
enum MimeType { |
MimeTypePng, |
@@ -45,11 +52,18 @@ class CORE_EXPORT CanvasAsyncBlobCreator |
IdleTaskStarted, |
IdleTaskCompleted, |
IdleTaskFailed, |
- IdleTaskSwitchedToMainThreadTask, |
+ IdleTaskSwitchedToImmediateTask, |
IdleTaskNotSupported, // Idle tasks are not implemented for some image |
// types |
IdleTaskCount, // Should not be seen in production |
}; |
+ |
+ enum ToBlobFunctionType { |
+ HTMLCanvasToBlobCallback, |
+ OffscreenCanvasToBlobPromise, |
+ NumberOfToBlobFunctionTypes |
+ }; |
+ |
// Methods are virtual for mocking in unit tests |
virtual void signalTaskSwitchInStartTimeoutEventForTesting() {} |
virtual void signalTaskSwitchInCompleteTimeoutEventForTesting() {} |
@@ -62,7 +76,8 @@ class CORE_EXPORT CanvasAsyncBlobCreator |
const IntSize&, |
BlobCallback*, |
double, |
- Document&); |
+ Document*, |
+ ScriptPromiseResolver*); |
// Methods are virtual for unit testing |
virtual void scheduleInitiatePngEncoding(); |
virtual void scheduleInitiateJpegEncoding(const double&); |
@@ -72,8 +87,8 @@ class CORE_EXPORT CanvasAsyncBlobCreator |
std::unique_ptr<WTF::Closure>, |
double delayMs); |
virtual void signalAlternativeCodePathFinishedForTesting() {} |
- virtual void createBlobAndInvokeCallback(); |
- virtual void createNullAndInvokeCallback(); |
+ virtual void createBlobAndReturnResult(); |
+ virtual void createNullAndReturnResult(); |
void initiatePngEncoding(double deadlineSeconds); |
void initiateJpegEncoding(const double& quality, double deadlineSeconds); |
@@ -94,12 +109,21 @@ class CORE_EXPORT CanvasAsyncBlobCreator |
const IntSize m_size; |
size_t m_pixelRowStride; |
const MimeType m_mimeType; |
- Member<BlobCallback> m_callback; |
double m_startTime; |
double m_scheduleInitiateStartTime; |
double m_elapsedTime; |
+ |
+ ToBlobFunctionType m_functionType; |
+ |
+ // Used when CanvasAsyncBlobCreator runs on main thread only |
Member<ParentFrameTaskRunners> m_parentFrameTaskRunner; |
+ // Used for HTMLCanvasElement only |
+ Member<BlobCallback> m_callback; |
+ |
+ // Used for OffscreenCanvas only |
+ Member<ScriptPromiseResolver> m_scriptPromiseResolver; |
+ |
// PNG |
bool initializePngStruct(); |
void |