void setFrameCount(size_t count) { m_frameCount = count; if (count > 1) { m_generator.clear(); m_generator = ImageFrameGenerator::create(fullSize(), m_data, true, true); useMockImageDecoderFactory(); } }
virtual void SetUp() override { ImageDecodingStore::instance()->setCacheLimitInBytes(1024 * 1024); m_data = SharedBuffer::create(); m_generator = ImageFrameGenerator::create(fullSize(), m_data, false); useMockImageDecoderFactory(); m_decodersDestroyed = 0; m_frameBufferRequestCount = 0; m_status = ImageFrame::FrameEmpty; }
TEST_F(DeferredImageDecoderTest, decodedSize) { m_decodedSize = IntSize(22, 33); m_lazyDecoder->setData(m_data, true); sk_sp<SkImage> image = m_lazyDecoder->createFrameAtIndex(0); ASSERT_TRUE(image); EXPECT_EQ(m_decodedSize.width(), image->width()); EXPECT_EQ(m_decodedSize.height(), image->height()); useMockImageDecoderFactory(); // The following code should not fail any assert. SkPictureRecorder recorder; SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); tempCanvas->drawImage(image.get(), 0, 0); sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture(); EXPECT_EQ(0, m_decodeRequestCount); m_surface->getCanvas()->drawPicture(picture); EXPECT_EQ(1, m_decodeRequestCount); }
TEST_F(DeferredImageDecoderTest, decodedSize) { m_decodedSize = IntSize(22, 33); m_lazyDecoder->setData(*m_data, true); RefPtr<NativeImageSkia> image = m_lazyDecoder->frameBufferAtIndex(0)->asNewNativeImage(); EXPECT_EQ(m_decodedSize.width(), image->bitmap().width()); EXPECT_EQ(m_decodedSize.height(), image->bitmap().height()); EXPECT_FALSE(image->bitmap().isNull()); EXPECT_TRUE(image->bitmap().isImmutable()); useMockImageDecoderFactory(); // The following code should not fail any assert. SkPictureRecorder recorder; SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); tempCanvas->drawBitmap(image->bitmap(), 0, 0); RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); EXPECT_EQ(0, m_frameBufferRequestCount); m_surface->getCanvas()->drawPicture(picture.get()); EXPECT_EQ(1, m_frameBufferRequestCount); }
TEST_F(DeferredImageDecoderTest, decodedSize) { m_decodedSize = IntSize(22, 33); m_lazyDecoder->setData(*m_data, true); SkBitmap bitmap; EXPECT_TRUE(m_lazyDecoder->createFrameAtIndex(0, &bitmap)); EXPECT_EQ(m_decodedSize.width(), bitmap.width()); EXPECT_EQ(m_decodedSize.height(), bitmap.height()); EXPECT_FALSE(bitmap.isNull()); EXPECT_TRUE(bitmap.isImmutable()); useMockImageDecoderFactory(); // The following code should not fail any assert. SkPictureRecorder recorder; SkCanvas* tempCanvas = recorder.beginRecording(100, 100, 0, 0); tempCanvas->drawBitmap(bitmap, 0, 0); RefPtr<SkPicture> picture = adoptRef(recorder.endRecording()); EXPECT_EQ(0, m_decodeRequestCount); m_surface->getCanvas()->drawPicture(picture.get()); EXPECT_EQ(1, m_decodeRequestCount); }