Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp

Issue 2797993007: Show image placeholders on dimension decode error (Closed)
Patch Set: fix comment Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/loader/resource/ImageResource.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 image_resource->NotifyStartLoad(); 183 image_resource->NotifyStartLoad();
184 image_resource->ResponseReceived(response, nullptr); 184 image_resource->ResponseReceived(response, nullptr);
185 image_resource->AppendData(data, data_size); 185 image_resource->AppendData(data, data_size);
186 image_resource->Finish(); 186 image_resource->Finish();
187 } 187 }
188 188
189 void TestThatReloadIsStartedThenServeReload(const KURL& test_url, 189 void TestThatReloadIsStartedThenServeReload(const KURL& test_url,
190 ImageResource* image_resource, 190 ImageResource* image_resource,
191 ImageResourceContent* content, 191 ImageResourceContent* content,
192 MockImageResourceObserver* observer, 192 MockImageResourceObserver* observer,
193 WebCachePolicy policy_for_reload) { 193 WebCachePolicy policy_for_reload,
194 bool placeholder_before_reload) {
194 const char* data = reinterpret_cast<const char*>(kJpegImage2); 195 const char* data = reinterpret_cast<const char*>(kJpegImage2);
195 constexpr size_t kDataLength = sizeof(kJpegImage2); 196 constexpr size_t kDataLength = sizeof(kJpegImage2);
196 constexpr int kImageWidth = 50; 197 constexpr int kImageWidth = 50;
197 constexpr int kImageHeight = 50; 198 constexpr int kImageHeight = 50;
198 199
199 // Checks that |imageResource| and |content| are ready for non-placeholder 200 // Checks that |imageResource| and |content| are ready for non-placeholder
200 // reloading. 201 // reloading.
201 EXPECT_EQ(ResourceStatus::kPending, image_resource->GetStatus()); 202 EXPECT_EQ(ResourceStatus::kPending, image_resource->GetStatus());
202 EXPECT_FALSE(image_resource->ResourceBuffer()); 203 EXPECT_FALSE(image_resource->ResourceBuffer());
203 EXPECT_FALSE(image_resource->ShouldShowPlaceholder()); 204 EXPECT_EQ(placeholder_before_reload, image_resource->ShouldShowPlaceholder());
204 EXPECT_EQ(g_null_atom, 205 EXPECT_EQ(g_null_atom,
205 image_resource->GetResourceRequest().HttpHeaderField("range")); 206 image_resource->GetResourceRequest().HttpHeaderField("range"));
206 EXPECT_EQ(policy_for_reload, 207 EXPECT_EQ(policy_for_reload,
207 image_resource->GetResourceRequest().GetCachePolicy()); 208 image_resource->GetResourceRequest().GetCachePolicy());
208 EXPECT_EQ(content, image_resource->GetContent()); 209 EXPECT_EQ(content, image_resource->GetContent());
209 EXPECT_FALSE(content->HasImage()); 210 EXPECT_FALSE(content->HasImage());
210 211
211 // Checks |observer| before reloading. 212 // Checks |observer| before reloading.
212 const int original_image_changed_count = observer->ImageChangedCount(); 213 const int original_image_changed_count = observer->ImageChangedCount();
213 const bool already_notified_finish = observer->ImageNotifyFinishedCalled(); 214 const bool already_notified_finish = observer->ImageNotifyFinishedCalled();
(...skipping 22 matching lines...) Expand all
236 // response is served, then imageNotifyFinished() should be called with 237 // response is served, then imageNotifyFinished() should be called with
237 // the new image (of width |imageWidth|). 238 // the new image (of width |imageWidth|).
238 EXPECT_EQ(kImageWidth, observer->ImageWidthOnImageNotifyFinished()); 239 EXPECT_EQ(kImageWidth, observer->ImageWidthOnImageNotifyFinished());
239 } 240 }
240 241
241 // Checks |content| receives the correct image. 242 // Checks |content| receives the correct image.
242 EXPECT_TRUE(content->HasImage()); 243 EXPECT_TRUE(content->HasImage());
243 EXPECT_FALSE(content->GetImage()->IsNull()); 244 EXPECT_FALSE(content->GetImage()->IsNull());
244 EXPECT_EQ(kImageWidth, content->GetImage()->width()); 245 EXPECT_EQ(kImageWidth, content->GetImage()->width());
245 EXPECT_EQ(kImageHeight, content->GetImage()->height()); 246 EXPECT_EQ(kImageHeight, content->GetImage()->height());
246 EXPECT_TRUE(content->GetImage()->IsBitmapImage());
247 EXPECT_FALSE(content->GetImage()->PaintImageForCurrentFrame().is_multipart()); 247 EXPECT_FALSE(content->GetImage()->PaintImageForCurrentFrame().is_multipart());
248 } 248 }
249 249
250 AtomicString BuildContentRange(size_t range_length, size_t total_length) { 250 AtomicString BuildContentRange(size_t range_length, size_t total_length) {
251 return AtomicString(String("bytes 0-" + String::Number(range_length - 1) + 251 return AtomicString(String("bytes 0-" + String::Number(range_length - 1) +
252 "/" + String::Number(total_length))); 252 "/" + String::Number(total_length)));
253 } 253 }
254 254
255 void TestThatIsPlaceholderRequestAndServeResponse( 255 void TestThatIsPlaceholderRequestAndServeResponse(
256 const KURL& url, 256 const KURL& url,
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 EXPECT_EQ(kJpegImageHeight, 592 EXPECT_EQ(kJpegImageHeight,
593 image_resource->GetContent()->GetImage()->height()); 593 image_resource->GetContent()->GetImage()->height());
594 594
595 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. 595 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading.
596 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 596 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
597 Resource::kReloadAlways); 597 Resource::kReloadAlways);
598 598
599 EXPECT_EQ(3, observer->ImageChangedCount()); 599 EXPECT_EQ(3, observer->ImageChangedCount());
600 TestThatReloadIsStartedThenServeReload( 600 TestThatReloadIsStartedThenServeReload(
601 test_url, image_resource, image_resource->GetContent(), observer.get(), 601 test_url, image_resource, image_resource->GetContent(), observer.get(),
602 WebCachePolicy::kBypassingCache); 602 WebCachePolicy::kBypassingCache, false);
603 } 603 }
604 604
605 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinishedWithOldHeaders) { 605 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinishedWithOldHeaders) {
606 KURL test_url(kParsedURLString, kTestURL); 606 KURL test_url(kParsedURLString, kTestURL);
607 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 607 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
608 ImageResource* image_resource = ImageResource::CreateForTest(test_url); 608 ImageResource* image_resource = ImageResource::CreateForTest(test_url);
609 image_resource->SetStatus(ResourceStatus::kPending); 609 image_resource->SetStatus(ResourceStatus::kPending);
610 image_resource->NotifyStartLoad(); 610 image_resource->NotifyStartLoad();
611 611
612 std::unique_ptr<MockImageResourceObserver> observer = 612 std::unique_ptr<MockImageResourceObserver> observer =
(...skipping 22 matching lines...) Expand all
635 EXPECT_EQ(kJpegImageHeight, 635 EXPECT_EQ(kJpegImageHeight,
636 image_resource->GetContent()->GetImage()->height()); 636 image_resource->GetContent()->GetImage()->height());
637 637
638 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. 638 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading.
639 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 639 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
640 Resource::kReloadAlways); 640 Resource::kReloadAlways);
641 641
642 EXPECT_EQ(3, observer->ImageChangedCount()); 642 EXPECT_EQ(3, observer->ImageChangedCount());
643 TestThatReloadIsStartedThenServeReload( 643 TestThatReloadIsStartedThenServeReload(
644 test_url, image_resource, image_resource->GetContent(), observer.get(), 644 test_url, image_resource, image_resource->GetContent(), observer.get(),
645 WebCachePolicy::kBypassingCache); 645 WebCachePolicy::kBypassingCache, false);
646 } 646 }
647 647
648 TEST(ImageResourceTest, 648 TEST(ImageResourceTest,
649 ReloadIfLoFiOrPlaceholderAfterFinishedWithoutLoFiHeaders) { 649 ReloadIfLoFiOrPlaceholderAfterFinishedWithoutLoFiHeaders) {
650 KURL test_url(kParsedURLString, kTestURL); 650 KURL test_url(kParsedURLString, kTestURL);
651 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 651 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
652 ResourceRequest request(test_url); 652 ResourceRequest request(test_url);
653 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); 653 request.SetPreviewsState(WebURLRequest::kServerLoFiOn);
654 request.SetFetchCredentialsMode(WebURLRequest::kFetchCredentialsModeOmit); 654 request.SetFetchCredentialsMode(WebURLRequest::kFetchCredentialsModeOmit);
655 ImageResource* image_resource = ImageResource::Create(request); 655 ImageResource* image_resource = ImageResource::Create(request);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 image_resource->Loader()->DidFinishLoading( 718 image_resource->Loader()->DidFinishLoading(
719 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage)); 719 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage));
720 720
721 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); 721 EXPECT_TRUE(observer->ImageNotifyFinishedCalled());
722 EXPECT_EQ(image_resource, fetcher->CachedResource(test_url)); 722 EXPECT_EQ(image_resource, fetcher->CachedResource(test_url));
723 723
724 fetcher->ReloadLoFiImages(); 724 fetcher->ReloadLoFiImages();
725 725
726 EXPECT_EQ(3, observer->ImageChangedCount()); 726 EXPECT_EQ(3, observer->ImageChangedCount());
727 727
728 TestThatReloadIsStartedThenServeReload(test_url, image_resource, content, 728 TestThatReloadIsStartedThenServeReload(
729 observer.get(), 729 test_url, image_resource, content, observer.get(),
730 WebCachePolicy::kBypassingCache); 730 WebCachePolicy::kBypassingCache, false);
731 731
732 GetMemoryCache()->Remove(image_resource); 732 GetMemoryCache()->Remove(image_resource);
733 } 733 }
734 734
735 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringFetch) { 735 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringFetch) {
736 KURL test_url(kParsedURLString, kTestURL); 736 KURL test_url(kParsedURLString, kTestURL);
737 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 737 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
738 738
739 ResourceRequest request(test_url); 739 ResourceRequest request(test_url);
740 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); 740 request.SetPreviewsState(WebURLRequest::kServerLoFiOn);
(...skipping 27 matching lines...) Expand all
768 Resource::kReloadAlways); 768 Resource::kReloadAlways);
769 769
770 EXPECT_EQ(2, observer->ImageChangedCount()); 770 EXPECT_EQ(2, observer->ImageChangedCount());
771 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged()); 771 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged());
772 // The observer should not have been notified of completion yet, since the 772 // The observer should not have been notified of completion yet, since the
773 // image is still loading. 773 // image is still loading.
774 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 774 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
775 775
776 TestThatReloadIsStartedThenServeReload( 776 TestThatReloadIsStartedThenServeReload(
777 test_url, image_resource, image_resource->GetContent(), observer.get(), 777 test_url, image_resource, image_resource->GetContent(), observer.get(),
778 WebCachePolicy::kBypassingCache); 778 WebCachePolicy::kBypassingCache, false);
779 } 779 }
780 780
781 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderForPlaceholder) { 781 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
782 KURL test_url(kParsedURLString, kTestURL); 782 KURL test_url(kParsedURLString, kTestURL);
783 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 783 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
784 784
785 ResourceFetcher* fetcher = CreateFetcher(); 785 ResourceFetcher* fetcher = CreateFetcher();
786 FetchParameters params{ResourceRequest(test_url)}; 786 FetchParameters params{ResourceRequest(test_url)};
787 params.SetAllowImagePlaceholder(); 787 params.SetAllowImagePlaceholder();
788 ImageResource* image_resource = ImageResource::Fetch(params, fetcher); 788 ImageResource* image_resource = ImageResource::Fetch(params, fetcher);
789 EXPECT_EQ(FetchParameters::kAllowPlaceholder, 789 EXPECT_EQ(FetchParameters::kAllowPlaceholder,
790 params.GetPlaceholderImageRequestType()); 790 params.GetPlaceholderImageRequestType());
791 std::unique_ptr<MockImageResourceObserver> observer = 791 std::unique_ptr<MockImageResourceObserver> observer =
792 MockImageResourceObserver::Create(image_resource->GetContent()); 792 MockImageResourceObserver::Create(image_resource->GetContent());
793 793
794 TestThatIsPlaceholderRequestAndServeResponse(test_url, image_resource, 794 TestThatIsPlaceholderRequestAndServeResponse(test_url, image_resource,
795 observer.get()); 795 observer.get());
796 796
797 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 797 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
798 Resource::kReloadAlways); 798 Resource::kReloadAlways);
799 799
800 TestThatReloadIsStartedThenServeReload( 800 TestThatReloadIsStartedThenServeReload(
801 test_url, image_resource, image_resource->GetContent(), observer.get(), 801 test_url, image_resource, image_resource->GetContent(), observer.get(),
802 WebCachePolicy::kBypassingCache); 802 WebCachePolicy::kBypassingCache, false);
803 } 803 }
804 804
805 TEST(ImageResourceTest, SVGImage) { 805 TEST(ImageResourceTest, SVGImage) {
806 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo"); 806 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo");
807 ImageResource* image_resource = ImageResource::CreateForTest(url); 807 ImageResource* image_resource = ImageResource::CreateForTest(url);
808 std::unique_ptr<MockImageResourceObserver> observer = 808 std::unique_ptr<MockImageResourceObserver> observer =
809 MockImageResourceObserver::Create(image_resource->GetContent()); 809 MockImageResourceObserver::Create(image_resource->GetContent());
810 810
811 ReceiveResponse(image_resource, url, "image/svg+xml", kSvgImage, 811 ReceiveResponse(image_resource, url, "image/svg+xml", kSvgImage,
812 strlen(kSvgImage)); 812 strlen(kSvgImage));
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 image_resource->Loader()->DidReceiveResponse( 1321 image_resource->Loader()->DidReceiveResponse(
1322 WrappedResourceResponse(bad_response)); 1322 WrappedResourceResponse(bad_response));
1323 1323
1324 EXPECT_EQ(0, observer->ImageChangedCount()); 1324 EXPECT_EQ(0, observer->ImageChangedCount());
1325 1325
1326 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData)); 1326 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData));
1327 1327
1328 // The dimensions could not be extracted, so the full original image should be 1328 // The dimensions could not be extracted, so the full original image should be
1329 // loading. 1329 // loading.
1330 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1330 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1331 EXPECT_EQ(2, observer->ImageChangedCount());
1332 EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
1333
1334 TestThatReloadIsStartedThenServeReload(
1335 test_url, image_resource, image_resource->GetContent(), observer.get(),
1336 WebCachePolicy::kBypassingCache, false);
1337 }
1338
1339 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
1340 KURL test_url(kParsedURLString, kTestURL);
1341 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1342
1343 ResourceRequest request = ResourceRequest(test_url);
1344 request.SetPreviewsState(WebURLRequest::kClientLoFiOn);
1345 FetchParameters params{request};
1346 params.SetAllowImagePlaceholder();
1347 ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
1348 EXPECT_EQ(FetchParameters::kAllowPlaceholder,
1349 params.GetPlaceholderImageRequestType());
1350 EXPECT_EQ("bytes=0-2047",
1351 image_resource->GetResourceRequest().HttpHeaderField("range"));
1352 EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
1353 std::unique_ptr<MockImageResourceObserver> observer =
1354 MockImageResourceObserver::Create(image_resource->GetContent());
1355
1356 const char kBadData[] = "notanimageresponse";
1357
1358 ResourceResponse bad_response(test_url, "image/jpeg", sizeof(kBadData),
1359 g_null_atom);
1360 bad_response.SetHTTPStatusCode(206);
1361 bad_response.SetHTTPHeaderField(
1362 "content-range", BuildContentRange(sizeof(kBadData), sizeof(kJpegImage)));
1363
1364 image_resource->Loader()->DidReceiveResponse(
1365 WrappedResourceResponse(bad_response));
1366
1367 EXPECT_EQ(0, observer->ImageChangedCount());
1368
1369 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData));
1370
1371 // The dimensions could not be extracted, so the full original image should be
1372 // loading.
1373 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1331 EXPECT_EQ(2, observer->ImageChangedCount()); 1374 EXPECT_EQ(2, observer->ImageChangedCount());
1332 1375
1333 TestThatReloadIsStartedThenServeReload( 1376 TestThatReloadIsStartedThenServeReload(
1334 test_url, image_resource, image_resource->GetContent(), observer.get(), 1377 test_url, image_resource, image_resource->GetContent(), observer.get(),
1335 WebCachePolicy::kBypassingCache); 1378 WebCachePolicy::kBypassingCache, true);
1379
1380 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage());
1381 EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
1336 } 1382 }
1337 1383
1338 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) { 1384 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) {
1339 const struct { 1385 const struct {
1340 WebURLRequest::PreviewsState initial_previews_state; 1386 WebURLRequest::PreviewsState initial_previews_state;
1341 WebURLRequest::PreviewsState expected_reload_previews_state; 1387 WebURLRequest::PreviewsState expected_reload_previews_state;
1388 bool placeholder_before_reload;
1389 bool placeholder_after_reload;
1342 } tests[] = { 1390 } tests[] = {
1343 {WebURLRequest::kPreviewsUnspecified, 1391 {WebURLRequest::kPreviewsUnspecified, WebURLRequest::kPreviewsNoTransform,
1344 WebURLRequest::kPreviewsNoTransform}, 1392 false},
1345 {WebURLRequest::kClientLoFiOn, WebURLRequest::kPreviewsNoTransform | 1393 {WebURLRequest::kClientLoFiOn,
1346 WebURLRequest::kClientLoFiAutoReload}, 1394 WebURLRequest::kPreviewsNoTransform |
1395 WebURLRequest::kClientLoFiAutoReload,
1396 true},
1347 }; 1397 };
1348 1398
1349 for (const auto& test : tests) { 1399 for (const auto& test : tests) {
1350 KURL test_url(kParsedURLString, kTestURL); 1400 KURL test_url(kParsedURLString, kTestURL);
1351 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1401 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1352 1402
1353 ResourceRequest resource_request(test_url); 1403 ResourceRequest resource_request(test_url);
1354 resource_request.SetPreviewsState(test.initial_previews_state); 1404 resource_request.SetPreviewsState(test.initial_previews_state);
1355 FetchParameters params(resource_request); 1405 FetchParameters params(resource_request);
1356 1406
(...skipping 30 matching lines...) Expand all
1387 image_resource->Loader()->DidFinishLoading( 1437 image_resource->Loader()->DidFinishLoading(
1388 0.0, kJpegImageSubrangeWithoutDimensionsLength, 1438 0.0, kJpegImageSubrangeWithoutDimensionsLength,
1389 kJpegImageSubrangeWithoutDimensionsLength, 1439 kJpegImageSubrangeWithoutDimensionsLength,
1390 kJpegImageSubrangeWithoutDimensionsLength); 1440 kJpegImageSubrangeWithoutDimensionsLength);
1391 1441
1392 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1442 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1393 EXPECT_EQ(2, observer->ImageChangedCount()); 1443 EXPECT_EQ(2, observer->ImageChangedCount());
1394 1444
1395 TestThatReloadIsStartedThenServeReload( 1445 TestThatReloadIsStartedThenServeReload(
1396 test_url, image_resource, image_resource->GetContent(), observer.get(), 1446 test_url, image_resource, image_resource->GetContent(), observer.get(),
1397 WebCachePolicy::kBypassingCache); 1447 WebCachePolicy::kBypassingCache, test.placeholder_before_reload);
1398 1448
1399 EXPECT_EQ(test.expected_reload_previews_state, 1449 EXPECT_EQ(test.expected_reload_previews_state,
1400 image_resource->GetResourceRequest().GetPreviewsState()); 1450 image_resource->GetResourceRequest().GetPreviewsState());
1401 } 1451 }
1402 } 1452 }
1403 1453
1404 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) { 1454 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) {
1405 KURL test_url(kParsedURLString, kTestURL); 1455 KURL test_url(kParsedURLString, kTestURL);
1406 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1456 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1407 1457
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 WrappedResourceResponse(response)); 1667 WrappedResourceResponse(response));
1618 image_resource->Loader()->DidReceiveData(kBadImageData, 1668 image_resource->Loader()->DidReceiveData(kBadImageData,
1619 sizeof(kBadImageData)); 1669 sizeof(kBadImageData));
1620 1670
1621 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1671 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1622 1672
1623 // The dimensions could not be extracted, and the response code was a 4xx 1673 // The dimensions could not be extracted, and the response code was a 4xx
1624 // error, so the full original image should be loading. 1674 // error, so the full original image should be loading.
1625 TestThatReloadIsStartedThenServeReload( 1675 TestThatReloadIsStartedThenServeReload(
1626 test_url, image_resource, image_resource->GetContent(), observer.get(), 1676 test_url, image_resource, image_resource->GetContent(), observer.get(),
1627 WebCachePolicy::kBypassingCache); 1677 WebCachePolicy::kBypassingCache, false);
1628 } 1678 }
1629 } 1679 }
1630 1680
1631 TEST(ImageResourceTest, PeriodicFlushTest) { 1681 TEST(ImageResourceTest, PeriodicFlushTest) {
1632 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> 1682 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
1633 platform; 1683 platform;
1634 KURL test_url(kParsedURLString, kTestURL); 1684 KURL test_url(kParsedURLString, kTestURL);
1635 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1685 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1636 ImageResource* image_resource = ImageResource::CreateForTest(test_url); 1686 ImageResource* image_resource = ImageResource::CreateForTest(test_url);
1637 image_resource->SetStatus(ResourceStatus::kPending); 1687 image_resource->SetStatus(ResourceStatus::kPending);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); 1759 EXPECT_TRUE(observer->ImageNotifyFinishedCalled());
1710 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); 1760 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage());
1711 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); 1761 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width());
1712 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); 1762 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height());
1713 1763
1714 WTF::SetTimeFunctionsForTesting(nullptr); 1764 WTF::SetTimeFunctionsForTesting(nullptr);
1715 } 1765 }
1716 1766
1717 } // namespace 1767 } // namespace
1718 } // namespace blink 1768 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/resource/ImageResource.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698