| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |