| Index: net/http/http_response_headers_unittest.cc
|
| diff --git a/net/http/http_response_headers_unittest.cc b/net/http/http_response_headers_unittest.cc
|
| index 3e0c2511851b2e9f382cc4b9995619028bd15c71..5ffc0e80ebb20ca261cf71d1171f00947eaf9787 100644
|
| --- a/net/http/http_response_headers_unittest.cc
|
| +++ b/net/http/http_response_headers_unittest.cc
|
| @@ -75,16 +75,6 @@ class HttpResponseHeadersCacheControlTest : public HttpResponseHeadersTest {
|
| return max_age_value;
|
| }
|
|
|
| - // Get the stale-while-revalidate value. This should only be used in tests
|
| - // where a valid max-age parameter is expected to be present.
|
| - TimeDelta GetStaleWhileRevalidateValue() {
|
| - DCHECK(headers_.get()) << "Call InitializeHeadersWithCacheControl() first";
|
| - TimeDelta stale_while_revalidate_value;
|
| - EXPECT_TRUE(
|
| - headers()->GetStaleWhileRevalidateValue(&stale_while_revalidate_value));
|
| - return stale_while_revalidate_value;
|
| - }
|
| -
|
| private:
|
| scoped_refptr<HttpResponseHeaders> headers_;
|
| TimeDelta delta_;
|
| @@ -808,7 +798,7 @@ INSTANTIATE_TEST_CASE_P(HttpResponseHeaders,
|
|
|
| struct RequiresValidationTestData {
|
| const char* headers;
|
| - ValidationType validation_type;
|
| + bool requires_validation;
|
| };
|
|
|
| class RequiresValidationTest
|
| @@ -831,41 +821,41 @@ TEST_P(RequiresValidationTest, RequiresValidation) {
|
| HeadersToRaw(&headers);
|
| scoped_refptr<HttpResponseHeaders> parsed(new HttpResponseHeaders(headers));
|
|
|
| - ValidationType validation_type =
|
| + bool requires_validation =
|
| parsed->RequiresValidation(request_time, response_time, current_time);
|
| - EXPECT_EQ(test.validation_type, validation_type);
|
| + EXPECT_EQ(test.requires_validation, requires_validation);
|
| }
|
|
|
| const struct RequiresValidationTestData requires_validation_tests[] = {
|
| // No expiry info: expires immediately.
|
| { "HTTP/1.1 200 OK\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // No expiry info: expires immediately.
|
| { "HTTP/1.1 200 OK\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Valid for a little while.
|
| { "HTTP/1.1 200 OK\n"
|
| "cache-control: max-age=10000\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Expires in the future.
|
| { "HTTP/1.1 200 OK\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "expires: Wed, 28 Nov 2007 01:00:00 GMT\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Already expired.
|
| { "HTTP/1.1 200 OK\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "expires: Wed, 28 Nov 2007 00:00:00 GMT\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Max-age trumps expires.
|
| { "HTTP/1.1 200 OK\n"
|
| @@ -873,77 +863,77 @@ const struct RequiresValidationTestData requires_validation_tests[] = {
|
| "expires: Wed, 28 Nov 2007 00:00:00 GMT\n"
|
| "cache-control: max-age=10000\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Last-modified heuristic: modified a while ago.
|
| { "HTTP/1.1 200 OK\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 27 Nov 2007 08:00:00 GMT\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| { "HTTP/1.1 203 Non-Authoritative Information\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 27 Nov 2007 08:00:00 GMT\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| { "HTTP/1.1 206 Partial Content\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 27 Nov 2007 08:00:00 GMT\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Last-modified heuristic: modified recently.
|
| { "HTTP/1.1 200 OK\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 28 Nov 2007 00:40:10 GMT\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| { "HTTP/1.1 203 Non-Authoritative Information\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 28 Nov 2007 00:40:10 GMT\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| { "HTTP/1.1 206 Partial Content\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "last-modified: Wed, 28 Nov 2007 00:40:10 GMT\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Cached permanent redirect.
|
| { "HTTP/1.1 301 Moved Permanently\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Another cached permanent redirect.
|
| { "HTTP/1.1 308 Permanent Redirect\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Cached redirect: not reusable even though by default it would be.
|
| { "HTTP/1.1 300 Multiple Choices\n"
|
| "Cache-Control: no-cache\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Cached forever by default.
|
| { "HTTP/1.1 410 Gone\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Cached temporary redirect: not reusable.
|
| { "HTTP/1.1 302 Found\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Cached temporary redirect: reusable.
|
| { "HTTP/1.1 302 Found\n"
|
| "cache-control: max-age=10000\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Cache-control: max-age=N overrides expires: date in the past.
|
| { "HTTP/1.1 200 OK\n"
|
| @@ -951,7 +941,7 @@ const struct RequiresValidationTestData requires_validation_tests[] = {
|
| "expires: Wed, 28 Nov 2007 00:20:11 GMT\n"
|
| "cache-control: max-age=10000\n"
|
| "\n",
|
| - VALIDATION_NONE
|
| + false
|
| },
|
| // Cache-control: no-store overrides expires: in the future.
|
| { "HTTP/1.1 200 OK\n"
|
| @@ -959,7 +949,7 @@ const struct RequiresValidationTestData requires_validation_tests[] = {
|
| "expires: Wed, 29 Nov 2007 00:40:11 GMT\n"
|
| "cache-control: no-store,private,no-cache=\"foo\"\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // Pragma: no-cache overrides last-modified heuristic.
|
| { "HTTP/1.1 200 OK\n"
|
| @@ -967,60 +957,14 @@ const struct RequiresValidationTestData requires_validation_tests[] = {
|
| "last-modified: Wed, 27 Nov 2007 08:00:00 GMT\n"
|
| "pragma: no-cache\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
| // max-age has expired, needs synchronous revalidation
|
| { "HTTP/1.1 200 OK\n"
|
| "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| "cache-control: max-age=300\n"
|
| "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| - },
|
| - // max-age has expired, stale-while-revalidate has not, eligible for
|
| - // asynchronous revalidation
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: max-age=300, stale-while-revalidate=3600\n"
|
| - "\n",
|
| - VALIDATION_ASYNCHRONOUS
|
| - },
|
| - // max-age and stale-while-revalidate have expired, needs synchronous
|
| - // revalidation
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: max-age=300, stale-while-revalidate=5\n"
|
| - "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| - },
|
| - // max-age is 0, stale-while-revalidate is large enough to permit
|
| - // asynchronous revalidation
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: max-age=0, stale-while-revalidate=360\n"
|
| - "\n",
|
| - VALIDATION_ASYNCHRONOUS
|
| - },
|
| - // stale-while-revalidate must not override no-cache or similar directives.
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: no-cache, stale-while-revalidate=360\n"
|
| - "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| - },
|
| - // max-age has not expired, so no revalidation is needed.
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: max-age=3600, stale-while-revalidate=3600\n"
|
| - "\n",
|
| - VALIDATION_NONE
|
| - },
|
| - // must-revalidate overrides stale-while-revalidate, so synchronous validation
|
| - // is needed.
|
| - { "HTTP/1.1 200 OK\n"
|
| - "date: Wed, 28 Nov 2007 00:40:11 GMT\n"
|
| - "cache-control: must-revalidate, max-age=300, stale-while-revalidate=3600\n"
|
| - "\n",
|
| - VALIDATION_SYNCHRONOUS
|
| + true
|
| },
|
|
|
| // TODO(darin): Add many many more tests here.
|
| @@ -2193,36 +2137,6 @@ INSTANTIATE_TEST_CASE_P(HttpResponseHeadersCacheControl,
|
| MaxAgeEdgeCasesTest,
|
| testing::ValuesIn(max_age_tests));
|
|
|
| -TEST_F(HttpResponseHeadersCacheControlTest,
|
| - AbsentStaleWhileRevalidateReturnsFalse) {
|
| - InitializeHeadersWithCacheControl("max-age=3600");
|
| - EXPECT_FALSE(headers()->GetStaleWhileRevalidateValue(TimeDeltaPointer()));
|
| -}
|
| -
|
| -TEST_F(HttpResponseHeadersCacheControlTest,
|
| - StaleWhileRevalidateWithoutValueRejected) {
|
| - InitializeHeadersWithCacheControl("max-age=3600,stale-while-revalidate=");
|
| - EXPECT_FALSE(headers()->GetStaleWhileRevalidateValue(TimeDeltaPointer()));
|
| -}
|
| -
|
| -TEST_F(HttpResponseHeadersCacheControlTest,
|
| - StaleWhileRevalidateWithInvalidValueTreatedAsZero) {
|
| - InitializeHeadersWithCacheControl("max-age=3600,stale-while-revalidate=true");
|
| - EXPECT_EQ(TimeDelta(), GetStaleWhileRevalidateValue());
|
| -}
|
| -
|
| -TEST_F(HttpResponseHeadersCacheControlTest, StaleWhileRevalidateValueReturned) {
|
| - InitializeHeadersWithCacheControl("max-age=3600,stale-while-revalidate=7200");
|
| - EXPECT_EQ(TimeDelta::FromSeconds(7200), GetStaleWhileRevalidateValue());
|
| -}
|
| -
|
| -TEST_F(HttpResponseHeadersCacheControlTest,
|
| - FirstStaleWhileRevalidateValueUsed) {
|
| - InitializeHeadersWithCacheControl(
|
| - "stale-while-revalidate=1,stale-while-revalidate=7200");
|
| - EXPECT_EQ(TimeDelta::FromSeconds(1), GetStaleWhileRevalidateValue());
|
| -}
|
| -
|
| struct GetCurrentAgeTestData {
|
| const char* headers;
|
| const char* request_time;
|
|
|