| 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 { | 154 { |
| 155 m_lazyDecoder->setData(*m_data, true); | 155 m_lazyDecoder->setData(*m_data, true); |
| 156 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 156 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
| 157 ASSERT_TRUE(image); | 157 ASSERT_TRUE(image); |
| 158 EXPECT_EQ(1, image->width()); | 158 EXPECT_EQ(1, image->width()); |
| 159 EXPECT_EQ(1, image->height()); | 159 EXPECT_EQ(1, image->height()); |
| 160 | 160 |
| 161 SkPictureRecorder recorder; | 161 SkPictureRecorder recorder; |
| 162 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); | 162 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
| 163 tempCanvas->drawImage(image.get(), 0, 0); | 163 tempCanvas->drawImage(image.get(), 0, 0); |
| 164 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); | 164 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); |
| 165 EXPECT_EQ(0, m_decodeRequestCount); | 165 EXPECT_EQ(0, m_decodeRequestCount); |
| 166 | 166 |
| 167 m_surface->getCanvas()->drawPicture(picture.get()); | 167 m_surface->getCanvas()->drawPicture(picture); |
| 168 EXPECT_EQ(0, m_decodeRequestCount); | 168 EXPECT_EQ(0, m_decodeRequestCount); |
| 169 | 169 |
| 170 SkBitmap canvasBitmap; | 170 SkBitmap canvasBitmap; |
| 171 canvasBitmap.allocN32Pixels(100, 100); | 171 canvasBitmap.allocN32Pixels(100, 100); |
| 172 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 172 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
| 173 SkAutoLockPixels autoLock(canvasBitmap); | 173 SkAutoLockPixels autoLock(canvasBitmap); |
| 174 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 174 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
| 175 } | 175 } |
| 176 | 176 |
| 177 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) | 177 TEST_F(DeferredImageDecoderTest, drawIntoSkPictureProgressive) |
| 178 { | 178 { |
| 179 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da
ta->size() - 10); | 179 RefPtr<SharedBuffer> partialData = SharedBuffer::create(m_data->data(), m_da
ta->size() - 10); |
| 180 | 180 |
| 181 // Received only half the file. | 181 // Received only half the file. |
| 182 m_lazyDecoder->setData(*partialData, false); | 182 m_lazyDecoder->setData(*partialData, false); |
| 183 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 183 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
| 184 ASSERT_TRUE(image); | 184 ASSERT_TRUE(image); |
| 185 SkPictureRecorder recorder; | 185 SkPictureRecorder recorder; |
| 186 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); | 186 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
| 187 tempCanvas->drawImage(image.get(), 0, 0); | 187 tempCanvas->drawImage(image.get(), 0, 0); |
| 188 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); | 188 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
| 189 m_surface->getCanvas()->drawPicture(picture.get()); | |
| 190 | 189 |
| 191 // Fully received the file and draw the SkPicture again. | 190 // Fully received the file and draw the SkPicture again. |
| 192 m_lazyDecoder->setData(*m_data, true); | 191 m_lazyDecoder->setData(*m_data, true); |
| 193 image = m_lazyDecoder->createFrameAtIndex(0); | 192 image = m_lazyDecoder->createFrameAtIndex(0); |
| 194 ASSERT_TRUE(image); | 193 ASSERT_TRUE(image); |
| 195 tempCanvas = recorder.beginRecording(100, 100, 0, 0); | 194 tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
| 196 tempCanvas->drawImage(image.get(), 0, 0); | 195 tempCanvas->drawImage(image.get(), 0, 0); |
| 197 picture = adoptRef(recorder.endRecording()); | 196 m_surface->getCanvas()->drawPicture(recorder.finishRecordingAsPicture()); |
| 198 m_surface->getCanvas()->drawPicture(picture.get()); | |
| 199 | 197 |
| 200 SkBitmap canvasBitmap; | 198 SkBitmap canvasBitmap; |
| 201 canvasBitmap.allocN32Pixels(100, 100); | 199 canvasBitmap.allocN32Pixels(100, 100); |
| 202 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); | 200 ASSERT_TRUE(m_surface->getCanvas()->readPixels(&canvasBitmap, 0, 0)); |
| 203 SkAutoLockPixels autoLock(canvasBitmap); | 201 SkAutoLockPixels autoLock(canvasBitmap); |
| 204 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); | 202 EXPECT_EQ(SkColorSetARGB(255, 255, 255, 255), canvasBitmap.getColor(0, 0)); |
| 205 } | 203 } |
| 206 | 204 |
| 207 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) | 205 static void rasterizeMain(SkCanvas* canvas, SkPicture* picture) |
| 208 { | 206 { |
| 209 canvas->drawPicture(picture); | 207 canvas->drawPicture(picture); |
| 210 } | 208 } |
| 211 | 209 |
| 212 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) | 210 TEST_F(DeferredImageDecoderTest, decodeOnOtherThread) |
| 213 { | 211 { |
| 214 m_lazyDecoder->setData(*m_data, true); | 212 m_lazyDecoder->setData(*m_data, true); |
| 215 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); | 213 RefPtr<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); |
| 216 ASSERT_TRUE(image); | 214 ASSERT_TRUE(image); |
| 217 EXPECT_EQ(1, image->width()); | 215 EXPECT_EQ(1, image->width()); |
| 218 EXPECT_EQ(1, image->height()); | 216 EXPECT_EQ(1, image->height()); |
| 219 | 217 |
| 220 SkPictureRecorder recorder; | 218 SkPictureRecorder recorder; |
| 221 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); | 219 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
| 222 tempCanvas->drawImage(image.get(), 0, 0); | 220 tempCanvas->drawImage(image.get(), 0, 0); |
| 223 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); | 221 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); |
| 224 EXPECT_EQ(0, m_decodeRequestCount); | 222 EXPECT_EQ(0, m_decodeRequestCount); |
| 225 | 223 |
| 226 // Create a thread to rasterize SkPicture. | 224 // Create a thread to rasterize SkPicture. |
| 227 OwnPtr<WebThread> thread = adoptPtr(Platform::current()->createThread("Raste
rThread")); | 225 OwnPtr<WebThread> thread = adoptPtr(Platform::current()->createThread("Raste
rThread")); |
| 228 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&raster
izeMain, AllowCrossThreadAccess(m_surface->getCanvas()), AllowCrossThreadAccess(
picture.get()))); | 226 thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&raster
izeMain, AllowCrossThreadAccess(m_surface->getCanvas()), AllowCrossThreadAccess(
picture.get()))); |
| 229 thread.clear(); | 227 thread.clear(); |
| 230 EXPECT_EQ(0, m_decodeRequestCount); | 228 EXPECT_EQ(0, m_decodeRequestCount); |
| 231 | 229 |
| 232 SkBitmap canvasBitmap; | 230 SkBitmap canvasBitmap; |
| 233 canvasBitmap.allocN32Pixels(100, 100); | 231 canvasBitmap.allocN32Pixels(100, 100); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 ASSERT_TRUE(image); | 309 ASSERT_TRUE(image); |
| 312 EXPECT_EQ(m_decodedSize.width(), image->width()); | 310 EXPECT_EQ(m_decodedSize.width(), image->width()); |
| 313 EXPECT_EQ(m_decodedSize.height(), image->height()); | 311 EXPECT_EQ(m_decodedSize.height(), image->height()); |
| 314 | 312 |
| 315 useMockImageDecoderFactory(); | 313 useMockImageDecoderFactory(); |
| 316 | 314 |
| 317 // The following code should not fail any assert. | 315 // The following code should not fail any assert. |
| 318 SkPictureRecorder recorder; | 316 SkPictureRecorder recorder; |
| 319 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); | 317 SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); |
| 320 tempCanvas->drawImage(image.get(), 0, 0); | 318 tempCanvas->drawImage(image.get(), 0, 0); |
| 321 RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); | 319 sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); |
| 322 EXPECT_EQ(0, m_decodeRequestCount); | 320 EXPECT_EQ(0, m_decodeRequestCount); |
| 323 m_surface->getCanvas()->drawPicture(picture.get()); | 321 m_surface->getCanvas()->drawPicture(picture); |
| 324 EXPECT_EQ(1, m_decodeRequestCount); | 322 EXPECT_EQ(1, m_decodeRequestCount); |
| 325 } | 323 } |
| 326 | 324 |
| 327 TEST_F(DeferredImageDecoderTest, smallerFrameCount) | 325 TEST_F(DeferredImageDecoderTest, smallerFrameCount) |
| 328 { | 326 { |
| 329 m_frameCount = 1; | 327 m_frameCount = 1; |
| 330 m_lazyDecoder->setData(*m_data, false); | 328 m_lazyDecoder->setData(*m_data, false); |
| 331 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); | 329 EXPECT_EQ(m_frameCount, m_lazyDecoder->frameCount()); |
| 332 m_frameCount = 2; | 330 m_frameCount = 2; |
| 333 m_lazyDecoder->setData(*m_data, false); | 331 m_lazyDecoder->setData(*m_data, false); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 363 // After decoding, the frame is known to be opaque. | 361 // After decoding, the frame is known to be opaque. |
| 364 frame = decoder->createFrameAtIndex(0); | 362 frame = decoder->createFrameAtIndex(0); |
| 365 ASSERT_TRUE(frame); | 363 ASSERT_TRUE(frame); |
| 366 EXPECT_TRUE(frame->isOpaque()); | 364 EXPECT_TRUE(frame->isOpaque()); |
| 367 | 365 |
| 368 // Re-generating the opaque-marked frame should not fail. | 366 // Re-generating the opaque-marked frame should not fail. |
| 369 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); | 367 EXPECT_TRUE(frame->readPixels(pixmap, 0, 0)); |
| 370 } | 368 } |
| 371 | 369 |
| 372 } // namespace blink | 370 } // namespace blink |
| OLD | NEW |