| 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
|
|
|