Index: net/http/http_cache_unittest.cc |
diff --git a/net/http/http_cache_unittest.cc b/net/http/http_cache_unittest.cc |
index 8d62ee0b4d59c7d2d03d6b36a555c1a580c1883a..779af46f7c7f1d9ee2a0e6cc78d70e6fe41b2cf6 100644 |
--- a/net/http/http_cache_unittest.cc |
+++ b/net/http/http_cache_unittest.cc |
@@ -7377,6 +7377,83 @@ TEST(HttpCache, ResourceFreshnessHeaderNotSent) { |
EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
} |
+TEST(HttpCache, StaleContentNotUsedWhenLoadFlagNotSet) { |
+ MockHttpCache cache; |
+ |
+ ScopedMockTransaction stale_while_revalidate_transaction( |
+ kSimpleGET_Transaction); |
+ |
+ stale_while_revalidate_transaction.response_headers = |
+ "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" |
+ "Age: 10801\n" |
+ "Cache-Control: max-age=0,stale-while-revalidate=86400\n"; |
+ |
+ // Write to the cache. |
+ RunTransactionTest(cache.http_cache(), stale_while_revalidate_transaction); |
+ |
+ EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
+ |
+ // Send the request again and check that it is sent to the network again. |
+ HttpResponseInfo response_info; |
+ RunTransactionTestWithResponseInfo( |
+ cache.http_cache(), stale_while_revalidate_transaction, &response_info); |
+ |
+ EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
+ EXPECT_FALSE(response_info.async_revalidation_required); |
+} |
+ |
+TEST(HttpCache, StaleContentUsedWhenLoadFlagSetAndUsable) { |
+ MockHttpCache cache; |
+ |
+ ScopedMockTransaction stale_while_revalidate_transaction( |
+ kSimpleGET_Transaction); |
+ stale_while_revalidate_transaction.load_flags |= |
+ LOAD_SUPPORT_ASYNC_REVALIDATION; |
+ stale_while_revalidate_transaction.response_headers = |
+ "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" |
+ "Age: 10801\n" |
+ "Cache-Control: max-age=0,stale-while-revalidate=86400\n"; |
+ |
+ // Write to the cache. |
+ RunTransactionTest(cache.http_cache(), stale_while_revalidate_transaction); |
+ |
+ EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
+ |
+ // Send the request again and check that it is not sent to the network again. |
+ HttpResponseInfo response_info; |
+ RunTransactionTestWithResponseInfo( |
+ cache.http_cache(), stale_while_revalidate_transaction, &response_info); |
+ |
+ EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
+ EXPECT_TRUE(response_info.async_revalidation_required); |
+} |
+ |
+TEST(HttpCache, StaleContentNotUsedWhenUnusable) { |
+ MockHttpCache cache; |
+ |
+ ScopedMockTransaction stale_while_revalidate_transaction( |
+ kSimpleGET_Transaction); |
+ stale_while_revalidate_transaction.load_flags |= |
+ LOAD_SUPPORT_ASYNC_REVALIDATION; |
+ stale_while_revalidate_transaction.response_headers = |
+ "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" |
+ "Age: 10801\n" |
+ "Cache-Control: max-age=0,stale-while-revalidate=1800\n"; |
+ |
+ // Write to the cache. |
+ RunTransactionTest(cache.http_cache(), stale_while_revalidate_transaction); |
+ |
+ EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
+ |
+ // Send the request again and check that it is sent to the network again. |
+ HttpResponseInfo response_info; |
+ RunTransactionTestWithResponseInfo( |
+ cache.http_cache(), stale_while_revalidate_transaction, &response_info); |
+ |
+ EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
+ EXPECT_FALSE(response_info.async_revalidation_required); |
+} |
+ |
// Tests that we allow multiple simultaneous, non-overlapping transactions to |
// take place on a sparse entry. |
TEST(HttpCache, RangeGET_MultipleRequests) { |