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

Unified Diff: third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp

Issue 2681233002: Actually handle the Vary header in blink, rather than punting on sight. (Closed)
Patch Set: Remove whitespace handling and case sensitivity cases Created 3 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 | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp
index a421b170e8a9f71744d5ea51eeaa7f598af58684..a887e4298ba11eb5811b786eb27b3001f5ffccb4 100644
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceTest.cpp
@@ -90,4 +90,61 @@ TEST(ResourceTest, RevalidateWithFragment) {
resource->responseReceived(revalidatingResponse, nullptr);
}
+TEST(ResourceTest, Vary) {
+ ScopedTestingPlatformSupport<MockPlatform> mock;
+ KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html");
+ ResourceResponse response;
+ response.setURL(url);
+ response.setHTTPStatusCode(200);
+
+ Resource* resource = RawResource::create(url, Resource::Raw);
+ resource->responseReceived(response, nullptr);
+ resource->finish();
+
+ ResourceRequest newRequest(url);
+ EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ response.setHTTPHeaderField(HTTPNames::Vary, "*");
+ resource->setResponse(response);
+ EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ // Irrelevant header
+ response.setHTTPHeaderField(HTTPNames::Vary, "definitelynotarealheader");
+ resource->setResponse(response);
+ EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ // Header present on new but not old
+ newRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something");
+ response.setHTTPHeaderField(HTTPNames::Vary, HTTPNames::User_Agent);
+ resource->setResponse(response);
+ EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest));
+ newRequest.clearHTTPHeaderField(HTTPNames::User_Agent);
+
+ ResourceRequest oldRequest(url);
+ oldRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something");
+ oldRequest.setHTTPHeaderField(HTTPNames::Referer, "http://foo.com");
+ resource = RawResource::create(oldRequest, Resource::Raw);
+ resource->responseReceived(response, nullptr);
+ resource->finish();
+
+ // Header present on old but not new
+ newRequest.clearHTTPHeaderField(HTTPNames::User_Agent);
+ response.setHTTPHeaderField(HTTPNames::Vary, HTTPNames::User_Agent);
+ resource->setResponse(response);
+ EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ // Header present on both
+ newRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something");
+ EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ // One matching, one mismatching
+ response.setHTTPHeaderField(HTTPNames::Vary, "User-Agent, Referer");
+ resource->setResponse(response);
+ EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest));
+
+ // Two matching
+ newRequest.setHTTPHeaderField(HTTPNames::Referer, "http://foo.com");
+ EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest));
+}
+
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698