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 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 sizeof(kJpegImage)); | 544 sizeof(kJpegImage)); |
545 image_resource->Finish(); | 545 image_resource->Finish(); |
546 EXPECT_FALSE(image_resource->ErrorOccurred()); | 546 EXPECT_FALSE(image_resource->ErrorOccurred()); |
547 ASSERT_TRUE(image_resource->GetContent()->HasImage()); | 547 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
548 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); | 548 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); |
549 EXPECT_EQ(2, observer->ImageChangedCount()); | 549 EXPECT_EQ(2, observer->ImageChangedCount()); |
550 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); | 550 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
551 // The observer should have been notified that the image load completed. | 551 // The observer should have been notified that the image load completed. |
552 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); | 552 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
553 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); | 553 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); |
554 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); | 554 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
| 555 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
555 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); | 556 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); |
556 EXPECT_EQ(kJpegImageHeight, | 557 EXPECT_EQ(kJpegImageHeight, |
557 image_resource->GetContent()->GetImage()->height()); | 558 image_resource->GetContent()->GetImage()->height()); |
558 | 559 |
559 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. | 560 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. |
560 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, | 561 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, |
561 Resource::kReloadAlways); | 562 Resource::kReloadAlways); |
562 | 563 |
563 EXPECT_EQ(3, observer->ImageChangedCount()); | 564 EXPECT_EQ(3, observer->ImageChangedCount()); |
564 TestThatReloadIsStartedThenServeReload( | 565 TestThatReloadIsStartedThenServeReload( |
(...skipping 23 matching lines...) Expand all Loading... |
588 sizeof(kJpegImage)); | 589 sizeof(kJpegImage)); |
589 image_resource->Finish(); | 590 image_resource->Finish(); |
590 EXPECT_FALSE(image_resource->ErrorOccurred()); | 591 EXPECT_FALSE(image_resource->ErrorOccurred()); |
591 ASSERT_TRUE(image_resource->GetContent()->HasImage()); | 592 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
592 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); | 593 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); |
593 EXPECT_EQ(2, observer->ImageChangedCount()); | 594 EXPECT_EQ(2, observer->ImageChangedCount()); |
594 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); | 595 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
595 // The observer should have been notified that the image load completed. | 596 // The observer should have been notified that the image load completed. |
596 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); | 597 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
597 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); | 598 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); |
598 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); | 599 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
| 600 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
599 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); | 601 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); |
600 EXPECT_EQ(kJpegImageHeight, | 602 EXPECT_EQ(kJpegImageHeight, |
601 image_resource->GetContent()->GetImage()->height()); | 603 image_resource->GetContent()->GetImage()->height()); |
602 | 604 |
603 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. | 605 // Call reloadIfLoFiOrPlaceholderImage() after the image has finished loading. |
604 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, | 606 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, |
605 Resource::kReloadAlways); | 607 Resource::kReloadAlways); |
606 | 608 |
607 EXPECT_EQ(3, observer->ImageChangedCount()); | 609 EXPECT_EQ(3, observer->ImageChangedCount()); |
608 TestThatReloadIsStartedThenServeReload( | 610 TestThatReloadIsStartedThenServeReload( |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 | 691 |
690 EXPECT_EQ(3, observer->ImageChangedCount()); | 692 EXPECT_EQ(3, observer->ImageChangedCount()); |
691 | 693 |
692 TestThatReloadIsStartedThenServeReload(test_url, image_resource, content, | 694 TestThatReloadIsStartedThenServeReload(test_url, image_resource, content, |
693 observer.get(), | 695 observer.get(), |
694 WebCachePolicy::kBypassingCache); | 696 WebCachePolicy::kBypassingCache); |
695 | 697 |
696 GetMemoryCache()->Remove(image_resource); | 698 GetMemoryCache()->Remove(image_resource); |
697 } | 699 } |
698 | 700 |
699 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringFetch) { | 701 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderBeforeResponse) { |
700 KURL test_url(kParsedURLString, kTestURL); | 702 KURL test_url(kParsedURLString, kTestURL); |
701 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); | 703 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
702 | 704 |
| 705 ResourceRequest request(test_url); |
| 706 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); |
| 707 FetchParameters fetch_params(request); |
| 708 ResourceFetcher* fetcher = CreateFetcher(); |
| 709 |
| 710 ImageResource* image_resource = ImageResource::Fetch(fetch_params, fetcher); |
| 711 std::unique_ptr<MockImageResourceObserver> observer = |
| 712 MockImageResourceObserver::Create(image_resource->GetContent()); |
| 713 |
| 714 EXPECT_FALSE(image_resource->ErrorOccurred()); |
| 715 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 716 |
| 717 // Call reloadIfLoFiOrPlaceholderImage() while the image is still loading. |
| 718 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, |
| 719 Resource::kReloadAlways); |
| 720 |
| 721 EXPECT_EQ(1, observer->ImageChangedCount()); |
| 722 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged()); |
| 723 // The observer should not have been notified of completion yet, since the |
| 724 // image is still loading. |
| 725 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); |
| 726 |
| 727 TestThatReloadIsStartedThenServeReload( |
| 728 test_url, image_resource, image_resource->GetContent(), observer.get(), |
| 729 WebCachePolicy::kBypassingCache); |
| 730 } |
| 731 |
| 732 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderDuringResponse) { |
| 733 KURL test_url(kParsedURLString, kTestURL); |
| 734 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
| 735 |
703 ResourceRequest request(test_url); | 736 ResourceRequest request(test_url); |
704 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); | 737 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); |
705 FetchParameters fetch_params(request); | 738 FetchParameters fetch_params(request); |
706 ResourceFetcher* fetcher = CreateFetcher(); | 739 ResourceFetcher* fetcher = CreateFetcher(); |
707 | 740 |
708 ImageResource* image_resource = ImageResource::Fetch(fetch_params, fetcher); | 741 ImageResource* image_resource = ImageResource::Fetch(fetch_params, fetcher); |
709 std::unique_ptr<MockImageResourceObserver> observer = | 742 std::unique_ptr<MockImageResourceObserver> observer = |
710 MockImageResourceObserver::Create(image_resource->GetContent()); | 743 MockImageResourceObserver::Create(image_resource->GetContent()); |
711 | 744 |
712 // Send the image response. | 745 // Send the image response. |
| 746 ResourceResponse resource_response(test_url, "image/jpeg", sizeof(kJpegImage), |
| 747 g_null_atom); |
| 748 resource_response.AddHTTPHeaderField("chrome-proxy-content-transform", |
| 749 "empty-image"); |
| 750 |
713 image_resource->Loader()->DidReceiveResponse( | 751 image_resource->Loader()->DidReceiveResponse( |
714 WrappedResourceResponse(ResourceResponse( | 752 WrappedResourceResponse(resource_response)); |
715 test_url, "image/jpeg", sizeof(kJpegImage), g_null_atom))); | |
716 image_resource->Loader()->DidReceiveData( | 753 image_resource->Loader()->DidReceiveData( |
717 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 754 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
718 | 755 |
719 EXPECT_FALSE(image_resource->ErrorOccurred()); | 756 EXPECT_FALSE(image_resource->ErrorOccurred()); |
720 ASSERT_TRUE(image_resource->GetContent()->HasImage()); | 757 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
721 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); | 758 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); |
722 EXPECT_EQ(1, observer->ImageChangedCount()); | 759 EXPECT_EQ(1, observer->ImageChangedCount()); |
723 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); | 760 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
724 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); | 761 EXPECT_FALSE(observer->ImageNotifyFinishedCalled()); |
725 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); | 762 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
726 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); | 763 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); |
727 EXPECT_EQ(kJpegImageHeight, | 764 EXPECT_EQ(kJpegImageHeight, |
728 image_resource->GetContent()->GetImage()->height()); | 765 image_resource->GetContent()->GetImage()->height()); |
729 | 766 |
730 // Call reloadIfLoFiOrPlaceholderImage() while the image is still loading. | 767 // Call reloadIfLoFiOrPlaceholderImage() while the image is still loading. |
731 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, | 768 image_resource->ReloadIfLoFiOrPlaceholderImage(fetcher, |
732 Resource::kReloadAlways); | 769 Resource::kReloadAlways); |
733 | 770 |
734 EXPECT_EQ(2, observer->ImageChangedCount()); | 771 EXPECT_EQ(2, observer->ImageChangedCount()); |
735 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged()); | 772 EXPECT_EQ(0, observer->ImageWidthOnLastImageChanged()); |
(...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1601 ImageResource* image_resource = ImageResource::Create(request); | 1638 ImageResource* image_resource = ImageResource::Create(request); |
1602 image_resource->SetStatus(ResourceStatus::kPending); | 1639 image_resource->SetStatus(ResourceStatus::kPending); |
1603 image_resource->NotifyStartLoad(); | 1640 image_resource->NotifyStartLoad(); |
1604 | 1641 |
1605 std::unique_ptr<MockImageResourceObserver> observer = | 1642 std::unique_ptr<MockImageResourceObserver> observer = |
1606 MockImageResourceObserver::Create(image_resource->GetContent()); | 1643 MockImageResourceObserver::Create(image_resource->GetContent()); |
1607 | 1644 |
1608 // Send the image response. | 1645 // Send the image response. |
1609 ResourceResponse resource_response(KURL(), "image/jpeg", sizeof(kJpegImage2), | 1646 ResourceResponse resource_response(KURL(), "image/jpeg", sizeof(kJpegImage2), |
1610 g_null_atom); | 1647 g_null_atom); |
1611 resource_response.AddHTTPHeaderField("chrome-proxy", "q=low"); | |
1612 | 1648 |
1613 image_resource->ResponseReceived(resource_response, nullptr); | 1649 image_resource->ResponseReceived(resource_response, nullptr); |
1614 | 1650 |
1615 // This is number is sufficiently large amount of bytes necessary for the | 1651 // This is number is sufficiently large amount of bytes necessary for the |
1616 // image to be created (since the size is known). This was determined by | 1652 // image to be created (since the size is known). This was determined by |
1617 // appending one byte at a time (with flushes) until the image was decoded. | 1653 // appending one byte at a time (with flushes) until the image was decoded. |
1618 size_t meaningful_image_size = 280; | 1654 size_t meaningful_image_size = 280; |
1619 image_resource->AppendData(reinterpret_cast<const char*>(kJpegImage2), | 1655 image_resource->AppendData(reinterpret_cast<const char*>(kJpegImage2), |
1620 meaningful_image_size); | 1656 meaningful_image_size); |
1621 size_t bytes_sent = meaningful_image_size; | 1657 size_t bytes_sent = meaningful_image_size; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1672 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); | 1708 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsNull()); |
1673 EXPECT_EQ(5, observer->ImageChangedCount()); | 1709 EXPECT_EQ(5, observer->ImageChangedCount()); |
1674 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); | 1710 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
1675 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); | 1711 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
1676 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); | 1712 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->width()); |
1677 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); | 1713 EXPECT_EQ(50, image_resource->GetContent()->GetImage()->height()); |
1678 | 1714 |
1679 WTF::SetTimeFunctionsForTesting(nullptr); | 1715 WTF::SetTimeFunctionsForTesting(nullptr); |
1680 } | 1716 } |
1681 | 1717 |
| 1718 TEST(ImageResourceTest, ShowPlaceholderForServerLoFiWithBitAndHeaders) { |
| 1719 KURL test_url(kParsedURLString, kTestURL); |
| 1720 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
| 1721 |
| 1722 ResourceRequest request(test_url); |
| 1723 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); |
| 1724 FetchParameters params{request}; |
| 1725 ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher()); |
| 1726 EXPECT_EQ(FetchParameters::kDisallowPlaceholder, |
| 1727 params.GetPlaceholderImageRequestType()); |
| 1728 EXPECT_EQ(g_null_atom, |
| 1729 image_resource->GetResourceRequest().HttpHeaderField("range")); |
| 1730 |
| 1731 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 1732 std::unique_ptr<MockImageResourceObserver> observer = |
| 1733 MockImageResourceObserver::Create(image_resource->GetContent()); |
| 1734 |
| 1735 // Send the Server Lo-Fi image response, complete with Server Lo-Fi response |
| 1736 // headers. |
| 1737 ResourceResponse response(test_url, "image/jpeg", sizeof(kJpegImage), |
| 1738 g_null_atom); |
| 1739 response.AddHTTPHeaderField("chrome-proxy-content-transform", "empty-image"); |
| 1740 |
| 1741 image_resource->Loader()->DidReceiveResponse( |
| 1742 WrappedResourceResponse(response)); |
| 1743 image_resource->Loader()->DidReceiveData( |
| 1744 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1745 image_resource->Loader()->DidFinishLoading( |
| 1746 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage)); |
| 1747 |
| 1748 EXPECT_EQ(ResourceStatus::kCached, image_resource->GetStatus()); |
| 1749 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 1750 EXPECT_LT(0, observer->ImageChangedCount()); |
| 1751 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
| 1752 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
| 1753 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); |
| 1754 |
| 1755 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
| 1756 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); |
| 1757 EXPECT_EQ(kJpegImageHeight, |
| 1758 image_resource->GetContent()->GetImage()->height()); |
| 1759 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
| 1760 } |
| 1761 |
| 1762 TEST(ImageResourceTest, DoNotShowPlaceholderForServerLoFiWithoutHeaders) { |
| 1763 KURL test_url(kParsedURLString, kTestURL); |
| 1764 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
| 1765 |
| 1766 ResourceRequest request(test_url); |
| 1767 request.SetPreviewsState(WebURLRequest::kServerLoFiOn); |
| 1768 FetchParameters params{request}; |
| 1769 ImageResource* image_resource = ImageResource::Fetch(params, CreateFetcher()); |
| 1770 EXPECT_EQ(FetchParameters::kDisallowPlaceholder, |
| 1771 params.GetPlaceholderImageRequestType()); |
| 1772 EXPECT_EQ(g_null_atom, |
| 1773 image_resource->GetResourceRequest().HttpHeaderField("range")); |
| 1774 |
| 1775 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 1776 std::unique_ptr<MockImageResourceObserver> observer = |
| 1777 MockImageResourceObserver::Create(image_resource->GetContent()); |
| 1778 |
| 1779 // Send the image response without any Server Lo-Fi response headers. |
| 1780 image_resource->Loader()->DidReceiveResponse( |
| 1781 WrappedResourceResponse(ResourceResponse( |
| 1782 test_url, "image/jpeg", sizeof(kJpegImage), g_null_atom))); |
| 1783 image_resource->Loader()->DidReceiveData( |
| 1784 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1785 image_resource->Loader()->DidFinishLoading( |
| 1786 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage)); |
| 1787 |
| 1788 EXPECT_EQ(WebURLRequest::kPreviewsOff, |
| 1789 image_resource->GetResourceRequest().GetPreviewsState()); |
| 1790 EXPECT_FALSE(image_resource->ShouldShowPlaceholder()); |
| 1791 |
| 1792 EXPECT_EQ(ResourceStatus::kCached, image_resource->GetStatus()); |
| 1793 EXPECT_LT(0, observer->ImageChangedCount()); |
| 1794 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
| 1795 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
| 1796 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); |
| 1797 |
| 1798 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
| 1799 EXPECT_EQ(kJpegImageWidth, image_resource->GetContent()->GetImage()->width()); |
| 1800 EXPECT_EQ(kJpegImageHeight, |
| 1801 image_resource->GetContent()->GetImage()->height()); |
| 1802 EXPECT_TRUE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
| 1803 } |
| 1804 |
| 1805 TEST(ImageResourceTest, ShowPlaceholderForServerLoFiWithHeadersButWithoutBit) { |
| 1806 const struct { |
| 1807 const char* header_name; |
| 1808 const char* header_value; |
| 1809 } tests[] = { |
| 1810 // New-style Server Lo-Fi response header. |
| 1811 {"chrome-proxy-content-transform", "empty-image"}, |
| 1812 // Legacy Server Lo-Fi response header. |
| 1813 {"chrome-proxy", "q=low"}, |
| 1814 }; |
| 1815 |
| 1816 for (const auto& test : tests) { |
| 1817 KURL test_url(kParsedURLString, kTestURL); |
| 1818 ScopedMockedURLLoad scoped_mocked_url_load(test_url, GetTestFilePath()); |
| 1819 |
| 1820 FetchParameters params{ResourceRequest(test_url)}; |
| 1821 ImageResource* image_resource = |
| 1822 ImageResource::Fetch(params, CreateFetcher()); |
| 1823 EXPECT_EQ(FetchParameters::kDisallowPlaceholder, |
| 1824 params.GetPlaceholderImageRequestType()); |
| 1825 EXPECT_EQ(g_null_atom, |
| 1826 image_resource->GetResourceRequest().HttpHeaderField("range")); |
| 1827 |
| 1828 EXPECT_FALSE(image_resource->ShouldShowPlaceholder()); |
| 1829 std::unique_ptr<MockImageResourceObserver> observer = |
| 1830 MockImageResourceObserver::Create(image_resource->GetContent()); |
| 1831 |
| 1832 // Send a Server Lo-Fi image response, complete with Server Lo-Fi response |
| 1833 // headers. |
| 1834 ResourceResponse response(test_url, "image/jpeg", sizeof(kJpegImage), |
| 1835 g_null_atom); |
| 1836 response.AddHTTPHeaderField(test.header_name, test.header_value); |
| 1837 |
| 1838 image_resource->Loader()->DidReceiveResponse( |
| 1839 WrappedResourceResponse(response)); |
| 1840 image_resource->Loader()->DidReceiveData( |
| 1841 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1842 image_resource->Loader()->DidFinishLoading( |
| 1843 0.0, sizeof(kJpegImage), sizeof(kJpegImage), sizeof(kJpegImage)); |
| 1844 |
| 1845 EXPECT_TRUE(image_resource->GetResourceRequest().GetPreviewsState() & |
| 1846 WebURLRequest::kServerLoFiOn); |
| 1847 EXPECT_TRUE(image_resource->ShouldShowPlaceholder()); |
| 1848 |
| 1849 EXPECT_EQ(ResourceStatus::kCached, image_resource->GetStatus()); |
| 1850 EXPECT_LT(0, observer->ImageChangedCount()); |
| 1851 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnLastImageChanged()); |
| 1852 EXPECT_TRUE(observer->ImageNotifyFinishedCalled()); |
| 1853 EXPECT_EQ(kJpegImageWidth, observer->ImageWidthOnImageNotifyFinished()); |
| 1854 |
| 1855 ASSERT_TRUE(image_resource->GetContent()->HasImage()); |
| 1856 EXPECT_EQ(kJpegImageWidth, |
| 1857 image_resource->GetContent()->GetImage()->width()); |
| 1858 EXPECT_EQ(kJpegImageHeight, |
| 1859 image_resource->GetContent()->GetImage()->height()); |
| 1860 EXPECT_FALSE(image_resource->GetContent()->GetImage()->IsBitmapImage()); |
| 1861 } |
| 1862 } |
| 1863 |
1682 } // namespace | 1864 } // namespace |
1683 } // namespace blink | 1865 } // namespace blink |
OLD | NEW |