OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 | 155 |
156 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecord) { | 156 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecord) { |
157 m_lazyDecoder->setData(m_data, true); | 157 m_lazyDecoder->setData(m_data, true); |
158 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 158 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
159 ASSERT_TRUE(image); | 159 ASSERT_TRUE(image); |
160 EXPECT_EQ(1, image->width()); | 160 EXPECT_EQ(1, image->width()); |
161 EXPECT_EQ(1, image->height()); | 161 EXPECT_EQ(1, image->height()); |
162 | 162 |
163 PaintRecorder recorder; | 163 PaintRecorder recorder; |
164 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 164 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); |
165 tempCanvas->drawImage(image.get(), 0, 0); | 165 tempCanvas->drawImage(image, 0, 0); |
166 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 166 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
167 EXPECT_EQ(0, m_decodeRequestCount); | 167 EXPECT_EQ(0, m_decodeRequestCount); |
168 | 168 |
169 m_surface->getCanvas()->drawPicture(record); | 169 m_surface->getCanvas()->drawPicture(record); |
170 EXPECT_EQ(0, m_decodeRequestCount); | 170 EXPECT_EQ(0, m_decodeRequestCount); |
171 | 171 |
172 SkBitmap canvasBitmap; | 172 SkBitmap canvasBitmap; |
173 canvasBitmap.allocN32Pixels(100, 100); | 173 canvasBitmap.allocN32Pixels(100, 100); |
174 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 174 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
175 SkAutoLockPixels autoLock(canvasBitmap); | 175 SkAutoLockPixels autoLock(canvasBitmap); |
176 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 176 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
177 } | 177 } |
178 | 178 |
179 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { | 179 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { |
180 RefPtr<SharedBuffer> partialData = | 180 RefPtr<SharedBuffer> partialData = |
181 SharedBuffer::create(m_data->data(), m_data->size() - 10); | 181 SharedBuffer::create(m_data->data(), m_data->size() - 10); |
182 | 182 |
183 // Received only half the file. | 183 // Received only half the file. |
184 m_lazyDecoder->setData(partialData, false); | 184 m_lazyDecoder->setData(partialData, false); |
185 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 185 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
186 ASSERT_TRUE(image); | 186 ASSERT_TRUE(image); |
187 PaintRecorder recorder; | 187 PaintRecorder recorder; |
188 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 188 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); |
189 tempCanvas->drawImage(image.get(), 0, 0); | 189 tempCanvas->drawImage(std::move(image), 0, 0); |
190 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); | 190 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
191 | 191 |
192 // Fully received the file and draw the PaintRecord again. | 192 // Fully received the file and draw the PaintRecord again. |
193 m_lazyDecoder->setData(m_data, true); | 193 m_lazyDecoder->setData(m_data, true); |
194 image = m_lazyDecoder->createFrameAtIndex(0); | 194 image = m_lazyDecoder->createFrameAtIndex(0); |
195 ASSERT_TRUE(image); | 195 ASSERT_TRUE(image); |
196 tempCanvas = recorder.beginRecording(100, 100); | 196 tempCanvas = recorder.beginRecording(100, 100); |
197 tempCanvas->drawImage(image.get(), 0, 0); | 197 tempCanvas->drawImage(std::move(image), 0, 0); |
198 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); | 198 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
199 | 199 |
200 SkBitmap canvasBitmap; | 200 SkBitmap canvasBitmap; |
201 canvasBitmap.allocN32Pixels(100, 100); | 201 canvasBitmap.allocN32Pixels(100, 100); |
202 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 202 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
203 SkAutoLockPixels autoLock(canvasBitmap); | 203 SkAutoLockPixels autoLock(canvasBitmap); |
204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
205 } | 205 } |
206 | 206 |
207 static void rasterizeMain(PaintCanvas* canvas, PaintRecord* record) { | 207 static void rasterizeMain(PaintCanvas* canvas, sk_sp<PaintRecord> record) { |
208 canvas->drawPicture(record); | 208 canvas->drawPicture(record); |
209 } | 209 } |
210 | 210 |
211 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { | 211 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { |
212 m_lazyDecoder->setData(m_data, true); | 212 m_lazyDecoder->setData(m_data, true); |
213 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 213 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
214 ASSERT_TRUE(image); | 214 ASSERT_TRUE(image); |
215 EXPECT_EQ(1, image->width()); | 215 EXPECT_EQ(1, image->width()); |
216 EXPECT_EQ(1, image->height()); | 216 EXPECT_EQ(1, image->height()); |
217 | 217 |
218 PaintRecorder recorder; | 218 PaintRecorder recorder; |
219 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 219 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); |
220 tempCanvas->drawImage(image.get(), 0, 0); | 220 tempCanvas->drawImage(std::move(image), 0, 0); |
221 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 221 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
222 EXPECT_EQ(0, m_decodeRequestCount); | 222 EXPECT_EQ(0, m_decodeRequestCount); |
223 | 223 |
224 // Create a thread to rasterize PaintRecord. | 224 // Create a thread to rasterize PaintRecord. |
225 std::unique_ptr<WebThread> thread = | 225 std::unique_ptr<WebThread> thread = |
226 WTF::wrapUnique(Platform::current()->createThread("RasterThread")); | 226 WTF::wrapUnique(Platform::current()->createThread("RasterThread")); |
227 thread->getWebTaskRunner()->postTask( | 227 thread->getWebTaskRunner()->postTask( |
228 BLINK_FROM_HERE, | 228 BLINK_FROM_HERE, |
229 crossThreadBind(&rasterizeMain, | 229 crossThreadBind(&rasterizeMain, |
230 crossThreadUnretained(m_surface->getCanvas()), | 230 crossThreadUnretained(m_surface->getCanvas()), record)); |
231 crossThreadUnretained(record.get()))); | |
232 thread.reset(); | 231 thread.reset(); |
233 EXPECT_EQ(0, m_decodeRequestCount); | 232 EXPECT_EQ(0, m_decodeRequestCount); |
234 | 233 |
235 SkBitmap canvasBitmap; | 234 SkBitmap canvasBitmap; |
236 canvasBitmap.allocN32Pixels(100, 100); | 235 canvasBitmap.allocN32Pixels(100, 100); |
237 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 236 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
238 SkAutoLockPixels autoLock(canvasBitmap); | 237 SkAutoLockPixels autoLock(canvasBitmap); |
239 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 238 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
240 } | 239 } |
241 | 240 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 309 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
311 ASSERT_TRUE(image); | 310 ASSERT_TRUE(image); |
312 EXPECT_EQ(m_decodedSize.width(), image->width()); | 311 EXPECT_EQ(m_decodedSize.width(), image->width()); |
313 EXPECT_EQ(m_decodedSize.height(), image->height()); | 312 EXPECT_EQ(m_decodedSize.height(), image->height()); |
314 | 313 |
315 useMockImageDecoderFactory(); | 314 useMockImageDecoderFactory(); |
316 | 315 |
317 // The following code should not fail any assert. | 316 // The following code should not fail any assert. |
318 PaintRecorder recorder; | 317 PaintRecorder recorder; |
319 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 318 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); |
320 tempCanvas->drawImage(image.get(), 0, 0); | 319 tempCanvas->drawImage(std::move(image), 0, 0); |
321 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 320 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
322 EXPECT_EQ(0, m_decodeRequestCount); | 321 EXPECT_EQ(0, m_decodeRequestCount); |
323 m_surface->getCanvas()->drawPicture(record); | 322 m_surface->getCanvas()->drawPicture(record); |
324 EXPECT_EQ(1, m_decodeRequestCount); | 323 EXPECT_EQ(1, m_decodeRequestCount); |
325 } | 324 } |
326 | 325 |
327 TEST_F(DeferredImageDecoderTest, smallerFrameCount) { | 326 TEST_F(DeferredImageDecoderTest, smallerFrameCount) { |
328 m_frameCount = 1; | 327 m_frameCount = 1; |
329 m_lazyDecoder->setData(m_data, false); | 328 m_lazyDecoder->setData(m_data, false); |
330 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); | 329 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 SharedBuffer::create(m_data->data(), m_data->size()); | 394 SharedBuffer::create(m_data->data(), m_data->size()); |
396 EXPECT_EQ(originalData->size(), m_data->size()); | 395 EXPECT_EQ(originalData->size(), m_data->size()); |
397 m_lazyDecoder->setData(originalData, false); | 396 m_lazyDecoder->setData(originalData, false); |
398 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); | 397 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); |
399 EXPECT_EQ(originalData->size(), newData->size()); | 398 EXPECT_EQ(originalData->size(), newData->size()); |
400 EXPECT_EQ( | 399 EXPECT_EQ( |
401 0, std::memcmp(originalData->data(), newData->data(), newData->size())); | 400 0, std::memcmp(originalData->data(), newData->data(), newData->size())); |
402 } | 401 } |
403 | 402 |
404 } // namespace blink | 403 } // namespace blink |
OLD | NEW |