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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 }; | 141 }; |
142 | 142 |
143 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecord) { | 143 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecord) { |
144 m_lazyDecoder->setData(m_data, true); | 144 m_lazyDecoder->setData(m_data, true); |
145 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 145 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
146 ASSERT_TRUE(image); | 146 ASSERT_TRUE(image); |
147 EXPECT_EQ(1, image->width()); | 147 EXPECT_EQ(1, image->width()); |
148 EXPECT_EQ(1, image->height()); | 148 EXPECT_EQ(1, image->height()); |
149 | 149 |
150 PaintRecorder recorder; | 150 PaintRecorder recorder; |
151 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 151 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
152 tempCanvas->drawImage(image.get(), 0, 0); | 152 tempCanvas->drawImage(image.get(), 0, 0); |
153 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 153 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
154 EXPECT_EQ(0, m_decodeRequestCount); | 154 EXPECT_EQ(0, m_decodeRequestCount); |
155 | 155 |
156 m_surface->getCanvas()->drawPicture(record); | 156 m_surface->getCanvas()->drawPicture(record); |
157 EXPECT_EQ(0, m_decodeRequestCount); | 157 EXPECT_EQ(0, m_decodeRequestCount); |
158 | 158 |
159 SkBitmap canvasBitmap; | 159 SkBitmap canvasBitmap; |
160 canvasBitmap.allocN32Pixels(100, 100); | 160 canvasBitmap.allocN32Pixels(100, 100); |
161 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 161 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
162 SkAutoLockPixels autoLock(canvasBitmap); | 162 SkAutoLockPixels autoLock(canvasBitmap); |
163 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 163 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
164 } | 164 } |
165 | 165 |
166 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { | 166 TEST_F(DeferredImageDecoderTest, drawIntoPaintRecordProgressive) { |
167 RefPtr<SharedBuffer> partialData = | 167 RefPtr<SharedBuffer> partialData = |
168 SharedBuffer::create(m_data->data(), m_data->size() - 10); | 168 SharedBuffer::create(m_data->data(), m_data->size() - 10); |
169 | 169 |
170 // Received only half the file. | 170 // Received only half the file. |
171 m_lazyDecoder->setData(partialData, false); | 171 m_lazyDecoder->setData(partialData, false); |
172 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 172 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
173 ASSERT_TRUE(image); | 173 ASSERT_TRUE(image); |
174 PaintRecorder recorder; | 174 PaintRecorder recorder; |
175 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 175 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
176 tempCanvas->drawImage(image.get(), 0, 0); | 176 tempCanvas->drawImage(image.get(), 0, 0); |
177 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); | 177 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
178 | 178 |
179 // Fully received the file and draw the PaintRecord again. | 179 // Fully received the file and draw the PaintRecord again. |
180 m_lazyDecoder->setData(m_data, true); | 180 m_lazyDecoder->setData(m_data, true); |
181 image = m_lazyDecoder->createFrameAtIndex(0); | 181 image = m_lazyDecoder->createFrameAtIndex(0); |
182 ASSERT_TRUE(image); | 182 ASSERT_TRUE(image); |
183 tempCanvas = recorder.beginRecording(100, 100); | 183 tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
184 tempCanvas->drawImage(image.get(), 0, 0); | 184 tempCanvas->drawImage(image.get(), 0, 0); |
185 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); | 185 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
186 | 186 |
187 SkBitmap canvasBitmap; | 187 SkBitmap canvasBitmap; |
188 canvasBitmap.allocN32Pixels(100, 100); | 188 canvasBitmap.allocN32Pixels(100, 100); |
189 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 189 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
190 SkAutoLockPixels autoLock(canvasBitmap); | 190 SkAutoLockPixels autoLock(canvasBitmap); |
191 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 191 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
192 } | 192 } |
193 | 193 |
194 static void rasterizeMain(PaintCanvas* canvas, PaintRecord* record) { | 194 static void rasterizeMain(PaintCanvas* canvas, PaintRecord* record) { |
195 canvas->drawPicture(record); | 195 canvas->drawPicture(record); |
196 } | 196 } |
197 | 197 |
198 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { | 198 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) { |
199 m_lazyDecoder->setData(m_data, true); | 199 m_lazyDecoder->setData(m_data, true); |
200 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 200 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
201 ASSERT_TRUE(image); | 201 ASSERT_TRUE(image); |
202 EXPECT_EQ(1, image->width()); | 202 EXPECT_EQ(1, image->width()); |
203 EXPECT_EQ(1, image->height()); | 203 EXPECT_EQ(1, image->height()); |
204 | 204 |
205 PaintRecorder recorder; | 205 PaintRecorder recorder; |
206 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 206 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
207 tempCanvas->drawImage(image.get(), 0, 0); | 207 tempCanvas->drawImage(image.get(), 0, 0); |
208 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 208 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
209 EXPECT_EQ(0, m_decodeRequestCount); | 209 EXPECT_EQ(0, m_decodeRequestCount); |
210 | 210 |
211 // Create a thread to rasterize PaintRecord. | 211 // Create a thread to rasterize PaintRecord. |
212 std::unique_ptr<WebThread> thread = | 212 std::unique_ptr<WebThread> thread = |
213 WTF::wrapUnique(Platform::current()->createThread("RasterThread")); | 213 WTF::wrapUnique(Platform::current()->createThread("RasterThread")); |
214 thread->getWebTaskRunner()->postTask( | 214 thread->getWebTaskRunner()->postTask( |
215 BLINK_FROM_HERE, | 215 BLINK_FROM_HERE, |
216 crossThreadBind(&rasterizeMain, | 216 crossThreadBind(&rasterizeMain, |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 m_lazyDecoder->setData(m_data, true); | 296 m_lazyDecoder->setData(m_data, true); |
297 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 297 sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
298 ASSERT_TRUE(image); | 298 ASSERT_TRUE(image); |
299 EXPECT_EQ(m_decodedSize.width(), image->width()); | 299 EXPECT_EQ(m_decodedSize.width(), image->width()); |
300 EXPECT_EQ(m_decodedSize.height(), image->height()); | 300 EXPECT_EQ(m_decodedSize.height(), image->height()); |
301 | 301 |
302 useMockImageDecoderFactory(); | 302 useMockImageDecoderFactory(); |
303 | 303 |
304 // The following code should not fail any assert. | 304 // The following code should not fail any assert. |
305 PaintRecorder recorder; | 305 PaintRecorder recorder; |
306 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100); | 306 PaintCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
307 tempCanvas->drawImage(image.get(), 0, 0); | 307 tempCanvas->drawImage(image.get(), 0, 0); |
308 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); | 308 sk_sp<PaintRecord> record = recorder.finishRecordingAsPicture(); |
309 EXPECT_EQ(0, m_decodeRequestCount); | 309 EXPECT_EQ(0, m_decodeRequestCount); |
310 m_surface->getCanvas()->drawPicture(record); | 310 m_surface->getCanvas()->drawPicture(record); |
311 EXPECT_EQ(1, m_decodeRequestCount); | 311 EXPECT_EQ(1, m_decodeRequestCount); |
312 } | 312 } |
313 | 313 |
314 TEST_F(DeferredImageDecoderTest, smallerFrameCount) { | 314 TEST_F(DeferredImageDecoderTest, smallerFrameCount) { |
315 m_frameCount = 1; | 315 m_frameCount = 1; |
316 m_lazyDecoder->setData(m_data, false); | 316 m_lazyDecoder->setData(m_data, false); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 SharedBuffer::create(m_data->data(), m_data->size()); | 376 SharedBuffer::create(m_data->data(), m_data->size()); |
377 EXPECT_EQ(originalData->size(), m_data->size()); | 377 EXPECT_EQ(originalData->size(), m_data->size()); |
378 m_lazyDecoder->setData(originalData, false); | 378 m_lazyDecoder->setData(originalData, false); |
379 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); | 379 RefPtr<SharedBuffer> newData = m_lazyDecoder->data(); |
380 EXPECT_EQ(originalData->size(), newData->size()); | 380 EXPECT_EQ(originalData->size(), newData->size()); |
381 EXPECT_EQ( | 381 EXPECT_EQ( |
382 0, std::memcmp(originalData->data(), newData->data(), newData->size())); | 382 0, std::memcmp(originalData->data(), newData->data(), newData->size())); |
383 } | 383 } |
384 | 384 |
385 } // namespace blink | 385 } // namespace blink |
OLD | NEW |