OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/html/canvas/CanvasAsyncBlobCreator.h" | 5 #include "core/html/canvas/CanvasAsyncBlobCreator.h" |
6 | 6 |
7 #include "core/html/ImageData.h" | 7 #include "core/html/ImageData.h" |
8 #include "core/testing/DummyPageHolder.h" | 8 #include "core/testing/DummyPageHolder.h" |
9 #include "platform/testing/UnitTestHelpers.h" | 9 #include "platform/testing/UnitTestHelpers.h" |
10 #include "public/platform/Platform.h" | 10 #include "public/platform/Platform.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 class MockCanvasAsyncBlobCreatorWithoutStartPng | 60 class MockCanvasAsyncBlobCreatorWithoutStartPng |
61 : public MockCanvasAsyncBlobCreator { | 61 : public MockCanvasAsyncBlobCreator { |
62 public: | 62 public: |
63 MockCanvasAsyncBlobCreatorWithoutStartPng(DOMUint8ClampedArray* data, | 63 MockCanvasAsyncBlobCreatorWithoutStartPng(DOMUint8ClampedArray* data, |
64 const IntSize& size, | 64 const IntSize& size, |
65 Document& document) | 65 Document& document) |
66 : MockCanvasAsyncBlobCreator(data, size, MimeTypePng, document) {} | 66 : MockCanvasAsyncBlobCreator(data, size, MimeTypePng, document) {} |
67 | 67 |
68 protected: | 68 protected: |
69 void scheduleInitiatePngEncoding() override { | 69 void scheduleInitiatePngEncoding() override { |
70 // Deliberately make scheduleInitiatePngEncoding do nothing so that idle tas
k never starts | 70 // Deliberately make scheduleInitiatePngEncoding do nothing so that idle |
| 71 // task never starts |
71 } | 72 } |
72 }; | 73 }; |
73 | 74 |
74 //============================================================================== | 75 //============================================================================== |
75 | 76 |
76 class MockCanvasAsyncBlobCreatorWithoutCompletePng | 77 class MockCanvasAsyncBlobCreatorWithoutCompletePng |
77 : public MockCanvasAsyncBlobCreator { | 78 : public MockCanvasAsyncBlobCreator { |
78 public: | 79 public: |
79 MockCanvasAsyncBlobCreatorWithoutCompletePng(DOMUint8ClampedArray* data, | 80 MockCanvasAsyncBlobCreatorWithoutCompletePng(DOMUint8ClampedArray* data, |
80 const IntSize& size, | 81 const IntSize& size, |
81 Document& document) | 82 Document& document) |
82 : MockCanvasAsyncBlobCreator(data, size, MimeTypePng, document) {} | 83 : MockCanvasAsyncBlobCreator(data, size, MimeTypePng, document) {} |
83 | 84 |
84 protected: | 85 protected: |
85 void scheduleInitiatePngEncoding() override { | 86 void scheduleInitiatePngEncoding() override { |
86 Platform::current()->mainThread()->getWebTaskRunner()->postTask( | 87 Platform::current()->mainThread()->getWebTaskRunner()->postTask( |
87 BLINK_FROM_HERE, | 88 BLINK_FROM_HERE, |
88 WTF::bind( | 89 WTF::bind( |
89 &MockCanvasAsyncBlobCreatorWithoutCompletePng::initiatePngEncoding, | 90 &MockCanvasAsyncBlobCreatorWithoutCompletePng::initiatePngEncoding, |
90 wrapPersistent(this), std::numeric_limits<double>::max())); | 91 wrapPersistent(this), std::numeric_limits<double>::max())); |
91 } | 92 } |
92 | 93 |
93 void idleEncodeRowsPng(double deadlineSeconds) override { | 94 void idleEncodeRowsPng(double deadlineSeconds) override { |
94 // Deliberately make idleEncodeRowsPng do nothing so that idle task never co
mpletes | 95 // Deliberately make idleEncodeRowsPng do nothing so that idle task never |
| 96 // completes |
95 } | 97 } |
96 }; | 98 }; |
97 | 99 |
98 //============================================================================== | 100 //============================================================================== |
99 //=================================JPEG========================================= | 101 //=================================JPEG========================================= |
100 //============================================================================== | 102 //============================================================================== |
101 | 103 |
102 class MockCanvasAsyncBlobCreatorWithoutStartJpeg | 104 class MockCanvasAsyncBlobCreatorWithoutStartJpeg |
103 : public MockCanvasAsyncBlobCreator { | 105 : public MockCanvasAsyncBlobCreator { |
104 public: | 106 public: |
105 MockCanvasAsyncBlobCreatorWithoutStartJpeg(DOMUint8ClampedArray* data, | 107 MockCanvasAsyncBlobCreatorWithoutStartJpeg(DOMUint8ClampedArray* data, |
106 const IntSize& size, | 108 const IntSize& size, |
107 Document& document) | 109 Document& document) |
108 : MockCanvasAsyncBlobCreator(data, size, MimeTypeJpeg, document) {} | 110 : MockCanvasAsyncBlobCreator(data, size, MimeTypeJpeg, document) {} |
109 | 111 |
110 protected: | 112 protected: |
111 void scheduleInitiateJpegEncoding(const double&) override { | 113 void scheduleInitiateJpegEncoding(const double&) override { |
112 // Deliberately make scheduleInitiateJpegEncoding do nothing so that idle ta
sk never starts | 114 // Deliberately make scheduleInitiateJpegEncoding do nothing so that idle |
| 115 // task never starts |
113 } | 116 } |
114 }; | 117 }; |
115 | 118 |
116 //============================================================================== | 119 //============================================================================== |
117 | 120 |
118 class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg | 121 class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg |
119 : public MockCanvasAsyncBlobCreator { | 122 : public MockCanvasAsyncBlobCreator { |
120 public: | 123 public: |
121 MockCanvasAsyncBlobCreatorWithoutCompleteJpeg(DOMUint8ClampedArray* data, | 124 MockCanvasAsyncBlobCreatorWithoutCompleteJpeg(DOMUint8ClampedArray* data, |
122 const IntSize& size, | 125 const IntSize& size, |
123 Document& document) | 126 Document& document) |
124 : MockCanvasAsyncBlobCreator(data, size, MimeTypeJpeg, document) {} | 127 : MockCanvasAsyncBlobCreator(data, size, MimeTypeJpeg, document) {} |
125 | 128 |
126 protected: | 129 protected: |
127 void scheduleInitiateJpegEncoding(const double& quality) override { | 130 void scheduleInitiateJpegEncoding(const double& quality) override { |
128 Platform::current()->mainThread()->getWebTaskRunner()->postTask( | 131 Platform::current()->mainThread()->getWebTaskRunner()->postTask( |
129 BLINK_FROM_HERE, | 132 BLINK_FROM_HERE, |
130 WTF::bind(&MockCanvasAsyncBlobCreatorWithoutCompleteJpeg:: | 133 WTF::bind(&MockCanvasAsyncBlobCreatorWithoutCompleteJpeg:: |
131 initiateJpegEncoding, | 134 initiateJpegEncoding, |
132 wrapPersistent(this), quality, | 135 wrapPersistent(this), quality, |
133 std::numeric_limits<double>::max())); | 136 std::numeric_limits<double>::max())); |
134 } | 137 } |
135 | 138 |
136 void idleEncodeRowsJpeg(double deadlineSeconds) override { | 139 void idleEncodeRowsJpeg(double deadlineSeconds) override { |
137 // Deliberately make idleEncodeRowsJpeg do nothing so that idle task never c
ompletes | 140 // Deliberately make idleEncodeRowsJpeg do nothing so that idle task never |
| 141 // completes |
138 } | 142 } |
139 }; | 143 }; |
140 | 144 |
141 //============================================================================== | 145 //============================================================================== |
142 | 146 |
143 class CanvasAsyncBlobCreatorTest : public ::testing::Test { | 147 class CanvasAsyncBlobCreatorTest : public ::testing::Test { |
144 public: | 148 public: |
145 // Png unit tests | 149 // Png unit tests |
146 void prepareMockCanvasAsyncBlobCreatorWithoutStartPng(); | 150 void prepareMockCanvasAsyncBlobCreatorWithoutStartPng(); |
147 void prepareMockCanvasAsyncBlobCreatorWithoutCompletePng(); | 151 void prepareMockCanvasAsyncBlobCreatorWithoutCompletePng(); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 ImageData* imageData = ImageData::create(testSize); | 189 ImageData* imageData = ImageData::create(testSize); |
186 | 190 |
187 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompletePng( | 191 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompletePng( |
188 imageData->data(), testSize, document()); | 192 imageData->data(), testSize, document()); |
189 } | 193 } |
190 | 194 |
191 void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorFailPng() { | 195 void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorFailPng() { |
192 IntSize testSize(0, 0); | 196 IntSize testSize(0, 0); |
193 ImageData* imageData = ImageData::create(testSize); | 197 ImageData* imageData = ImageData::create(testSize); |
194 | 198 |
195 // We reuse the class MockCanvasAsyncBlobCreatorWithoutCompletePng because thi
s | 199 // We reuse the class MockCanvasAsyncBlobCreatorWithoutCompletePng because |
196 // test case is expected to fail at initialization step before completion. | 200 // this test case is expected to fail at initialization step before |
| 201 // completion. |
197 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompletePng( | 202 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompletePng( |
198 imageData->data(), testSize, document()); | 203 imageData->data(), testSize, document()); |
199 } | 204 } |
200 | 205 |
201 void CanvasAsyncBlobCreatorTest:: | 206 void CanvasAsyncBlobCreatorTest:: |
202 prepareMockCanvasAsyncBlobCreatorWithoutStartJpeg() { | 207 prepareMockCanvasAsyncBlobCreatorWithoutStartJpeg() { |
203 IntSize testSize(20, 20); | 208 IntSize testSize(20, 20); |
204 ImageData* imageData = ImageData::create(testSize); | 209 ImageData* imageData = ImageData::create(testSize); |
205 | 210 |
206 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutStartJpeg( | 211 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutStartJpeg( |
207 imageData->data(), testSize, document()); | 212 imageData->data(), testSize, document()); |
208 } | 213 } |
209 | 214 |
210 void CanvasAsyncBlobCreatorTest:: | 215 void CanvasAsyncBlobCreatorTest:: |
211 prepareMockCanvasAsyncBlobCreatorWithoutCompleteJpeg() { | 216 prepareMockCanvasAsyncBlobCreatorWithoutCompleteJpeg() { |
212 IntSize testSize(20, 20); | 217 IntSize testSize(20, 20); |
213 ImageData* imageData = ImageData::create(testSize); | 218 ImageData* imageData = ImageData::create(testSize); |
214 | 219 |
215 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompleteJpeg( | 220 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompleteJpeg( |
216 imageData->data(), testSize, document()); | 221 imageData->data(), testSize, document()); |
217 } | 222 } |
218 | 223 |
219 void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorFailJpeg() { | 224 void CanvasAsyncBlobCreatorTest::prepareMockCanvasAsyncBlobCreatorFailJpeg() { |
220 IntSize testSize(0, 0); | 225 IntSize testSize(0, 0); |
221 ImageData* imageData = ImageData::create(testSize); | 226 ImageData* imageData = ImageData::create(testSize); |
222 | 227 |
223 // We reuse the class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg because th
is | 228 // We reuse the class MockCanvasAsyncBlobCreatorWithoutCompleteJpeg because |
224 // test case is expected to fail at initialization step before completion. | 229 // this test case is expected to fail at initialization step before |
| 230 // completion. |
225 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompleteJpeg( | 231 m_asyncBlobCreator = new MockCanvasAsyncBlobCreatorWithoutCompleteJpeg( |
226 imageData->data(), testSize, document()); | 232 imageData->data(), testSize, document()); |
227 } | 233 } |
228 | 234 |
229 void CanvasAsyncBlobCreatorTest::TearDown() { | 235 void CanvasAsyncBlobCreatorTest::TearDown() { |
230 m_asyncBlobCreator = nullptr; | 236 m_asyncBlobCreator = nullptr; |
231 } | 237 } |
232 | 238 |
233 //============================================================================== | 239 //============================================================================== |
234 | 240 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 JpegIdleTaskFailedWhenStartTimeoutEventHappens) { | 322 JpegIdleTaskFailedWhenStartTimeoutEventHappens) { |
317 this->prepareMockCanvasAsyncBlobCreatorFailJpeg(); | 323 this->prepareMockCanvasAsyncBlobCreatorFailJpeg(); |
318 | 324 |
319 this->asyncBlobCreator()->scheduleAsyncBlobCreation(true, 1.0); | 325 this->asyncBlobCreator()->scheduleAsyncBlobCreation(true, 1.0); |
320 testing::enterRunLoop(); | 326 testing::enterRunLoop(); |
321 | 327 |
322 EXPECT_EQ(IdleTaskStatus::IdleTaskFailed, | 328 EXPECT_EQ(IdleTaskStatus::IdleTaskFailed, |
323 this->asyncBlobCreator()->idleTaskStatus()); | 329 this->asyncBlobCreator()->idleTaskStatus()); |
324 } | 330 } |
325 } | 331 } |
OLD | NEW |