Chromium Code Reviews| 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(image, 0, 0); |
|
danakj
2017/03/16 20:06:15
move()
| |
| 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(image, 0, 0); |
|
danakj
2017/03/16 20:06:15
move()
| |
| 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(image, 0, 0); |
|
danakj
2017/03/16 20:06:15
move()
| |
| 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(image, 0, 0); |
|
danakj
2017/03/16 20:06:15
move()
| |
| 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 |