Chromium Code Reviews| 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 8c4e988b4ca6653476eb4df645c89a6ac8288843..9b68d8cba6f89810d60559f178078a69b330d044 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); |
|
msarett1
2017/03/07 13:27:18
I don't think radient.gif is one of those edge cas
cblume
2017/03/07 19:36:29
You are right.
radient.gif is only marked as trans
scroggo_chromium
2017/03/07 21:35:08
That sounds reasonable to me.
scroggo_chromium
2017/03/07 22:06:14
Oh yeah - we already do report whether the first f
|
| + 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 blink |