Index: Source/core/platform/image-decoders/webp/WEBPImageDecoderTest.cpp |
diff --git a/Source/core/platform/image-decoders/gif/GIFImageDecoderTest.cpp b/Source/core/platform/image-decoders/webp/WEBPImageDecoderTest.cpp |
similarity index 56% |
copy from Source/core/platform/image-decoders/gif/GIFImageDecoderTest.cpp |
copy to Source/core/platform/image-decoders/webp/WEBPImageDecoderTest.cpp |
index 3be491e54355e756446379867577b9af9aaefc85..da9ee8e8e3f372feda912ee8d6ce3cb9a2538791 100644 |
--- a/Source/core/platform/image-decoders/gif/GIFImageDecoderTest.cpp |
+++ b/Source/core/platform/image-decoders/webp/WEBPImageDecoderTest.cpp |
@@ -30,8 +30,9 @@ |
#include "config.h" |
-#include "core/platform/image-decoders/gif/GIFImageDecoder.h" |
+#include "core/platform/image-decoders/webp/WEBPImageDecoder.h" |
+#include "RuntimeEnabledFeatures.h" |
#include "core/platform/FileSystem.h" |
#include "core/platform/SharedBuffer.h" |
#include "public/platform/Platform.h" |
@@ -42,6 +43,7 @@ |
#include "wtf/PassOwnPtr.h" |
#include "wtf/StringHasher.h" |
#include "wtf/Vector.h" |
+#include "wtf/dtoa/utils.h" |
#include <gtest/gtest.h> |
using namespace WebCore; |
@@ -68,9 +70,9 @@ PassRefPtr<SharedBuffer> readFile(const char* fileName) |
return SharedBuffer::adoptVector(buffer); |
} |
-PassOwnPtr<GIFImageDecoder> createDecoder() |
+PassOwnPtr<WEBPImageDecoder> createDecoder() |
{ |
- return adoptPtr(new GIFImageDecoder(ImageSource::AlphaNotPremultiplied, ImageSource::GammaAndColorProfileApplied)); |
+ return adoptPtr(new WEBPImageDecoder(ImageSource::AlphaNotPremultiplied, ImageSource::GammaAndColorProfileApplied)); |
} |
unsigned hashSkBitmap(const SkBitmap& bitmap) |
@@ -80,7 +82,7 @@ unsigned hashSkBitmap(const SkBitmap& bitmap) |
void createDecodingBaseline(SharedBuffer* data, Vector<unsigned>* baselineHashes) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
decoder->setData(data, true); |
size_t frameCount = decoder->frameCount(); |
for (size_t i = 0; i < frameCount; ++i) { |
@@ -89,18 +91,18 @@ void createDecodingBaseline(SharedBuffer* data, Vector<unsigned>* baselineHashes |
} |
} |
-void testRandomFrameDecode(const char* gifFile) |
+void testRandomFrameDecode(const char* webpFile) |
{ |
- SCOPED_TRACE(gifFile); |
+ SCOPED_TRACE(webpFile); |
- RefPtr<SharedBuffer> fullData = readFile(gifFile); |
+ RefPtr<SharedBuffer> fullData = readFile(webpFile); |
ASSERT_TRUE(fullData.get()); |
Vector<unsigned> baselineHashes; |
createDecodingBaseline(fullData.get(), &baselineHashes); |
size_t frameCount = baselineHashes.size(); |
// Random decoding should get the same results as sequential decoding. |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
decoder->setData(fullData.get(), true); |
const size_t skippingStep = 5; |
for (size_t i = 0; i < skippingStep; ++i) { |
@@ -121,17 +123,17 @@ void testRandomFrameDecode(const char* gifFile) |
} |
} |
-void testRandomDecodeAfterClearFrameBufferCache(const char* gifFile) |
+void testRandomDecodeAfterClearFrameBufferCache(const char* webpFile) |
{ |
- SCOPED_TRACE(gifFile); |
+ SCOPED_TRACE(webpFile); |
- RefPtr<SharedBuffer> data = readFile(gifFile); |
+ RefPtr<SharedBuffer> data = readFile(webpFile); |
ASSERT_TRUE(data.get()); |
Vector<unsigned> baselineHashes; |
createDecodingBaseline(data.get(), &baselineHashes); |
size_t frameCount = baselineHashes.size(); |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
decoder->setData(data.get(), true); |
for (size_t clearExceptFrame = 0; clearExceptFrame < frameCount; ++clearExceptFrame) { |
decoder->clearCacheExceptFrame(clearExceptFrame); |
@@ -148,127 +150,155 @@ void testRandomDecodeAfterClearFrameBufferCache(const char* gifFile) |
} // namespace |
-TEST(GIFImageDecoderTest, decodeTwoFrames) |
-{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
- |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
- ASSERT_TRUE(data.get()); |
- decoder->setData(data.get(), true); |
- EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
- |
- ImageFrame* frame = decoder->frameBufferAtIndex(0); |
- EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
- EXPECT_EQ(16, frame->getSkBitmap().width()); |
- EXPECT_EQ(16, frame->getSkBitmap().height()); |
- |
- frame = decoder->frameBufferAtIndex(1); |
- EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
- EXPECT_EQ(16, frame->getSkBitmap().width()); |
- EXPECT_EQ(16, frame->getSkBitmap().height()); |
- |
- EXPECT_EQ(2u, decoder->frameCount()); |
- EXPECT_EQ(cAnimationLoopInfinite, decoder->repetitionCount()); |
-} |
+class AnimatedWebPTests : public ::testing::Test { |
+protected: |
+ virtual void SetUp() |
+ { |
+ // Enable animated WebP for all the tests. |
+ WebCore::RuntimeEnabledFeatures::setAnimatedWebPEnabled(true); |
+ } |
+}; |
-TEST(GIFImageDecoderTest, parseAndDecode) |
+TEST_F(AnimatedWebPTests, verifyAnimationParametersTransparentImage) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
+ EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
+ RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/webp-animated.webp"); |
ASSERT_TRUE(data.get()); |
decoder->setData(data.get(), true); |
- EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
- // This call will parse the entire file. |
- EXPECT_EQ(2u, decoder->frameCount()); |
+ const int canvasWidth = 11; |
+ const int canvasHeight = 29; |
+ const struct AnimParam { |
+ int xOffset, yOffset, width, height; |
+ ImageFrame::FrameDisposalMethod dispose; |
+ unsigned duration; |
+ bool hasAlpha; |
+ } frameParameters[] = { |
+ { 0, 0, 11, 29, ImageFrame::DisposeKeep, 1000u, true }, |
+ { 2, 10, 7, 17, ImageFrame::DisposeKeep, 500u, true }, |
+ { 2, 2, 7, 16, ImageFrame::DisposeKeep, 1000u, true }, |
+ }; |
+ |
+ for (size_t i = 0; i < ARRAY_SIZE(frameParameters); ++i) { |
+ const ImageFrame* const frame = decoder->frameBufferAtIndex(i); |
+ EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
+ EXPECT_EQ(canvasWidth, frame->getSkBitmap().width()); |
+ EXPECT_EQ(canvasHeight, frame->getSkBitmap().height()); |
+ EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); |
+ EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); |
+ EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); |
+ EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height()); |
+ EXPECT_EQ(frameParameters[i].dispose, frame->disposalMethod()); |
+ EXPECT_EQ(frameParameters[i].duration, frame->duration()); |
+ EXPECT_EQ(frameParameters[i].hasAlpha, frame->hasAlpha()); |
+ } |
- ImageFrame* frame = decoder->frameBufferAtIndex(0); |
- EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
- EXPECT_EQ(16, frame->getSkBitmap().width()); |
- EXPECT_EQ(16, frame->getSkBitmap().height()); |
- |
- frame = decoder->frameBufferAtIndex(1); |
- EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
- EXPECT_EQ(16, frame->getSkBitmap().width()); |
- EXPECT_EQ(16, frame->getSkBitmap().height()); |
+ EXPECT_EQ(ARRAY_SIZE(frameParameters), decoder->frameCount()); |
EXPECT_EQ(cAnimationLoopInfinite, decoder->repetitionCount()); |
} |
-TEST(GIFImageDecoderTest, parseByteByByte) |
+TEST_F(AnimatedWebPTests, verifyAnimationParametersOpaqueFramesTransparentBackground) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
+ EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
+ RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/webp-animated-opaque.webp"); |
ASSERT_TRUE(data.get()); |
+ decoder->setData(data.get(), true); |
- size_t frameCount = 0; |
- |
- // Pass data to decoder byte by byte. |
- for (size_t length = 1; length <= data->size(); ++length) { |
- RefPtr<SharedBuffer> tempData = SharedBuffer::create(data->data(), length); |
- decoder->setData(tempData.get(), length == data->size()); |
- |
- EXPECT_LE(frameCount, decoder->frameCount()); |
- frameCount = decoder->frameCount(); |
+ const int canvasWidth = 94; |
+ const int canvasHeight = 87; |
+ const struct AnimParam { |
+ int xOffset, yOffset, width, height; |
+ ImageFrame::FrameDisposalMethod dispose; |
+ unsigned duration; |
+ bool hasAlpha; |
+ } frameParameters[] = { |
+ { 4, 10, 33, 32, ImageFrame::DisposeOverwriteBgcolor, 1000u, true }, |
+ { 34, 30, 33, 32, ImageFrame::DisposeOverwriteBgcolor, 1000u, true }, |
+ { 62, 50, 32, 32, ImageFrame::DisposeOverwriteBgcolor, 1000u, true }, |
+ { 10, 54, 32, 33, ImageFrame::DisposeOverwriteBgcolor, 1000u, true }, |
+ }; |
+ |
+ for (size_t i = 0; i < ARRAY_SIZE(frameParameters); ++i) { |
+ const ImageFrame* const frame = decoder->frameBufferAtIndex(i); |
+ EXPECT_EQ(ImageFrame::FrameComplete, frame->status()); |
+ EXPECT_EQ(canvasWidth, frame->getSkBitmap().width()); |
+ EXPECT_EQ(canvasHeight, frame->getSkBitmap().height()); |
+ EXPECT_EQ(frameParameters[i].xOffset, frame->originalFrameRect().x()); |
+ EXPECT_EQ(frameParameters[i].yOffset, frame->originalFrameRect().y()); |
+ EXPECT_EQ(frameParameters[i].width, frame->originalFrameRect().width()); |
+ EXPECT_EQ(frameParameters[i].height, frame->originalFrameRect().height()); |
+ EXPECT_EQ(frameParameters[i].dispose, frame->disposalMethod()); |
+ EXPECT_EQ(frameParameters[i].duration, frame->duration()); |
+ EXPECT_EQ(frameParameters[i].hasAlpha, frame->hasAlpha()); |
} |
- EXPECT_EQ(2u, decoder->frameCount()); |
- |
- decoder->frameBufferAtIndex(0); |
- decoder->frameBufferAtIndex(1); |
+ EXPECT_EQ(ARRAY_SIZE(frameParameters), decoder->frameCount()); |
EXPECT_EQ(cAnimationLoopInfinite, decoder->repetitionCount()); |
} |
-TEST(GIFImageDecoderTest, parseAndDecodeByteByByte) |
+TEST_F(AnimatedWebPTests, parseAndDecodeByteByByte) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
- |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated-gif-with-offsets.gif"); |
- ASSERT_TRUE(data.get()); |
- |
- size_t frameCount = 0; |
- size_t framesDecoded = 0; |
- |
- // Pass data to decoder byte by byte. |
- for (size_t length = 1; length <= data->size(); ++length) { |
- RefPtr<SharedBuffer> tempData = SharedBuffer::create(data->data(), length); |
- decoder->setData(tempData.get(), length == data->size()); |
- |
- EXPECT_LE(frameCount, decoder->frameCount()); |
- frameCount = decoder->frameCount(); |
+ const struct TestImage { |
+ const char* filename; |
+ unsigned frameCount; |
+ int repetitionCount; |
+ } testImages[] = { |
+ { "/LayoutTests/fast/images/resources/webp-animated.webp", 3u, cAnimationLoopInfinite }, |
+ { "/LayoutTests/fast/images/resources/webp-animated-icc-xmp.webp", 13u, 32000 }, |
+ }; |
+ |
+ for (size_t i = 0; i < ARRAY_SIZE(testImages); ++i) { |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
+ RefPtr<SharedBuffer> data = readFile(testImages[i].filename); |
+ ASSERT_TRUE(data.get()); |
+ |
+ size_t frameCount = 0; |
+ size_t framesDecoded = 0; |
+ |
+ // Pass data to decoder byte by byte. |
+ for (size_t length = 1; length <= data->size(); ++length) { |
+ RefPtr<SharedBuffer> tempData = SharedBuffer::create(data->data(), length); |
+ decoder->setData(tempData.get(), length == data->size()); |
+ |
+ EXPECT_LE(frameCount, decoder->frameCount()); |
+ frameCount = decoder->frameCount(); |
+ |
+ ImageFrame* frame = decoder->frameBufferAtIndex(frameCount - 1); |
+ if (frame && frame->status() == ImageFrame::FrameComplete && framesDecoded < frameCount) |
+ ++framesDecoded; |
+ } |
- ImageFrame* frame = decoder->frameBufferAtIndex(frameCount - 1); |
- if (frame && frame->status() == ImageFrame::FrameComplete && framesDecoded < frameCount) |
- ++framesDecoded; |
+ EXPECT_EQ(testImages[i].frameCount, decoder->frameCount()); |
+ EXPECT_EQ(testImages[i].frameCount, framesDecoded); |
+ EXPECT_EQ(testImages[i].repetitionCount, decoder->repetitionCount()); |
} |
- |
- EXPECT_EQ(5u, decoder->frameCount()); |
- EXPECT_EQ(5u, framesDecoded); |
- EXPECT_EQ(cAnimationLoopInfinite, decoder->repetitionCount()); |
} |
-TEST(GIFImageDecoderTest, brokenSecondFrame) |
+TEST_F(AnimatedWebPTests, invalidImage) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
- RefPtr<SharedBuffer> data = readFile("/Source/WebKit/chromium/tests/data/broken.gif"); |
+ RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/invalid-animated-webp.webp"); |
ASSERT_TRUE(data.get()); |
decoder->setData(data.get(), true); |
- // One frame is detected but cannot be decoded. |
- EXPECT_EQ(1u, decoder->frameCount()); |
- ImageFrame* frame = decoder->frameBufferAtIndex(1); |
+ EXPECT_EQ(0u, decoder->frameCount()); |
+ ImageFrame* frame = decoder->frameBufferAtIndex(0); |
EXPECT_FALSE(frame); |
+ EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount()); |
} |
-TEST(GIFImageDecoderTest, progressiveDecode) |
+TEST_F(AnimatedWebPTests, progressiveDecode) |
{ |
- RefPtr<SharedBuffer> fullData = readFile("/Source/WebKit/chromium/tests/data/radient.gif"); |
+ RefPtr<SharedBuffer> fullData = readFile("/LayoutTests/fast/images/resources/webp-animated.webp"); |
ASSERT_TRUE(fullData.get()); |
const size_t fullLength = fullData->size(); |
- OwnPtr<GIFImageDecoder> decoder; |
+ OwnPtr<WEBPImageDecoder> decoder; |
ImageFrame* frame; |
Vector<unsigned> truncatedHashes; |
@@ -311,45 +341,11 @@ TEST(GIFImageDecoderTest, progressiveDecode) |
EXPECT_TRUE(match); |
} |
-TEST(GIFImageDecoderTest, allDataReceivedTruncation) |
-{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
- |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
- ASSERT_TRUE(data.get()); |
- |
- ASSERT_GE(data->size(), 10u); |
- RefPtr<SharedBuffer> tempData = SharedBuffer::create(data->data(), data->size() - 10); |
- decoder->setData(tempData.get(), true); |
- |
- EXPECT_EQ(2u, decoder->frameCount()); |
- EXPECT_FALSE(decoder->failed()); |
- |
- decoder->frameBufferAtIndex(0); |
- EXPECT_FALSE(decoder->failed()); |
- decoder->frameBufferAtIndex(1); |
- EXPECT_TRUE(decoder->failed()); |
-} |
- |
-TEST(GIFImageDecoderTest, frameIsComplete) |
-{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
- |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
- ASSERT_TRUE(data.get()); |
- decoder->setData(data.get(), true); |
- |
- EXPECT_EQ(2u, decoder->frameCount()); |
- EXPECT_FALSE(decoder->failed()); |
- EXPECT_TRUE(decoder->frameIsCompleteAtIndex(0)); |
- EXPECT_TRUE(decoder->frameIsCompleteAtIndex(1)); |
-} |
- |
-TEST(GIFImageDecoderTest, frameIsCompleteLoading) |
+TEST_F(AnimatedWebPTests, frameIsCompleteAndDuration) |
{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
- RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/animated.gif"); |
+ RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/webp-animated.webp"); |
ASSERT_TRUE(data.get()); |
ASSERT_GE(data->size(), 10u); |
@@ -359,41 +355,25 @@ TEST(GIFImageDecoderTest, frameIsCompleteLoading) |
EXPECT_EQ(2u, decoder->frameCount()); |
EXPECT_FALSE(decoder->failed()); |
EXPECT_TRUE(decoder->frameIsCompleteAtIndex(0)); |
- EXPECT_FALSE(decoder->frameIsCompleteAtIndex(1)); |
+ EXPECT_EQ(1000, decoder->frameDurationAtIndex(0)); |
+ EXPECT_TRUE(decoder->frameIsCompleteAtIndex(1)); |
+ EXPECT_EQ(500, decoder->frameDurationAtIndex(1)); |
decoder->setData(data.get(), true); |
- EXPECT_EQ(2u, decoder->frameCount()); |
+ EXPECT_EQ(3u, decoder->frameCount()); |
EXPECT_TRUE(decoder->frameIsCompleteAtIndex(0)); |
+ EXPECT_EQ(1000, decoder->frameDurationAtIndex(0)); |
EXPECT_TRUE(decoder->frameIsCompleteAtIndex(1)); |
+ EXPECT_EQ(500, decoder->frameDurationAtIndex(1)); |
+ EXPECT_TRUE(decoder->frameIsCompleteAtIndex(2)); |
+ EXPECT_EQ(1000.0, decoder->frameDurationAtIndex(2)); |
} |
-TEST(GIFImageDecoderTest, badTerminator) |
+TEST_F(AnimatedWebPTests, updateRequiredPreviousFrameAfterFirstDecode) |
{ |
- RefPtr<SharedBuffer> referenceData = readFile("/Source/WebKit/chromium/tests/data/radient.gif"); |
- RefPtr<SharedBuffer> testData = readFile("/Source/WebKit/chromium/tests/data/radient-bad-terminator.gif"); |
- ASSERT_TRUE(referenceData.get()); |
- ASSERT_TRUE(testData.get()); |
- |
- OwnPtr<GIFImageDecoder> referenceDecoder(createDecoder()); |
- referenceDecoder->setData(referenceData.get(), true); |
- EXPECT_EQ(1u, referenceDecoder->frameCount()); |
- ImageFrame* referenceFrame = referenceDecoder->frameBufferAtIndex(0); |
- ASSERT(referenceFrame); |
- |
- OwnPtr<GIFImageDecoder> testDecoder(createDecoder()); |
- testDecoder->setData(testData.get(), true); |
- EXPECT_EQ(1u, testDecoder->frameCount()); |
- ImageFrame* testFrame = testDecoder->frameBufferAtIndex(0); |
- ASSERT(testFrame); |
- |
- EXPECT_EQ(hashSkBitmap(referenceFrame->getSkBitmap()), hashSkBitmap(testFrame->getSkBitmap())); |
-} |
- |
-TEST(GIFImageDecoderTest, updateRequiredPreviousFrameAfterFirstDecode) |
-{ |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
- RefPtr<SharedBuffer> fullData = readFile("/LayoutTests/fast/images/resources/animated-10color.gif"); |
+ RefPtr<SharedBuffer> fullData = readFile("/LayoutTests/fast/images/resources/webp-animated.webp"); |
ASSERT_TRUE(fullData.get()); |
// Give it data that is enough to parse but not decode in order to check the status |
@@ -415,33 +395,31 @@ TEST(GIFImageDecoderTest, updateRequiredPreviousFrameAfterFirstDecode) |
EXPECT_EQ(notFound, decoder->frameBufferAtIndex(i)->requiredPreviousFrameIndex()); |
} |
-TEST(GIFImageDecoderTest, randomFrameDecode) |
+TEST_F(AnimatedWebPTests, randomFrameDecode) |
{ |
- // Single frame image. |
- testRandomFrameDecode("/Source/WebKit/chromium/tests/data/radient.gif"); |
- // Multiple frame images. |
- testRandomFrameDecode("/LayoutTests/fast/images/resources/animated-gif-with-offsets.gif"); |
- testRandomFrameDecode("/LayoutTests/fast/images/resources/animated-10color.gif"); |
+ testRandomFrameDecode("/LayoutTests/fast/images/resources/webp-animated.webp"); |
+ testRandomFrameDecode("/LayoutTests/fast/images/resources/webp-animated-opaque.webp"); |
+ testRandomFrameDecode("/LayoutTests/fast/images/resources/webp-animated-large.webp"); |
+ testRandomFrameDecode("/LayoutTests/fast/images/resources/webp-animated-icc-xmp.webp"); |
} |
-TEST(GIFImageDecoderTest, randomDecodeAfterClearFrameBufferCache) |
+TEST_F(AnimatedWebPTests, randomDecodeAfterClearFrameBufferCache) |
{ |
- // Single frame image. |
- testRandomDecodeAfterClearFrameBufferCache("/Source/WebKit/chromium/tests/data/radient.gif"); |
- // Multiple frame images. |
- testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/animated-gif-with-offsets.gif"); |
- testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/animated-10color.gif"); |
+ testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/webp-animated.webp"); |
+ testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/webp-animated-opaque.webp"); |
+ testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/webp-animated-large.webp"); |
+ testRandomDecodeAfterClearFrameBufferCache("/LayoutTests/fast/images/resources/webp-animated-icc-xmp.webp"); |
} |
-TEST(GIFImageDecoderTest, resumePartialDecodeAfterClearFrameBufferCache) |
+TEST_F(AnimatedWebPTests, resumePartialDecodeAfterClearFrameBufferCache) |
{ |
- RefPtr<SharedBuffer> fullData = readFile("/LayoutTests/fast/images/resources/animated-10color.gif"); |
+ RefPtr<SharedBuffer> fullData = readFile("/LayoutTests/fast/images/resources/webp-animated-large.webp"); |
ASSERT_TRUE(fullData.get()); |
Vector<unsigned> baselineHashes; |
createDecodingBaseline(fullData.get(), &baselineHashes); |
size_t frameCount = baselineHashes.size(); |
- OwnPtr<GIFImageDecoder> decoder = createDecoder(); |
+ OwnPtr<WEBPImageDecoder> decoder = createDecoder(); |
// Let frame 0 be partially decoded. |
size_t partialSize = 1; |
@@ -465,3 +443,4 @@ TEST(GIFImageDecoderTest, resumePartialDecodeAfterClearFrameBufferCache) |
} |
#endif |
+ |