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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
54 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, | 54 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, |
55 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, | 55 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, |
56 0x0c, 0x49, 0x44, 0x41, 0x54, 0x08, 0xd7, 0x63, 0xf8, 0xff, | 56 0x0c, 0x49, 0x44, 0x41, 0x54, 0x08, 0xd7, 0x63, 0xf8, 0xff, |
57 0xff, 0x3f, 0x00, 0x05, 0xfe, 0x02, 0xfe, 0xdc, 0xcc, 0x59, | 57 0xff, 0x3f, 0x00, 0x05, 0xfe, 0x02, 0xfe, 0xdc, 0xcc, 0x59, |
58 0xe7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, | 58 0xe7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, |
59 0x42, 0x60, 0x82, | 59 0x42, 0x60, 0x82, |
60 }; | 60 }; |
61 | 61 |
62 static SkCanvas* createRasterCanvas(int width, int height) | 62 static SkCanvas* createRasterCanvas(int width, int height) |
63 { | 63 { |
64 SkAutoTUnref<SkBaseDevice> device(new SkBitmapDevice(SkBitmap::kARGB_8888_Co nfig, width, height)); | 64 SkBitmap bitmap; |
65 return new SkCanvas(device); | 65 bitmap.allocN32Pixels(width, height); |
66 return new SkCanvas(bitmap); | |
reed1
2014/03/17 13:25:18
There is an even nicer way to to this...
return S
jbroman
2014/03/17 16:46:38
Done, and inlined at the call site.
| |
66 } | 67 } |
67 | 68 |
68 struct Rasterizer { | 69 struct Rasterizer { |
69 SkCanvas* canvas; | 70 SkCanvas* canvas; |
70 SkPicture* picture; | 71 SkPicture* picture; |
71 }; | 72 }; |
72 | 73 |
73 } // namespace | 74 } // namespace |
74 | 75 |
75 class DeferredImageDecoderTest : public ::testing::Test, public MockImageDecoder Client { | 76 class DeferredImageDecoderTest : public ::testing::Test, public MockImageDecoder Client { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
163 | 164 |
164 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); | 165 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); |
165 tempCanvas->drawBitmap(image->bitmap(), 0, 0); | 166 tempCanvas->drawBitmap(image->bitmap(), 0, 0); |
166 m_picture.endRecording(); | 167 m_picture.endRecording(); |
167 EXPECT_EQ(0, m_frameBufferRequestCount); | 168 EXPECT_EQ(0, m_frameBufferRequestCount); |
168 | 169 |
169 m_canvas->drawPicture(m_picture); | 170 m_canvas->drawPicture(m_picture); |
170 EXPECT_EQ(0, m_frameBufferRequestCount); | 171 EXPECT_EQ(0, m_frameBufferRequestCount); |
171 | 172 |
172 SkBitmap canvasBitmap; | 173 SkBitmap canvasBitmap; |
173 canvasBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); | 174 canvasBitmap.allocN32Pixels(100, 100); |
174 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); | 175 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); |
175 SkAutoLockPixels autoLock(canvasBitmap); | 176 SkAutoLockPixels autoLock(canvasBitmap); |
176 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 177 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
177 } | 178 } |
178 | 179 |
179 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) | 180 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) |
180 { | 181 { |
181 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10); | 182 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da ta->size() - 10); |
182 | 183 |
183 // Received only half the file. | 184 // Received only half the file. |
184 m_lazyDecoder->setData(partialData.get(), false); | 185 m_lazyDecoder->setData(partialData.get(), false); |
185 RefPtr<NativeImageSkia> image = m_lazyDecoder->frameBufferAtIndex(0)->asNewN ativeImage(); | 186 RefPtr<NativeImageSkia> image = m_lazyDecoder->frameBufferAtIndex(0)->asNewN ativeImage(); |
186 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); | 187 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); |
187 tempCanvas->drawBitmap(image->bitmap(), 0, 0); | 188 tempCanvas->drawBitmap(image->bitmap(), 0, 0); |
188 m_picture.endRecording(); | 189 m_picture.endRecording(); |
189 m_canvas->drawPicture(m_picture); | 190 m_canvas->drawPicture(m_picture); |
190 | 191 |
191 // Fully received the file and draw the SkPicture again. | 192 // Fully received the file and draw the SkPicture again. |
192 m_lazyDecoder->setData(m_data.get(), true); | 193 m_lazyDecoder->setData(m_data.get(), true); |
193 image = m_lazyDecoder->frameBufferAtIndex(0)->asNewNativeImage(); | 194 image = m_lazyDecoder->frameBufferAtIndex(0)->asNewNativeImage(); |
194 tempCanvas = m_picture.beginRecording(100, 100); | 195 tempCanvas = m_picture.beginRecording(100, 100); |
195 tempCanvas->drawBitmap(image->bitmap(), 0, 0); | 196 tempCanvas->drawBitmap(image->bitmap(), 0, 0); |
196 m_picture.endRecording(); | 197 m_picture.endRecording(); |
197 m_canvas->drawPicture(m_picture); | 198 m_canvas->drawPicture(m_picture); |
198 | 199 |
199 SkBitmap canvasBitmap; | 200 SkBitmap canvasBitmap; |
200 canvasBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); | 201 canvasBitmap.allocN32Pixels(100, 100); |
201 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); | 202 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); |
202 SkAutoLockPixels autoLock(canvasBitmap); | 203 SkAutoLockPixels autoLock(canvasBitmap); |
203 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
204 } | 205 } |
205 | 206 |
206 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) | 207 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) |
207 { | 208 { |
208 canvas->drawPicture(*picture); | 209 canvas->drawPicture(*picture); |
209 } | 210 } |
210 | 211 |
(...skipping 11 matching lines...) Expand all Loading... | |
222 m_picture.endRecording(); | 223 m_picture.endRecording(); |
223 EXPECT_EQ(0, m_frameBufferRequestCount); | 224 EXPECT_EQ(0, m_frameBufferRequestCount); |
224 | 225 |
225 // Create a thread to rasterize SkPicture. | 226 // Create a thread to rasterize SkPicture. |
226 OwnPtr<blink::WebThread> thread = adoptPtr(blink::Platform::current()->creat eThread("RasterThread")); | 227 OwnPtr<blink::WebThread> thread = adoptPtr(blink::Platform::current()->creat eThread("RasterThread")); |
227 thread->postTask(new Task(WTF::bind(&rasterizeMain, m_canvas.get(), &m_pictu re))); | 228 thread->postTask(new Task(WTF::bind(&rasterizeMain, m_canvas.get(), &m_pictu re))); |
228 thread.clear(); | 229 thread.clear(); |
229 EXPECT_EQ(0, m_frameBufferRequestCount); | 230 EXPECT_EQ(0, m_frameBufferRequestCount); |
230 | 231 |
231 SkBitmap canvasBitmap; | 232 SkBitmap canvasBitmap; |
232 canvasBitmap.setConfig(SkBitmap::kARGB_8888_Config, 100, 100); | 233 canvasBitmap.allocN32Pixels(100, 100); |
233 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); | 234 ASSERT_TRUE(m_canvas->readPixels(&canvasBitmap, 0, 0)); |
234 SkAutoLockPixels autoLock(canvasBitmap); | 235 SkAutoLockPixels autoLock(canvasBitmap); |
235 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 236 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
236 } | 237 } |
237 | 238 |
238 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) | 239 TEST_F(DeferredImageDecoderTest, singleFrameImageLoading) |
239 { | 240 { |
240 m_status = ImageFrame::FramePartial; | 241 m_status = ImageFrame::FramePartial; |
241 m_lazyDecoder->setData(m_data.get(), false); | 242 m_lazyDecoder->setData(m_data.get(), false); |
242 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); | 243 EXPECT_FALSE(m_lazyDecoder->frameIsCompleteAtIndex(0)); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 // The following code should not fail any assert. | 325 // The following code should not fail any assert. |
325 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); | 326 SkCanvas* tempCanvas = m_picture.beginRecording(100, 100); |
326 tempCanvas->drawBitmap(image->bitmap(), 0, 0); | 327 tempCanvas->drawBitmap(image->bitmap(), 0, 0); |
327 m_picture.endRecording(); | 328 m_picture.endRecording(); |
328 EXPECT_EQ(0, m_frameBufferRequestCount); | 329 EXPECT_EQ(0, m_frameBufferRequestCount); |
329 m_canvas->drawPicture(m_picture); | 330 m_canvas->drawPicture(m_picture); |
330 EXPECT_EQ(1, m_frameBufferRequestCount); | 331 EXPECT_EQ(1, m_frameBufferRequestCount); |
331 } | 332 } |
332 | 333 |
333 } // namespace WebCore | 334 } // namespace WebCore |
OLD | NEW |