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

Side by Side Diff: third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.h

Issue 1878463002: Move DOMArrayBuffer, DOMArrayBufferViews and DataView to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tidy Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "core/CoreExport.h" 5 #include "core/CoreExport.h"
6 #include "core/dom/DOMTypedArray.h" 6 #include "core/dom/DOMTypedArray.h"
7 #include "core/fileapi/BlobCallback.h" 7 #include "core/fileapi/BlobCallback.h"
8 #include "platform/geometry/IntSize.h" 8 #include "platform/geometry/IntSize.h"
9 #include "platform/heap/Handle.h" 9 #include "platform/heap/Handle.h"
10 #include "wtf/OwnPtr.h" 10 #include "wtf/OwnPtr.h"
11 #include "wtf/PassOwnPtr.h" 11 #include "wtf/PassOwnPtr.h"
12 #include "wtf/Vector.h" 12 #include "wtf/Vector.h"
13 #include "wtf/text/WTFString.h" 13 #include "wtf/text/WTFString.h"
14 14
15 namespace blink { 15 namespace blink {
16 16
17 class PNGImageEncoderState; 17 class PNGImageEncoderState;
18 class JPEGImageEncoderState; 18 class JPEGImageEncoderState;
19 19
20 class CORE_EXPORT CanvasAsyncBlobCreator 20 class CORE_EXPORT CanvasAsyncBlobCreator : public GarbageCollectedFinalized<Canv asAsyncBlobCreator> {
21 : public RefCounted<CanvasAsyncBlobCreator> {
22 public: 21 public:
23 static PassRefPtr<CanvasAsyncBlobCreator> create(PassRefPtr<DOMUint8ClampedA rray> unpremultipliedRGBAImageData, const String& mimeType, const IntSize&, Blob Callback*); 22 static CanvasAsyncBlobCreator* create(DOMUint8ClampedArray* unpremultipliedR GBAImageData, const String& mimeType, const IntSize&, BlobCallback*);
24 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali ty = 0.0); 23 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali ty = 0.0);
25 virtual ~CanvasAsyncBlobCreator(); 24 virtual ~CanvasAsyncBlobCreator();
26 25
26 DEFINE_INLINE_VIRTUAL_TRACE()
27 {
28 visitor->trace(m_data);
29 }
30
27 private: 31 private:
28 CanvasAsyncBlobCreator(PassRefPtr<DOMUint8ClampedArray> data, const String& mimeType, const IntSize&, BlobCallback*); 32 CanvasAsyncBlobCreator(DOMUint8ClampedArray* data, const String& mimeType, c onst IntSize&, BlobCallback*);
29 void scheduleCreateBlobAndCallOnMainThread(); 33 void scheduleCreateBlobAndCallOnMainThread();
30 void scheduleCreateNullptrAndCallOnMainThread(); 34 void scheduleCreateNullptrAndCallOnMainThread();
31 35
32 OwnPtr<PNGImageEncoderState> m_pngEncoderState; 36 OwnPtr<PNGImageEncoderState> m_pngEncoderState;
33 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState; 37 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState;
34 RefPtr<DOMUint8ClampedArray> m_data; 38 Member<DOMUint8ClampedArray> m_data;
35 OwnPtr<Vector<unsigned char>> m_encodedImage; 39 OwnPtr<Vector<unsigned char>> m_encodedImage;
36 int m_numRowsCompleted; 40 int m_numRowsCompleted;
37 41
38 const IntSize m_size; 42 const IntSize m_size;
39 size_t m_pixelRowStride; 43 size_t m_pixelRowStride;
40 const String m_mimeType; 44 const String m_mimeType;
41 CrossThreadPersistent<BlobCallback> m_callback; 45 CrossThreadPersistent<BlobCallback> m_callback;
42 46
43 RefPtr<CanvasAsyncBlobCreator> m_selfRef; 47 SelfKeepAlive<CanvasAsyncBlobCreator> m_keepAlive;
44 void clearSelfReference(); 48 void clearSelfReference();
45 49
46 void initiatePngEncoding(double deadlineSeconds); 50 void initiatePngEncoding(double deadlineSeconds);
47 void scheduleIdleEncodeRowsPng(); 51 void scheduleIdleEncodeRowsPng();
48 void idleEncodeRowsPng(double deadlineSeconds); 52 void idleEncodeRowsPng(double deadlineSeconds);
49 53
50 void initiateJpegEncoding(const double& quality); 54 void initiateJpegEncoding(const double& quality);
51 55
52 void createBlobAndCall(); 56 void createBlobAndCall();
53 57
54 void encodeImageOnEncoderThread(double quality); 58 void encodeImageOnEncoderThread(double quality);
55 }; 59 };
56 60
57 } // namespace blink 61 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698