| Index: third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| index 914463ffe762c6ca0ed2198d2c850c74719a9632..8cfb002787d51fd1a114a7b432ef9af83133fbe8 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
|
| @@ -8923,4 +8923,30 @@ TEST_F(WebFrameTest, ScriptPriority)
|
| client.verifyAllRequests();
|
| }
|
|
|
| +class MultipleDataChunkDelegate : public WebURLLoaderTestDelegate {
|
| +public:
|
| + void didReceiveData(WebURLLoaderClient* originalClient, WebURLLoader* loader, const char* data, int dataLength, int encodedDataLength) override
|
| + {
|
| + EXPECT_GT(dataLength, 16);
|
| + originalClient->didReceiveData(loader, data, 16, 16, 16);
|
| + // This didReceiveData call shouldn't crash due to a failed assertion.
|
| + originalClient->didReceiveData(loader, data + 16, dataLength - 16, encodedDataLength - 16, dataLength - 16);
|
| + }
|
| +};
|
| +
|
| +TEST_F(WebFrameTest, ImageDocumentDecodeError)
|
| +{
|
| + std::string url = m_baseURL + "not_an_image.ico";
|
| + URLTestHelpers::registerMockedURLLoad(toKURL(url), "not_an_image.ico", "image/x-icon");
|
| + MultipleDataChunkDelegate delegate;
|
| + Platform::current()->getURLLoaderMockFactory()->setLoaderDelegate(&delegate);
|
| + FrameTestHelpers::WebViewHelper helper;
|
| + helper.initializeAndLoad(url, true);
|
| + Platform::current()->getURLLoaderMockFactory()->setLoaderDelegate(nullptr);
|
| +
|
| + Document* document = toLocalFrame(helper.webView()->page()->mainFrame())->document();
|
| + EXPECT_TRUE(document->isImageDocument());
|
| + EXPECT_EQ(Resource::DecodeError, toImageDocument(document)->cachedImage()->getStatus());
|
| +}
|
| +
|
| } // namespace blink
|
|
|