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

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

Issue 1964183004: Revert of Move DOMArrayBuffer, DOMArrayBufferViews and DataView to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 : public GarbageCollectedFinalized<Canv asAsyncBlobCreator> { 20 class CORE_EXPORT CanvasAsyncBlobCreator
21 : public RefCounted<CanvasAsyncBlobCreator> {
21 public: 22 public:
22 static CanvasAsyncBlobCreator* create(DOMUint8ClampedArray* unpremultipliedR GBAImageData, const String& mimeType, const IntSize&, BlobCallback*); 23 static PassRefPtr<CanvasAsyncBlobCreator> create(PassRefPtr<DOMUint8ClampedA rray> unpremultipliedRGBAImageData, const String& mimeType, const IntSize&, Blob Callback*);
23 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali ty = 0.0); 24 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali ty = 0.0);
24 virtual ~CanvasAsyncBlobCreator(); 25 virtual ~CanvasAsyncBlobCreator();
25 26
26 DEFINE_INLINE_VIRTUAL_TRACE()
27 {
28 visitor->trace(m_data);
29 }
30
31 private: 27 private:
32 CanvasAsyncBlobCreator(DOMUint8ClampedArray* data, const String& mimeType, c onst IntSize&, BlobCallback*); 28 CanvasAsyncBlobCreator(PassRefPtr<DOMUint8ClampedArray> data, const String& mimeType, const IntSize&, BlobCallback*);
33 void scheduleCreateBlobAndCallOnMainThread(); 29 void scheduleCreateBlobAndCallOnMainThread();
34 void scheduleCreateNullptrAndCallOnMainThread(); 30 void scheduleCreateNullptrAndCallOnMainThread();
35 31
36 OwnPtr<PNGImageEncoderState> m_pngEncoderState; 32 OwnPtr<PNGImageEncoderState> m_pngEncoderState;
37 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState; 33 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState;
38 Member<DOMUint8ClampedArray> m_data; 34 RefPtr<DOMUint8ClampedArray> m_data;
39 OwnPtr<Vector<unsigned char>> m_encodedImage; 35 OwnPtr<Vector<unsigned char>> m_encodedImage;
40 int m_numRowsCompleted; 36 int m_numRowsCompleted;
41 37
42 const IntSize m_size; 38 const IntSize m_size;
43 size_t m_pixelRowStride; 39 size_t m_pixelRowStride;
44 const String m_mimeType; 40 const String m_mimeType;
45 CrossThreadPersistent<BlobCallback> m_callback; 41 CrossThreadPersistent<BlobCallback> m_callback;
46 42
47 SelfKeepAlive<CanvasAsyncBlobCreator> m_keepAlive; 43 RefPtr<CanvasAsyncBlobCreator> m_selfRef;
48 void clearSelfReference(); 44 void clearSelfReference();
49 45
50 void initiatePngEncoding(double deadlineSeconds); 46 void initiatePngEncoding(double deadlineSeconds);
51 void scheduleIdleEncodeRowsPng(); 47 void scheduleIdleEncodeRowsPng();
52 void idleEncodeRowsPng(double deadlineSeconds); 48 void idleEncodeRowsPng(double deadlineSeconds);
53 49
54 void initiateJpegEncoding(const double& quality); 50 void initiateJpegEncoding(const double& quality);
55 51
56 void createBlobAndCall(); 52 void createBlobAndCall();
57 53
58 void encodeImageOnEncoderThread(double quality); 54 void encodeImageOnEncoderThread(double quality);
59 }; 55 };
60 56
61 } // namespace blink 57 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698