diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp | 161 |
1 files changed, 13 insertions, 148 deletions
diff --git a/chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp b/chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp index 1f74b5b34a7..81d860fb341 100644 --- a/chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp +++ b/chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp @@ -40,7 +40,6 @@ namespace { // Helper methods to generate standard sizes. SkISize fullSize() { return SkISize::Make(100, 100); } -SkISize scaledSize() { return SkISize::Make(50, 50); } } // namespace @@ -48,10 +47,10 @@ class ImageFrameGeneratorTest : public ::testing::Test, public MockImageDecoderC public: virtual void SetUp() OVERRIDE { - ImageDecodingStore::initializeOnce(); + ImageDecodingStore::instance()->setCacheLimitInBytes(1024 * 1024); ImageDecodingStore::instance()->setImageCachingEnabled(true); m_data = SharedBuffer::create(); - m_generator = ImageFrameGenerator::create(fullSize(), m_data, true); + m_generator = ImageFrameGenerator::create(fullSize(), m_data, false); useMockImageDecoderFactory(); m_decodersDestroyed = 0; m_frameBufferRequestCount = 0; @@ -60,7 +59,7 @@ public: virtual void TearDown() OVERRIDE { - ImageDecodingStore::shutdown(); + ImageDecodingStore::instance()->clear(); } virtual void decoderBeingDestroyed() OVERRIDE @@ -93,8 +92,8 @@ protected: PassOwnPtr<ScaledImageFragment> createCompleteImage(const SkISize& size) { SkBitmap bitmap; - bitmap.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); - bitmap.allocPixels(); + if (!bitmap.allocN32Pixels(size.width(), size.height())) + return nullptr; return ScaledImageFragment::createComplete(size, 0, bitmap); } @@ -116,7 +115,9 @@ protected: PassOwnPtr<ScaledImageFragment> decode(size_t index) { ImageDecoder* decoder = 0; - return m_generator->decode(index, &decoder); + OwnPtr<ScaledImageFragment> fragment = m_generator->decode(index, &decoder); + delete decoder; + return fragment.release(); } RefPtr<SharedBuffer> m_data; @@ -129,8 +130,10 @@ protected: TEST_F(ImageFrameGeneratorTest, cacheHit) { + OwnPtr<ScaledImageFragment> completeImageTemp = createCompleteImage(fullSize()); + ASSERT_TRUE(completeImageTemp); const ScaledImageFragment* fullImage = ImageDecodingStore::instance()->insertAndLockCache( - m_generator.get(), createCompleteImage(fullSize())); + m_generator.get(), completeImageTemp.release()); EXPECT_EQ(fullSize(), fullImage->scaledSize()); ImageDecodingStore::instance()->unlockCache(m_generator.get(), fullImage); @@ -142,62 +145,11 @@ TEST_F(ImageFrameGeneratorTest, cacheHit) EXPECT_EQ(0, m_frameBufferRequestCount); } -TEST_F(ImageFrameGeneratorTest, cacheMissWithScale) -{ - const ScaledImageFragment* fullImage = ImageDecodingStore::instance()->insertAndLockCache( - m_generator.get(), createCompleteImage(fullSize())); - EXPECT_EQ(fullSize(), fullImage->scaledSize()); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), fullImage); - - // Cache miss because of scaled size not found. - const ScaledImageFragment* scaledImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_NE(fullImage, scaledImage); - EXPECT_EQ(scaledSize(), scaledImage->scaledSize()); - EXPECT_TRUE(m_generator->hasAlpha(0)); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), scaledImage); - - // Cache hit. - const ScaledImageFragment* tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_EQ(scaledImage, tempImage); - EXPECT_EQ(scaledSize(), tempImage->scaledSize()); - EXPECT_TRUE(m_generator->hasAlpha(0)); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(0, m_frameBufferRequestCount); -} - -TEST_F(ImageFrameGeneratorTest, cacheMissWithDecodeAndScale) -{ - setFrameStatus(ImageFrame::FrameComplete); - - // Cache miss. - const ScaledImageFragment* scaledImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_EQ(1, m_frameBufferRequestCount); - EXPECT_EQ(scaledSize(), scaledImage->scaledSize()); - EXPECT_FALSE(m_generator->hasAlpha(0)); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), scaledImage); - EXPECT_EQ(1, m_decodersDestroyed); - - // Cache hit. - const ScaledImageFragment* fullImage = m_generator->decodeAndScale(fullSize()); - EXPECT_NE(scaledImage, fullImage); - EXPECT_EQ(fullSize(), fullImage->scaledSize()); - EXPECT_FALSE(m_generator->hasAlpha(0)); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), fullImage); - - // Cache hit. - const ScaledImageFragment* tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_EQ(scaledImage, tempImage); - EXPECT_EQ(scaledSize(), tempImage->scaledSize()); - EXPECT_FALSE(m_generator->hasAlpha(0)); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(1, m_frameBufferRequestCount); -} - TEST_F(ImageFrameGeneratorTest, cacheMissWithIncompleteDecode) { setFrameStatus(ImageFrame::FramePartial); - const ScaledImageFragment* tempImage= m_generator->decodeAndScale(fullSize()); + const ScaledImageFragment* tempImage = m_generator->decodeAndScale(fullSize()); EXPECT_FALSE(tempImage->isComplete()); EXPECT_EQ(1, m_frameBufferRequestCount); ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); @@ -216,29 +168,6 @@ TEST_F(ImageFrameGeneratorTest, cacheMissWithIncompleteDecode) EXPECT_EQ(0, m_decodersDestroyed); } -TEST_F(ImageFrameGeneratorTest, cacheMissWithIncompleteDecodeAndScale) -{ - setFrameStatus(ImageFrame::FramePartial); - - const ScaledImageFragment* tempImage= m_generator->decodeAndScale(scaledSize()); - EXPECT_FALSE(tempImage->isComplete()); - EXPECT_EQ(1, m_frameBufferRequestCount); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(3, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(2, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(1, ImageDecodingStore::instance()->decoderCacheEntries()); - - addNewData(); - tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_FALSE(tempImage->isComplete()); - EXPECT_EQ(2, m_frameBufferRequestCount); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(5, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(4, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(1, ImageDecodingStore::instance()->decoderCacheEntries()); - EXPECT_EQ(0, m_decodersDestroyed); -} - TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesComplete) { setFrameStatus(ImageFrame::FramePartial); @@ -270,42 +199,6 @@ TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesComplete) ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); } -TEST_F(ImageFrameGeneratorTest, incompleteDecodeAndScaleBecomesComplete) -{ - setFrameStatus(ImageFrame::FramePartial); - - const ScaledImageFragment* tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_FALSE(tempImage->isComplete()); - EXPECT_EQ(1, m_frameBufferRequestCount); - EXPECT_EQ(0, m_decodersDestroyed); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(3, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(2, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(1, ImageDecodingStore::instance()->decoderCacheEntries()); - - setFrameStatus(ImageFrame::FrameComplete); - addNewData(); - - tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_TRUE(tempImage->isComplete()); - EXPECT_EQ(2, m_frameBufferRequestCount); - EXPECT_EQ(1, m_decodersDestroyed); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - EXPECT_EQ(4, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(4, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(0, ImageDecodingStore::instance()->decoderCacheEntries()); - - tempImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_TRUE(tempImage->isComplete()); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - - tempImage = m_generator->decodeAndScale(fullSize()); - EXPECT_TRUE(tempImage->isComplete()); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); - - EXPECT_EQ(2, m_frameBufferRequestCount); -} - static void decodeThreadMain(ImageFrameGenerator* generator) { const ScaledImageFragment* tempImage = generator->decodeAndScale(fullSize()); @@ -325,7 +218,7 @@ TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesCompleteMultiThreaded) EXPECT_EQ(1, ImageDecodingStore::instance()->imageCacheEntries()); EXPECT_EQ(1, ImageDecodingStore::instance()->decoderCacheEntries()); - // Frame can now be decoded completely. + // LocalFrame can now be decoded completely. setFrameStatus(ImageFrame::FrameComplete); addNewData(); OwnPtr<blink::WebThread> thread = adoptPtr(blink::Platform::current()->createThread("DecodeThread")); @@ -344,34 +237,6 @@ TEST_F(ImageFrameGeneratorTest, incompleteDecodeBecomesCompleteMultiThreaded) ImageDecodingStore::instance()->unlockCache(m_generator.get(), tempImage); } -TEST_F(ImageFrameGeneratorTest, concurrentIncompleteDecodeAndScale) -{ - setFrameStatus(ImageFrame::FramePartial); - - const ScaledImageFragment* fullImage = m_generator->decodeAndScale(fullSize()); - const ScaledImageFragment* scaledImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_FALSE(fullImage->isComplete()); - EXPECT_FALSE(scaledImage->isComplete()); - EXPECT_EQ(2, m_frameBufferRequestCount); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), fullImage); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), scaledImage); - EXPECT_EQ(4, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(3, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(1, ImageDecodingStore::instance()->decoderCacheEntries()); - EXPECT_EQ(0, m_decodersDestroyed); - - addNewData(); - setFrameStatus(ImageFrame::FrameComplete); - scaledImage = m_generator->decodeAndScale(scaledSize()); - EXPECT_TRUE(scaledImage->isComplete()); - EXPECT_EQ(3, m_frameBufferRequestCount); - ImageDecodingStore::instance()->unlockCache(m_generator.get(), scaledImage); - EXPECT_EQ(5, ImageDecodingStore::instance()->cacheEntries()); - EXPECT_EQ(5, ImageDecodingStore::instance()->imageCacheEntries()); - EXPECT_EQ(0, ImageDecodingStore::instance()->decoderCacheEntries()); - EXPECT_EQ(1, m_decodersDestroyed); -} - TEST_F(ImageFrameGeneratorTest, incompleteBitmapCopied) { setFrameStatus(ImageFrame::FramePartial); |