| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/loader/fetch/Resource.h" | 5 #include "platform/loader/fetch/Resource.h" |
| 6 | 6 |
| 7 #include "platform/SharedBuffer.h" | 7 #include "platform/SharedBuffer.h" |
| 8 #include "platform/loader/fetch/RawResource.h" | 8 #include "platform/loader/fetch/RawResource.h" |
| 9 #include "platform/network/ResourceRequest.h" | 9 #include "platform/network/ResourceRequest.h" |
| 10 #include "platform/network/ResourceResponse.h" | 10 #include "platform/network/ResourceResponse.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 // Revalidating with a url that differs by only the fragment | 83 // Revalidating with a url that differs by only the fragment |
| 84 // shouldn't trigger a securiy check. | 84 // shouldn't trigger a securiy check. |
| 85 url.setFragmentIdentifier("bar"); | 85 url.setFragmentIdentifier("bar"); |
| 86 resource->setRevalidatingRequest(ResourceRequest(url)); | 86 resource->setRevalidatingRequest(ResourceRequest(url)); |
| 87 ResourceResponse revalidatingResponse; | 87 ResourceResponse revalidatingResponse; |
| 88 revalidatingResponse.setURL(url); | 88 revalidatingResponse.setURL(url); |
| 89 revalidatingResponse.setHTTPStatusCode(304); | 89 revalidatingResponse.setHTTPStatusCode(304); |
| 90 resource->responseReceived(revalidatingResponse, nullptr); | 90 resource->responseReceived(revalidatingResponse, nullptr); |
| 91 } | 91 } |
| 92 | 92 |
| 93 TEST(ResourceTest, Vary) { |
| 94 ScopedTestingPlatformSupport<MockPlatform> mock; |
| 95 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo.html"); |
| 96 ResourceResponse response; |
| 97 response.setURL(url); |
| 98 response.setHTTPStatusCode(200); |
| 99 |
| 100 Resource* resource = RawResource::create(url, Resource::Raw); |
| 101 resource->responseReceived(response, nullptr); |
| 102 resource->finish(); |
| 103 |
| 104 ResourceRequest newRequest(url); |
| 105 EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 106 |
| 107 response.setHTTPHeaderField(HTTPNames::Vary, "*"); |
| 108 resource->setResponse(response); |
| 109 EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 110 |
| 111 // Irrelevant header |
| 112 response.setHTTPHeaderField(HTTPNames::Vary, "definitelynotarealheader"); |
| 113 resource->setResponse(response); |
| 114 EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 115 |
| 116 // Header present on new but not old |
| 117 newRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something"); |
| 118 response.setHTTPHeaderField(HTTPNames::Vary, HTTPNames::User_Agent); |
| 119 resource->setResponse(response); |
| 120 EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 121 newRequest.clearHTTPHeaderField(HTTPNames::User_Agent); |
| 122 |
| 123 ResourceRequest oldRequest(url); |
| 124 oldRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something"); |
| 125 oldRequest.setHTTPHeaderField(HTTPNames::Referer, "http://foo.com"); |
| 126 resource = RawResource::create(oldRequest, Resource::Raw); |
| 127 resource->responseReceived(response, nullptr); |
| 128 resource->finish(); |
| 129 |
| 130 // Header present on old but not new |
| 131 newRequest.clearHTTPHeaderField(HTTPNames::User_Agent); |
| 132 response.setHTTPHeaderField(HTTPNames::Vary, HTTPNames::User_Agent); |
| 133 resource->setResponse(response); |
| 134 EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 135 |
| 136 // Header present on both |
| 137 newRequest.setHTTPHeaderField(HTTPNames::User_Agent, "something"); |
| 138 EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 139 |
| 140 // One matching, one mismatching |
| 141 response.setHTTPHeaderField(HTTPNames::Vary, "User-Agent, Referer"); |
| 142 resource->setResponse(response); |
| 143 EXPECT_TRUE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 144 |
| 145 // Two matching |
| 146 newRequest.setHTTPHeaderField(HTTPNames::Referer, "http://foo.com"); |
| 147 EXPECT_FALSE(resource->mustReloadDueToVaryHeader(newRequest)); |
| 148 } |
| 149 |
| 93 } // namespace blink | 150 } // namespace blink |
| OLD | NEW |