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

Unified Diff: Source/core/fetch/ResourceFetcherTest.cpp

Issue 930323002: Upgrade: Send a 'Prefer' header for feature detection. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rename? Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/fetch/ResourceFetcherTest.cpp
diff --git a/Source/core/fetch/ResourceFetcherTest.cpp b/Source/core/fetch/ResourceFetcherTest.cpp
index 95ab72163abdfa479d43b8d57a70bdd0624ab848..1527e1d66d2a9322980e639f27435569b495f21c 100644
--- a/Source/core/fetch/ResourceFetcherTest.cpp
+++ b/Source/core/fetch/ResourceFetcherTest.cpp
@@ -81,7 +81,7 @@ protected:
fetchRequest.mutableResourceRequest().setRequestContext(requestContext);
fetchRequest.mutableResourceRequest().setFrameType(frameType);
- fetcher->maybeUpgradeInsecureRequestURL(fetchRequest);
+ fetcher->upgradeInsecureRequest(fetchRequest);
EXPECT_STREQ(expectedURL.string().utf8().data(), fetchRequest.resourceRequest().url().string().utf8().data());
EXPECT_EQ(expectedURL.protocol(), fetchRequest.resourceRequest().url().protocol());
@@ -91,6 +91,20 @@ protected:
EXPECT_EQ(expectedURL.path(), fetchRequest.resourceRequest().url().path());
}
+ void expectPreferHeader(const char* input, WebURLRequest::FrameType frameType, bool shouldPrefer)
+ {
+ KURL inputURL(ParsedURLString, input);
+
+ FetchRequest fetchRequest = FetchRequest(ResourceRequest(inputURL), FetchInitiatorInfo());
+ fetchRequest.mutableResourceRequest().setRequestContext(WebURLRequest::RequestContextScript);
+ fetchRequest.mutableResourceRequest().setFrameType(frameType);
+
+ fetcher->upgradeInsecureRequest(fetchRequest);
+
+ EXPECT_STREQ(shouldPrefer ? "return=secure-representation" : "",
+ fetchRequest.resourceRequest().httpHeaderField("Prefer").utf8().data());
+ }
+
KURL secureURL;
RefPtr<SecurityOrigin> exampleOrigin;
RefPtr<SecurityOrigin> secureOrigin;
@@ -194,4 +208,33 @@ TEST_F(ResourceFetcherTest, MonitorInsecureResourceRequests)
expectUpgrade("ftp://example.test:1212/image.png", "ftp://example.test:1212/image.png");
}
+TEST_F(ResourceFetcherTest, SendPreferHeader)
+{
+ struct TestCase {
+ const char* toRequest;
+ WebURLRequest::FrameType frameType;
+ bool shouldPrefer;
+ } tests[] = {
+ { "http://example.test/page.html", WebURLRequest::FrameTypeAuxiliary, true },
+ { "http://example.test/page.html", WebURLRequest::FrameTypeNested, true },
+ { "http://example.test/page.html", WebURLRequest::FrameTypeNone, false },
+ { "http://example.test/page.html", WebURLRequest::FrameTypeTopLevel, true },
+ { "https://example.test/page.html", WebURLRequest::FrameTypeAuxiliary, false },
+ { "https://example.test/page.html", WebURLRequest::FrameTypeNested, false },
+ { "https://example.test/page.html", WebURLRequest::FrameTypeNone, false },
+ { "https://example.test/page.html", WebURLRequest::FrameTypeTopLevel, false }
+ };
+
+ for (auto test : tests) {
+ document->setInsecureContentPolicy(SecurityContext::InsecureContentDoNotUpgrade);
+ expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
+
+ document->setInsecureContentPolicy(SecurityContext::InsecureContentUpgrade);
+ expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
+
+ document->setInsecureContentPolicy(SecurityContext::InsecureContentMonitor);
+ expectPreferHeader(test.toRequest, test.frameType, test.shouldPrefer);
+ }
+}
+
} // namespace
« no previous file with comments | « Source/core/fetch/ResourceFetcher.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698