Index: third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp b/third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp |
index 9f13c66187d803f3a6e260c81e190135a521f0bc..4dc720e5707b10a0fabd676e4d5207afbfafb3e6 100644 |
--- a/third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp |
@@ -220,4 +220,45 @@ TEST(ImageResourceTest, UpdateBitmapImages) |
ASSERT_TRUE(cachedImage->image()->isBitmapImage()); |
} |
+TEST(ImageResourceTest, ReloadIfLoFi) |
+{ |
+ KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); |
+ URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html", "text/html"); |
+ ResourcePtr<ImageResource> cachedImage = new ImageResource(ResourceRequest(testURL), nullptr); |
+ cachedImage->setLoading(true); |
+ |
+ MockImageResourceClient client(cachedImage); |
+ ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); |
+ |
+ // Send the image response. |
+ Vector<unsigned char> jpeg = jpegImage(); |
+ ResourceResponse resourceResponse(KURL(), "image/jpeg", jpeg.size(), nullAtom, String()); |
+ resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); |
+ |
+ cachedImage->responseReceived(resourceResponse, nullptr); |
+ cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()), jpeg.size()); |
+ cachedImage->finish(); |
+ ASSERT_FALSE(cachedImage->errorOccurred()); |
+ ASSERT_TRUE(cachedImage->hasImage()); |
+ ASSERT_FALSE(cachedImage->image()->isNull()); |
+ ASSERT_EQ(client.imageChangedCount(), 2); |
+ ASSERT_TRUE(client.notifyFinishedCalled()); |
+ ASSERT_TRUE(cachedImage->image()->isBitmapImage()); |
+ |
+ cachedImage->reloadIfLoFi(fetcher); |
+ ASSERT_FALSE(cachedImage->errorOccurred()); |
+ ASSERT_FALSE(cachedImage->resourceBuffer()); |
+ ASSERT_FALSE(cachedImage->hasImage()); |
+ ASSERT_EQ(client.imageChangedCount(), 3); |
+ |
+ cachedImage->responseReceived(resourceResponse, nullptr); |
+ cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()), jpeg.size()); |
+ cachedImage->finish(); |
+ ASSERT_FALSE(cachedImage->errorOccurred()); |
+ ASSERT_TRUE(cachedImage->hasImage()); |
+ ASSERT_FALSE(cachedImage->image()->isNull()); |
+ ASSERT_TRUE(client.notifyFinishedCalled()); |
+ ASSERT_TRUE(cachedImage->image()->isBitmapImage()); |
+} |
+ |
} // namespace blink |