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

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: tryjob 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_TRUE(content->GetImage()->IsBitmapImage());
ojan 2017/06/24 00:10:34 We don't typically check in commented out code. Di
dcheng 2017/06/24 00:26:47 +1, please uncomment this or delete it.
247 EXPECT_FALSE(content->GetImage()->PaintImageForCurrentFrame().is_multipart()); 248 EXPECT_FALSE(content->GetImage()->PaintImageForCurrentFrame().is_multipart());
248 } 249 }
249 250
250 AtomicString BuildContentRange(size_t range_length, size_t total_length) { 251 AtomicString BuildContentRange(size_t range_length, size_t total_length) {
251 return AtomicString(String("bytes 0-" + String::Number(range_length - 1) + 252 return AtomicString(String("bytes 0-" + String::Number(range_length - 1) +
252 "/" + String::Number(total_length))); 253 "/" + String::Number(total_length)));
253 } 254 }
254 255
255 void TestThatIsPlaceholderRequestAndServeResponse( 256 void TestThatIsPlaceholderRequestAndServeResponse(
256 const KURL& url, 257 const KURL& url,
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 EXPECT_EQ(kJpegImageHeight, 593 EXPECT_EQ(kJpegImageHeight,
593 image_resource->GetContent()->GetImage()->height()); 594 image_resource->GetContent()->GetImage()->height());
594 595
595 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. 596 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading.
596 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 597 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
597 Resource::kReloadAlways); 598 Resource::kReloadAlways);
598 599
599 EXPECT_EQ(3, observer->ImageChangedCount()); 600 EXPECT_EQ(3, observer->ImageChangedCount());
600 TestThatReloadIsStartedThenServeReload( 601 TestThatReloadIsStartedThenServeReload(
601 test_url, image_resource, image_resource->GetContent(), observer.get(), 602 test_url, image_resource, image_resource->GetContent(), observer.get(),
602 WebCachePolicy::kBypassingCache); 603 WebCachePolicy::kBypassingCache, false);
603 } 604 }
604 605
605 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinishedWithOldHeaders) { 606 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinishedWithOldHeaders) {
606 KURL test_url(kParsedURLString, kTestURL); 607 KURL test_url(kParsedURLString, kTestURL);
607 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 608 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
608 ImageResource* image_resource = ImageResource::CreateForTest(test_url); 609 ImageResource* image_resource = ImageResource::CreateForTest(test_url);
609 image_resource->SetStatus(ResourceStatus::kPending); 610 image_resource->SetStatus(ResourceStatus::kPending);
610 image_resource->NotifyStartLoad(); 611 image_resource->NotifyStartLoad();
611 612
612 std::unique_ptr<MockImageResourceObserver> observer = 613 std::unique_ptr<MockImageResourceObserver> observer =
(...skipping 22 matching lines...) Expand all
635 EXPECT_EQ(kJpegImageHeight, 636 EXPECT_EQ(kJpegImageHeight,
636 image_resource->GetContent()->GetImage()->height()); 637 image_resource->GetContent()->GetImage()->height());
637 638
638 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. 639 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading.
639 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 640 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
640 Resource::kReloadAlways); 641 Resource::kReloadAlways);
641 642
642 EXPECT_EQ(3, observer->ImageChangedCount()); 643 EXPECT_EQ(3, observer->ImageChangedCount());
643 TestThatReloadIsStartedThenServeReload( 644 TestThatReloadIsStartedThenServeReload(
644 test_url, image_resource, image_resource->GetContent(), observer.get(), 645 test_url, image_resource, image_resource->GetContent(), observer.get(),
645 WebCachePolicy::kBypassingCache); 646 WebCachePolicy::kBypassingCache, false);
646 } 647 }
647 648
648 TEST(ImageResourceTest, 649 TEST(ImageResourceTest,
649 ReloadIfLoFiOrPlaceholderAfterFinishedWithoutLoFiHeaders) { 650 ReloadIfLoFiOrPlaceholderAfterFinishedWithoutLoFiHeaders) {
650 KURL test_url(kParsedURLString, kTestURL); 651 KURL test_url(kParsedURLString, kTestURL);
651 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 652 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
652 ResourceRequest request(test_url); 653 ResourceRequest request(test_url);
653 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); 654 request.SetPreviewsState(WebURLRequest::kServerLoFiOn);
654 request.SetFetchCredentialsMode(WebURLRequest::kFetchCredentialsModeOmit); 655 request.SetFetchCredentialsMode(WebURLRequest::kFetchCredentialsModeOmit);
655 ImageResource* image_resource = ImageResource::Create(request); 656 ImageResource* image_resource = ImageResource::Create(request);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 image_resource->Loader()->DidFinishLoading( 719 image_resource->Loader()->DidFinishLoading(
719 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage)); 720 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage));
720 721
721 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); 722 EXPECT_TRUE(observer->ImageNotifyFinishedCalled());
722 EXPECT_EQ(image_resource, fetcher->CachedResource(test_url)); 723 EXPECT_EQ(image_resource, fetcher->CachedResource(test_url));
723 724
724 fetcher->ReloadLoFiImages(); 725 fetcher->ReloadLoFiImages();
725 726
726 EXPECT_EQ(3, observer->ImageChangedCount()); 727 EXPECT_EQ(3, observer->ImageChangedCount());
727 728
728 TestThatReloadIsStartedThenServeReload(test_url, image_resource, content, 729 TestThatReloadIsStartedThenServeReload(
729 observer.get(), 730 test_url, image_resource, content, observer.get(),
730 WebCachePolicy::kBypassingCache); 731 WebCachePolicy::kBypassingCache, false);
731 732
732 GetMemoryCache()->Remove(image_resource); 733 GetMemoryCache()->Remove(image_resource);
733 } 734 }
734 735
735 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringFetch) { 736 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringFetch) {
736 KURL test_url(kParsedURLString, kTestURL); 737 KURL test_url(kParsedURLString, kTestURL);
737 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 738 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
738 739
739 ResourceRequest request(test_url); 740 ResourceRequest request(test_url);
740 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); 741 request.SetPreviewsState(WebURLRequest::kServerLoFiOn);
(...skipping 27 matching lines...) Expand all
768 Resource::kReloadAlways); 769 Resource::kReloadAlways);
769 770
770 EXPECT_EQ(2, observer->ImageChangedCount()); 771 EXPECT_EQ(2, observer->ImageChangedCount());
771 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged()); 772 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged());
772 // The observer should not have been notified of completion yet, since the 773 // The observer should not have been notified of completion yet, since the
773 // image is still loading. 774 // image is still loading.
774 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 775 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
775 776
776 TestThatReloadIsStartedThenServeReload( 777 TestThatReloadIsStartedThenServeReload(
777 test_url, image_resource, image_resource->GetContent(), observer.get(), 778 test_url, image_resource, image_resource->GetContent(), observer.get(),
778 WebCachePolicy::kBypassingCache); 779 WebCachePolicy::kBypassingCache, false);
779 } 780 }
780 781
781 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderForPlaceholder) { 782 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderForPlaceholder) {
782 KURL test_url(kParsedURLString, kTestURL); 783 KURL test_url(kParsedURLString, kTestURL);
783 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 784 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
784 785
785 ResourceFetcher* fetcher = CreateFetcher(); 786 ResourceFetcher* fetcher = CreateFetcher();
786 FetchParameters params{ResourceRequest(test_url)}; 787 FetchParameters params{ResourceRequest(test_url)};
787 params.SetAllowImagePlaceholder(); 788 params.SetAllowImagePlaceholder();
788 ImageResource* image_resource = ImageResource::Fetch(params, fetcher); 789 ImageResource* image_resource = ImageResource::Fetch(params, fetcher);
789 EXPECT_EQ(FetchParameters::kAllowPlaceholder, 790 EXPECT_EQ(FetchParameters::kAllowPlaceholder,
790 params.GetPlaceholderImageRequestType()); 791 params.GetPlaceholderImageRequestType());
791 std::unique_ptr<MockImageResourceObserver> observer = 792 std::unique_ptr<MockImageResourceObserver> observer =
792 MockImageResourceObserver::Create(image_resource->GetContent()); 793 MockImageResourceObserver::Create(image_resource->GetContent());
793 794
794 TestThatIsPlaceholderRequestAndServeResponse(test_url, image_resource, 795 TestThatIsPlaceholderRequestAndServeResponse(test_url, image_resource,
795 observer.get()); 796 observer.get());
796 797
797 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, 798 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher,
798 Resource::kReloadAlways); 799 Resource::kReloadAlways);
799 800
800 TestThatReloadIsStartedThenServeReload( 801 TestThatReloadIsStartedThenServeReload(
801 test_url, image_resource, image_resource->GetContent(), observer.get(), 802 test_url, image_resource, image_resource->GetContent(), observer.get(),
802 WebCachePolicy::kBypassingCache); 803 WebCachePolicy::kBypassingCache, false);
803 } 804 }
804 805
805 TEST(ImageResourceTest, SVGImage) { 806 TEST(ImageResourceTest, SVGImage) {
806 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo"); 807 KURL url(kParsedURLString, "http://127.0.0.1:8000/foo");
807 ImageResource* image_resource = ImageResource::CreateForTest(url); 808 ImageResource* image_resource = ImageResource::CreateForTest(url);
808 std::unique_ptr<MockImageResourceObserver> observer = 809 std::unique_ptr<MockImageResourceObserver> observer =
809 MockImageResourceObserver::Create(image_resource->GetContent()); 810 MockImageResourceObserver::Create(image_resource->GetContent());
810 811
811 ReceiveResponse(image_resource, url, "image/svg+xml", kSvgImage, 812 ReceiveResponse(image_resource, url, "image/svg+xml", kSvgImage,
812 strlen(kSvgImage)); 813 strlen(kSvgImage));
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1321 image_resource->Loader()->DidReceiveResponse( 1322 image_resource->Loader()->DidReceiveResponse(
1322 WrappedResourceResponse(bad_response)); 1323 WrappedResourceResponse(bad_response));
1323 1324
1324 EXPECT_EQ(0, observer->ImageChangedCount()); 1325 EXPECT_EQ(0, observer->ImageChangedCount());
1325 1326
1326 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData)); 1327 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData));
1327 1328
1328 // The dimensions could not be extracted, so the full original image should be 1329 // The dimensions could not be extracted, so the full original image should be
1329 // loading. 1330 // loading.
1330 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1331 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1332 EXPECT_EQ(2, observer->ImageChangedCount());
1333 EXPECT_FALSE(image_resource->ShouldShowPlaceholder());
1334
1335 TestThatReloadIsStartedThenServeReload(
1336 test_url, image_resource, image_resource->GetContent(), observer.get(),
1337 WebCachePolicy::kBypassingCache, false);
1338 }
1339
1340 TEST(ImageResourceTest, FetchAllowPlaceholderUnsuccessfulClientLoFi) {
1341 KURL test_url(kParsedURLString, kTestURL);
1342 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1343
1344 ResourceRequest request = ResourceRequest(test_url);
1345 request.SetPreviewsState(WebURLRequest::kClientLoFiOn);
1346 FetchParameters params{request};
1347 params.SetAllowImagePlaceholder();
1348 ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher());
1349 EXPECT_EQ(FetchParameters::kAllowPlaceholder,
1350 params.GetPlaceholderImageRequestType());
1351 EXPECT_EQ("bytes=0-2047",
1352 image_resource->GetResourceRequest().HttpHeaderField("range"));
1353 EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
1354 std::unique_ptr<MockImageResourceObserver> observer =
1355 MockImageResourceObserver::Create(image_resource->GetContent());
1356
1357 const char kBadData[] = "notanimageresponse";
1358
1359 ResourceResponse bad_response(test_url, "image/jpeg", sizeof(kBadData),
1360 g_null_atom);
1361 bad_response.SetHTTPStatusCode(206);
1362 bad_response.SetHTTPHeaderField(
1363 "content-range", BuildContentRange(sizeof(kBadData), sizeof(kJpegImage)));
1364
1365 image_resource->Loader()->DidReceiveResponse(
1366 WrappedResourceResponse(bad_response));
1367
1368 EXPECT_EQ(0, observer->ImageChangedCount());
1369
1370 image_resource->Loader()->DidReceiveData(kBadData, sizeof(kBadData));
1371
1372 // The dimensions could not be extracted, so the full original image should be
1373 // loading.
1374 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1331 EXPECT_EQ(2, observer->ImageChangedCount()); 1375 EXPECT_EQ(2, observer->ImageChangedCount());
1332 1376
1333 TestThatReloadIsStartedThenServeReload( 1377 TestThatReloadIsStartedThenServeReload(
1334 test_url, image_resource, image_resource->GetContent(), observer.get(), 1378 test_url, image_resource, image_resource->GetContent(), observer.get(),
1335 WebCachePolicy::kBypassingCache); 1379 WebCachePolicy::kBypassingCache, true);
1380
1381 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage());
1382 EXPECT_TRUE(image_resource->ShouldShowPlaceholder());
1336 } 1383 }
1337 1384
1338 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) { 1385 TEST(ImageResourceTest, FetchAllowPlaceholderPartialContentWithoutDimensions) {
1339 const struct { 1386 const struct {
1340 WebURLRequest::PreviewsState initial_previews_state; 1387 WebURLRequest::PreviewsState initial_previews_state;
1341 WebURLRequest::PreviewsState expected_reload_previews_state; 1388 WebURLRequest::PreviewsState expected_reload_previews_state;
1389 bool placeholder_before_reload;
1390 bool placeholder_after_reload;
1342 } tests[] = { 1391 } tests[] = {
1343 {WebURLRequest::kPreviewsUnspecified, 1392 {WebURLRequest::kPreviewsUnspecified, WebURLRequest::kPreviewsNoTransform,
1344 WebURLRequest::kPreviewsNoTransform}, 1393 false},
1345 {WebURLRequest::kClientLoFiOn, WebURLRequest::kPreviewsNoTransform | 1394 {WebURLRequest::kClientLoFiOn,
1346 WebURLRequest::kClientLoFiAutoReload}, 1395 WebURLRequest::kPreviewsNoTransform |
1396 WebURLRequest::kClientLoFiAutoReload,
1397 true},
1347 }; 1398 };
1348 1399
1349 for (const auto& test : tests) { 1400 for (const auto& test : tests) {
1350 KURL test_url(kParsedURLString, kTestURL); 1401 KURL test_url(kParsedURLString, kTestURL);
1351 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1402 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1352 1403
1353 ResourceRequest resource_request(test_url); 1404 ResourceRequest resource_request(test_url);
1354 resource_request.SetPreviewsState(test.initial_previews_state); 1405 resource_request.SetPreviewsState(test.initial_previews_state);
1355 FetchParameters params(resource_request); 1406 FetchParameters params(resource_request);
1356 1407
(...skipping 30 matching lines...) Expand all
1387 image_resource->Loader()->DidFinishLoading( 1438 image_resource->Loader()->DidFinishLoading(
1388 0.0, kJpegImageSubrangeWithoutDimensionsLength, 1439 0.0, kJpegImageSubrangeWithoutDimensionsLength,
1389 kJpegImageSubrangeWithoutDimensionsLength, 1440 kJpegImageSubrangeWithoutDimensionsLength,
1390 kJpegImageSubrangeWithoutDimensionsLength); 1441 kJpegImageSubrangeWithoutDimensionsLength);
1391 1442
1392 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1443 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1393 EXPECT_EQ(2, observer->ImageChangedCount()); 1444 EXPECT_EQ(2, observer->ImageChangedCount());
1394 1445
1395 TestThatReloadIsStartedThenServeReload( 1446 TestThatReloadIsStartedThenServeReload(
1396 test_url, image_resource, image_resource->GetContent(), observer.get(), 1447 test_url, image_resource, image_resource->GetContent(), observer.get(),
1397 WebCachePolicy::kBypassingCache); 1448 WebCachePolicy::kBypassingCache, test.placeholder_before_reload);
1398 1449
1399 EXPECT_EQ(test.expected_reload_previews_state, 1450 EXPECT_EQ(test.expected_reload_previews_state,
1400 image_resource->GetResourceRequest().GetPreviewsState()); 1451 image_resource->GetResourceRequest().GetPreviewsState());
1401 } 1452 }
1402 } 1453 }
1403 1454
1404 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) { 1455 TEST(ImageResourceTest, FetchAllowPlaceholderThenDisallowPlaceholder) {
1405 KURL test_url(kParsedURLString, kTestURL); 1456 KURL test_url(kParsedURLString, kTestURL);
1406 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1457 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1407 1458
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 WrappedResourceResponse(response)); 1668 WrappedResourceResponse(response));
1618 image_resource->Loader()->DidReceiveData(kBadImageData, 1669 image_resource->Loader()->DidReceiveData(kBadImageData,
1619 sizeof(kBadImageData)); 1670 sizeof(kBadImageData));
1620 1671
1621 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); 1672 EXPECT_FALSE(observer->ImageNotifyFinishedCalled());
1622 1673
1623 // The dimensions could not be extracted, and the response code was a 4xx 1674 // The dimensions could not be extracted, and the response code was a 4xx
1624 // error, so the full original image should be loading. 1675 // error, so the full original image should be loading.
1625 TestThatReloadIsStartedThenServeReload( 1676 TestThatReloadIsStartedThenServeReload(
1626 test_url, image_resource, image_resource->GetContent(), observer.get(), 1677 test_url, image_resource, image_resource->GetContent(), observer.get(),
1627 WebCachePolicy::kBypassingCache); 1678 WebCachePolicy::kBypassingCache, false);
1628 } 1679 }
1629 } 1680 }
1630 1681
1631 TEST(ImageResourceTest, PeriodicFlushTest) { 1682 TEST(ImageResourceTest, PeriodicFlushTest) {
1632 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> 1683 ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
1633 platform; 1684 platform;
1634 KURL test_url(kParsedURLString, kTestURL); 1685 KURL test_url(kParsedURLString, kTestURL);
1635 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); 1686 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath());
1636 ImageResource* image_resource = ImageResource::CreateForTest(test_url); 1687 ImageResource* image_resource = ImageResource::CreateForTest(test_url);
1637 image_resource->SetStatus(ResourceStatus::kPending); 1688 image_resource->SetStatus(ResourceStatus::kPending);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); 1760 EXPECT_TRUE(observer->ImageNotifyFinishedCalled());
1710 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); 1761 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage());
1711 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); 1762 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width());
1712 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); 1763 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height());
1713 1764
1714 WTF::SetTimeFunctionsForTesting(nullptr); 1765 WTF::SetTimeFunctionsForTesting(nullptr);
1715 } 1766 }
1716 1767
1717 } // namespace 1768 } // namespace
1718 } // namespace blink 1769 } // 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