summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/platform/graphics/ImageFrameGeneratorTest.cpp161
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);