| Index: third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp
|
| diff --git a/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp b/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp
|
| index 31b0a3f7ebb3308774d91a9cc2732e12ca1e9db7..857d05fcd09b5d792848d221386520267b23396b 100644
|
| --- a/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp
|
| +++ b/third_party/WebKit/Source/platform/image-decoders/ico/ICOImageDecoderTest.cpp
|
| @@ -28,4 +28,32 @@ TEST(ICOImageDecoderTests, parseAndDecodeByteByByte)
|
| testByteByByteDecode(&createDecoder, "/LayoutTests/fast/images/resources/1bit.ico", 1u, cAnimationNone);
|
| }
|
|
|
| +TEST(ICOImageDecoderTests, setDataTruncated)
|
| +{
|
| + std::unique_ptr<ImageDecoder> decoder = createDecoder();
|
| +
|
| + RefPtr<SharedBuffer> data = readFile("/LayoutTests/fast/images/resources/wrong-frame-dimensions.ico");
|
| + 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(3u, decoder->frameCount());
|
| + EXPECT_FALSE(decoder->failed());
|
| +
|
| + // Issue 621488 - all data received, but truncated.
|
| + RefPtr<SharedBuffer> emptyData = SharedBuffer::create(data->data(), size_t { 0 });
|
| + decoder->setData(emptyData.get(), true);
|
| + EXPECT_EQ(3u, decoder->frameCount());
|
| + EXPECT_TRUE(decoder->failed());
|
| +
|
| + decoder = createDecoder();
|
| + decoder->setData(tempData.get(), true);
|
| + decoder->frameBufferAtIndex(2);
|
| + EXPECT_FALSE(decoder->failed());
|
| + decoder->frameBufferAtIndex(1);
|
| + EXPECT_TRUE(decoder->failed());
|
| +}
|
| +
|
| } // namespace blink
|
|
|