Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(471)

Unified Diff: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp

Issue 2565323003: Move gif image decoder to SkCodec (Closed)
Patch Set: Fix potential memory leak Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp
diff --git a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp
index d7ff80ed8abbd1d06688ce880514bd98bcf0a116..a8c7704fbb8479ecabbe9218bf832426720979ea 100644
--- a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp
+++ b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoderTest.cpp
@@ -59,16 +59,7 @@ void testRepetitionCount(const char* dir,
RefPtr<SharedBuffer> data = readFile(dir, file);
ASSERT_TRUE(data.get());
decoder->setData(data.get(), true);
- EXPECT_EQ(cAnimationLoopOnce,
- decoder->repetitionCount()); // Default value before decode.
-
- for (size_t i = 0; i < decoder->frameCount(); ++i) {
- ImageFrame* frame = decoder->frameBufferAtIndex(i);
- EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus());
- }
-
- EXPECT_EQ(expectedRepetitionCount,
- decoder->repetitionCount()); // Expected value after decode.
+ EXPECT_EQ(expectedRepetitionCount, decoder->repetitionCount());
}
} // anonymous namespace
@@ -79,7 +70,6 @@ TEST(GIFImageDecoderTest, decodeTwoFrames) {
RefPtr<SharedBuffer> data = readFile(layoutTestResourcesDir, "animated.gif");
ASSERT_TRUE(data.get());
decoder->setData(data.get(), true);
- EXPECT_EQ(cAnimationLoopOnce, decoder->repetitionCount());
ImageFrame* frame = decoder->frameBufferAtIndex(0);
uint32_t generationID0 = frame->bitmap().getGenerationID();
@@ -104,10 +94,6 @@ TEST(GIFImageDecoderTest, parseAndDecode) {
RefPtr<SharedBuffer> data = readFile(layoutTestResourcesDir, "animated.gif");
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());
ImageFrame* frame = decoder->frameBufferAtIndex(0);
EXPECT_EQ(ImageFrame::FrameComplete, frame->getStatus());
@@ -307,24 +293,6 @@ TEST(GIFImageDecoderTest, badCode) {
EXPECT_TRUE(testDecoder->failed());
}
-TEST(GIFImageDecoderTest, invalidDisposalMethod) {
- std::unique_ptr<ImageDecoder> decoder = createDecoder();
-
- // The image has 2 frames, with disposal method 4 and 5, respectively.
- RefPtr<SharedBuffer> data =
- readFile(decodersTestingDir, "invalid-disposal-method.gif");
- ASSERT_TRUE(data.get());
- decoder->setData(data.get(), true);
-
- EXPECT_EQ(2u, decoder->frameCount());
- // Disposal method 4 is converted to ImageFrame::DisposeOverwritePrevious.
- EXPECT_EQ(ImageFrame::DisposeOverwritePrevious,
- decoder->frameBufferAtIndex(0)->getDisposalMethod());
- // Disposal method 5 is ignored.
- EXPECT_EQ(ImageFrame::DisposeNotSpecified,
- decoder->frameBufferAtIndex(1)->getDisposalMethod());
-}
-
TEST(GIFImageDecoderTest, firstFrameHasGreaterSizeThanScreenSize) {
RefPtr<SharedBuffer> fullData = readFile(
decodersTestingDir, "first-frame-has-greater-size-than-screen-size.gif");
@@ -359,14 +327,6 @@ TEST(GIFImageDecoderTest, bitmapAlphaType) {
RefPtr<SharedBuffer> fullData = readFile(decodersTestingDir, "radient.gif");
ASSERT_TRUE(fullData.get());
- // Empirically chosen truncation size:
- // a) large enough to produce a partial frame &&
- // b) small enough to not fully decode the frame
- const size_t kTruncateSize = 800;
- ASSERT_TRUE(kTruncateSize < fullData->size());
- RefPtr<SharedBuffer> partialData =
- SharedBuffer::create(fullData->data(), kTruncateSize);
-
std::unique_ptr<ImageDecoder> premulDecoder = WTF::wrapUnique(
new GIFImageDecoder(ImageDecoder::AlphaPremultiplied,
ColorBehavior::transformToTargetForTesting(),
@@ -376,34 +336,18 @@ TEST(GIFImageDecoderTest, bitmapAlphaType) {
ColorBehavior::transformToTargetForTesting(),
ImageDecoder::noDecodedImageByteLimit));
- // Partially decoded frame => the frame alpha type is unknown and should
- // reflect the requested format.
- premulDecoder->setData(partialData.get(), false);
- ASSERT_TRUE(premulDecoder->frameCount());
- unpremulDecoder->setData(partialData.get(), false);
- ASSERT_TRUE(unpremulDecoder->frameCount());
- ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0);
- EXPECT_TRUE(premulFrame &&
- premulFrame->getStatus() != ImageFrame::FrameComplete);
- EXPECT_EQ(premulFrame->bitmap().alphaType(), kPremul_SkAlphaType);
- ImageFrame* unpremulFrame = unpremulDecoder->frameBufferAtIndex(0);
- EXPECT_TRUE(unpremulFrame &&
- unpremulFrame->getStatus() != ImageFrame::FrameComplete);
- EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kUnpremul_SkAlphaType);
-
- // Fully decoded frame => the frame alpha type is known (opaque).
premulDecoder->setData(fullData.get(), true);
ASSERT_TRUE(premulDecoder->frameCount());
unpremulDecoder->setData(fullData.get(), true);
ASSERT_TRUE(unpremulDecoder->frameCount());
- premulFrame = premulDecoder->frameBufferAtIndex(0);
+ ImageFrame* premulFrame = premulDecoder->frameBufferAtIndex(0);
EXPECT_TRUE(premulFrame &&
premulFrame->getStatus() == ImageFrame::FrameComplete);
- EXPECT_EQ(premulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
- unpremulFrame = unpremulDecoder->frameBufferAtIndex(0);
+ EXPECT_EQ(premulFrame->bitmap().alphaType(), kPremul_SkAlphaType);
+ ImageFrame* unpremulFrame = unpremulDecoder->frameBufferAtIndex(0);
EXPECT_TRUE(unpremulFrame &&
unpremulFrame->getStatus() == ImageFrame::FrameComplete);
- EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kOpaque_SkAlphaType);
+ EXPECT_EQ(unpremulFrame->bitmap().alphaType(), kUnpremul_SkAlphaType);
}
namespace {

Powered by Google App Engine
This is Rietveld 408576698