Chromium Code Reviews| Index: Source/core/fetch/ResourceFetcherTest.cpp |
| diff --git a/Source/core/fetch/ResourceFetcherTest.cpp b/Source/core/fetch/ResourceFetcherTest.cpp |
| index 1527e1d66d2a9322980e639f27435569b495f21c..0bbaa48dd57e13551734e89d33d4dbb549d8f714 100644 |
| --- a/Source/core/fetch/ResourceFetcherTest.cpp |
| +++ b/Source/core/fetch/ResourceFetcherTest.cpp |
| @@ -37,8 +37,11 @@ |
| #include "core/fetch/ImageResource.h" |
| #include "core/fetch/MemoryCache.h" |
| #include "core/fetch/ResourcePtr.h" |
| +#include "core/frame/FrameView.h" |
| #include "core/html/HTMLDocument.h" |
| #include "core/loader/DocumentLoader.h" |
| +#include "core/page/Page.h" |
| +#include "core/testing/DummyPageHolder.h" |
| #include "platform/network/ResourceRequest.h" |
| #include "platform/weborigin/KURL.h" |
| #include "platform/weborigin/SecurityOrigin.h" |
| @@ -46,9 +49,9 @@ |
| namespace blink { |
| -class ResourceFetcherTest : public ::testing::Test { |
| +class ResourceFetcherUpgradeTest : public ::testing::Test { |
| public: |
| - ResourceFetcherTest() |
| + ResourceFetcherUpgradeTest() |
| : secureURL(ParsedURLString, "https://secureorigin.test/image.png") |
| , exampleOrigin(SecurityOrigin::create(KURL(ParsedURLString, "https://example.test/"))) |
| , secureOrigin(SecurityOrigin::create(secureURL)) |
| @@ -116,7 +119,7 @@ protected: |
| RefPtrWillBePersistent<Document> document; |
| }; |
| -TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) |
| +TEST_F(ResourceFetcherUpgradeTest, StartLoadAfterFrameDetach) |
| { |
| EXPECT_EQ(fetcher->frame(), static_cast<LocalFrame*>(0)); |
| @@ -128,7 +131,7 @@ TEST_F(ResourceFetcherTest, StartLoadAfterFrameDetach) |
| EXPECT_EQ(memoryCache()->resourceForURL(secureURL), static_cast<Resource*>(0)); |
| } |
| -TEST_F(ResourceFetcherTest, UpgradeInsecureResourceRequests) |
| +TEST_F(ResourceFetcherUpgradeTest, UpgradeInsecureResourceRequests) |
| { |
| struct TestCase { |
| const char* original; |
| @@ -172,7 +175,7 @@ TEST_F(ResourceFetcherTest, UpgradeInsecureResourceRequests) |
| } |
| } |
| -TEST_F(ResourceFetcherTest, DoNotUpgradeInsecureResourceRequests) |
| +TEST_F(ResourceFetcherUpgradeTest, DoNotUpgradeInsecureResourceRequests) |
| { |
| document->setSecurityOrigin(secureOrigin); |
| document->setInsecureContentPolicy(SecurityContext::InsecureContentDoNotUpgrade); |
| @@ -190,7 +193,7 @@ TEST_F(ResourceFetcherTest, DoNotUpgradeInsecureResourceRequests) |
| expectUpgrade("ftp://example.test:1212/image.png", "ftp://example.test:1212/image.png"); |
| } |
| -TEST_F(ResourceFetcherTest, MonitorInsecureResourceRequests) |
| +TEST_F(ResourceFetcherUpgradeTest, MonitorInsecureResourceRequests) |
| { |
| document->setSecurityOrigin(secureOrigin); |
| document->setInsecureContentPolicy(SecurityContext::InsecureContentMonitor); |
| @@ -208,7 +211,7 @@ TEST_F(ResourceFetcherTest, MonitorInsecureResourceRequests) |
| expectUpgrade("ftp://example.test:1212/image.png", "ftp://example.test:1212/image.png"); |
| } |
| -TEST_F(ResourceFetcherTest, SendPreferHeader) |
| +TEST_F(ResourceFetcherUpgradeTest, SendPreferHeader) |
| { |
| struct TestCase { |
| const char* toRequest; |
| @@ -237,4 +240,57 @@ TEST_F(ResourceFetcherTest, SendPreferHeader) |
| } |
| } |
| +class ResourceFetcherHintsTest : public ::testing::Test { |
| +public: |
| + ResourceFetcherHintsTest() { } |
| + |
| +protected: |
| + virtual void SetUp() |
| + { |
| + dummyPageHolder = DummyPageHolder::create(IntSize(500, 500)); |
| + dummyPageHolder->page().setDeviceScaleFactor(1.0); |
| + documentLoader = DocumentLoader::create(&dummyPageHolder->frame(), ResourceRequest("http://www.example.com"), SubstituteData()); |
| + document = toHTMLDocument(&dummyPageHolder->document()); |
| + fetcher = documentLoader->fetcher(); |
| + fetcher->setDocument(document.get()); |
| + } |
| + |
| + void expectHeader(const char* input, const char* headerName, bool isPresent, const char* headerValue) |
| + { |
| + KURL inputURL(ParsedURLString, input); |
| + FetchRequest fetchRequest = FetchRequest(ResourceRequest(inputURL), FetchInitiatorInfo()); |
| + fetcher->addClientHintsIfNeccessary(fetchRequest); |
| + |
| + EXPECT_STREQ(isPresent ? headerValue : "", |
| + fetchRequest.resourceRequest().httpHeaderField(headerName).utf8().data()); |
| + } |
| + |
| + OwnPtr<DummyPageHolder> dummyPageHolder; |
| + // We don't use the DocumentLoader directly in any tests, but need to keep it around as long |
| + // as the ResourceFetcher and Document live due to indirect usage. |
| + RefPtr<DocumentLoader> documentLoader; |
| + RefPtrWillBePersistent<Document> document; |
| + RefPtrWillBePersistent<ResourceFetcher> fetcher; |
| +}; |
| + |
| +TEST_F(ResourceFetcherHintsTest, MonitorHints) |
| +{ |
| + expectHeader("http://www.example.com/1.gif", "DPR", false, ""); |
| + expectHeader("http://www.example.com/1.gif", "RW", false, ""); |
| + |
| + dummyPageHolder->frame().setShouldSendDPRHint(); |
| + expectHeader("http://www.example.com/1.gif", "DPR", true, "1"); |
| + expectHeader("http://www.example.com/1.gif", "RW", false, ""); |
|
Mike West
2015/02/25 09:03:14
Can you add another test that verifies that you ca
|
| + dummyPageHolder->frame().setShouldSendRWHint(); |
| + expectHeader("http://www.example.com/1.gif", "DPR", true, "1"); |
| + expectHeader("http://www.example.com/1.gif", "RW", true, "500"); |
| + dummyPageHolder->page().setDeviceScaleFactor(2.5); |
| + expectHeader("http://www.example.com/1.gif", "DPR", true, "2.5"); |
| + expectHeader("http://www.example.com/1.gif", "RW", true, "500"); |
| + dummyPageHolder->frameView().setLayoutSizeFixedToFrameSize(false); |
| + dummyPageHolder->frameView().setLayoutSize(IntSize(800, 800)); |
| + expectHeader("http://www.example.com/1.gif", "DPR", true, "2.5"); |
| + expectHeader("http://www.example.com/1.gif", "RW", true, "800"); |
| +} |
| + |
| } // namespace |