Chromium Code Reviews| Index: third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp |
| diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp |
| index 962a51741d3c46f07a10a764fc513fce9bb5ec95..04c3e7e1a112e571cd45e627cd9018acb94ccec4 100644 |
| --- a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp |
| +++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp |
| @@ -548,6 +548,95 @@ TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinished) { |
| WebCachePolicy::BypassingCache); |
| } |
| +TEST(ImageResourceTest, |
| + ReloadIfLoFiOrPlaceholderAfterFinishedWithoutServerLoFiOnBit) { |
|
megjablon
2017/04/04 00:52:06
Do we need this and the above test? Since the prev
sclittle
2017/04/04 03:12:16
Done.
|
| + KURL testURL(ParsedURLString, kTestURL); |
| + ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| + ResourceRequest request = ResourceRequest(testURL); |
| + request.setPreviewsState(WebURLRequest::PreviewsUnspecified); |
| + ImageResource* imageResource = ImageResource::create(request); |
| + imageResource->setStatus(ResourceStatus::Pending); |
| + |
| + std::unique_ptr<MockImageResourceObserver> observer = |
| + MockImageResourceObserver::create(imageResource->getContent()); |
| + ResourceFetcher* fetcher = createFetcher(); |
| + |
| + // Send the image response. |
| + ResourceResponse resourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), |
| + nullAtom); |
| + resourceResponse.addHTTPHeaderField("chrome-proxy-content-transform", |
| + "empty-image"); |
| + |
| + imageResource->responseReceived(resourceResponse, nullptr); |
| + imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), |
| + sizeof(kJpegImage)); |
| + imageResource->finish(); |
| + EXPECT_FALSE(imageResource->errorOccurred()); |
| + ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| + EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| + EXPECT_EQ(2, observer->imageChangedCount()); |
| + EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| + // The observer should have been notified that the image load completed. |
| + EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| + EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| + EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| + EXPECT_EQ(kJpegImageWidth, imageResource->getContent()->getImage()->width()); |
| + EXPECT_EQ(kJpegImageHeight, |
| + imageResource->getContent()->getImage()->height()); |
| + |
| + // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. |
| + imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, |
| + Resource::kReloadAlways); |
| + |
| + EXPECT_EQ(3, observer->imageChangedCount()); |
| + testThatReloadIsStartedThenServeReload( |
| + testURL, imageResource, imageResource->getContent(), observer.get(), |
| + WebCachePolicy::BypassingCache); |
| +} |
| + |
| +TEST(ImageResourceTest, |
| + ReloadIfLoFiOrPlaceholderAfterFinishedWithoutLoFiHeaders) { |
| + KURL testURL(ParsedURLString, kTestURL); |
| + ScopedMockedURLLoad scopedMockedURLLoad(testURL, GetTestFilePath()); |
| + ResourceRequest request = ResourceRequest(testURL); |
| + request.setPreviewsState(WebURLRequest::ServerLoFiOn); |
| + ImageResource* imageResource = ImageResource::create(request); |
| + imageResource->setStatus(ResourceStatus::Pending); |
| + |
| + std::unique_ptr<MockImageResourceObserver> observer = |
| + MockImageResourceObserver::create(imageResource->getContent()); |
| + ResourceFetcher* fetcher = createFetcher(); |
| + |
| + // Send the image response, without any LoFi image response headers. |
| + imageResource->responseReceived( |
| + ResourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), nullAtom), |
| + nullptr); |
| + imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), |
| + sizeof(kJpegImage)); |
| + imageResource->finish(); |
| + EXPECT_FALSE(imageResource->errorOccurred()); |
| + ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| + EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| + EXPECT_EQ(2, observer->imageChangedCount()); |
| + EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| + // The observer should have been notified that the image load completed. |
| + EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| + EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnImageNotifyFinished()); |
| + EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| + EXPECT_EQ(kJpegImageWidth, imageResource->getContent()->getImage()->width()); |
| + EXPECT_EQ(kJpegImageHeight, |
| + imageResource->getContent()->getImage()->height()); |
| + |
| + // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. |
| + imageResource->reloadIfLoFiOrPlaceholderImage(fetcher, |
| + Resource::kReloadAlways); |
| + |
| + // The image should not have been reloaded, since it didn't have the LoFi |
| + // image response headers. |
| + EXPECT_EQ(2, observer->imageChangedCount()); |
| + EXPECT_TRUE(imageResource->isLoaded()); |
| +} |
| + |
| TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderViaResourceFetcher) { |
| ResourceFetcher* fetcher = createFetcher(); |