Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/http/http_cache.h" | 5 #include "net/http/http_cache.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/bind_helpers.h" | 12 #include "base/bind_helpers.h" |
| 13 #include "base/memory/scoped_vector.h" | |
| 14 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
| 15 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
| 16 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
| 17 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 18 #include "base/test/simple_test_clock.h" | 17 #include "base/test/simple_test_clock.h" |
| 19 #include "net/base/cache_type.h" | 18 #include "net/base/cache_type.h" |
| 20 #include "net/base/elements_upload_data_stream.h" | 19 #include "net/base/elements_upload_data_stream.h" |
| 21 #include "net/base/host_port_pair.h" | 20 #include "net/base/host_port_pair.h" |
| 22 #include "net/base/ip_endpoint.h" | 21 #include "net/base/ip_endpoint.h" |
| 23 #include "net/base/load_flags.h" | 22 #include "net/base/load_flags.h" |
| (...skipping 1383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1407 // the pending transactions before the first one completes. | 1406 // the pending transactions before the first one completes. |
| 1408 // See http://code.google.com/p/chromium/issues/detail?id=25588 | 1407 // See http://code.google.com/p/chromium/issues/detail?id=25588 |
| 1409 TEST(HttpCache, SimpleGET_DoomWithPending) { | 1408 TEST(HttpCache, SimpleGET_DoomWithPending) { |
| 1410 // We need simultaneous doomed / not_doomed entries so let's use a real cache. | 1409 // We need simultaneous doomed / not_doomed entries so let's use a real cache. |
| 1411 MockHttpCache cache(HttpCache::DefaultBackend::InMemory(1024 * 1024)); | 1410 MockHttpCache cache(HttpCache::DefaultBackend::InMemory(1024 * 1024)); |
| 1412 | 1411 |
| 1413 MockHttpRequest request(kSimpleGET_Transaction); | 1412 MockHttpRequest request(kSimpleGET_Transaction); |
| 1414 MockHttpRequest writer_request(kSimpleGET_Transaction); | 1413 MockHttpRequest writer_request(kSimpleGET_Transaction); |
| 1415 writer_request.load_flags = LOAD_BYPASS_CACHE; | 1414 writer_request.load_flags = LOAD_BYPASS_CACHE; |
| 1416 | 1415 |
| 1417 ScopedVector<Context> context_list; | 1416 std::vector<scoped_ptr<Context>> context_list; |
|
mmenke
2015/11/24 17:25:08
include vector, scoped_ptr
mmenke
2015/11/24 17:25:08
Changes in this file don't seem to fit the CL desc
| |
| 1418 const int kNumTransactions = 4; | 1417 const int kNumTransactions = 4; |
| 1419 | 1418 |
| 1420 for (int i = 0; i < kNumTransactions; ++i) { | 1419 for (int i = 0; i < kNumTransactions; ++i) { |
| 1421 context_list.push_back(new Context()); | 1420 context_list.push_back(make_scoped_ptr(new Context())); |
| 1422 Context* c = context_list[i]; | 1421 Context* c = context_list[i].get(); |
| 1423 | 1422 |
| 1424 c->result = cache.CreateTransaction(&c->trans); | 1423 c->result = cache.CreateTransaction(&c->trans); |
| 1425 ASSERT_EQ(OK, c->result); | 1424 ASSERT_EQ(OK, c->result); |
| 1426 | 1425 |
| 1427 MockHttpRequest* this_request = &request; | 1426 MockHttpRequest* this_request = &request; |
| 1428 if (i == 3) | 1427 if (i == 3) |
| 1429 this_request = &writer_request; | 1428 this_request = &writer_request; |
| 1430 | 1429 |
| 1431 c->result = | 1430 c->result = |
| 1432 c->trans->Start(this_request, c->callback.callback(), BoundNetLog()); | 1431 c->trans->Start(this_request, c->callback.callback(), BoundNetLog()); |
| 1433 } | 1432 } |
| 1434 | 1433 |
| 1435 // The first request should be a writer at this point, and the two subsequent | 1434 // The first request should be a writer at this point, and the two subsequent |
| 1436 // requests should be pending. The last request doomed the first entry. | 1435 // requests should be pending. The last request doomed the first entry. |
| 1437 | 1436 |
| 1438 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 1437 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 1439 | 1438 |
| 1440 // Cancel the first queued transaction. | 1439 // Cancel the first queued transaction. |
| 1441 delete context_list[1]; | 1440 context_list[1].reset(); |
| 1442 context_list.get()[1] = NULL; | |
| 1443 | 1441 |
| 1444 for (int i = 0; i < kNumTransactions; ++i) { | 1442 for (int i = 0; i < kNumTransactions; ++i) { |
| 1445 if (i == 1) | 1443 if (i == 1) |
| 1446 continue; | 1444 continue; |
| 1447 Context* c = context_list[i]; | 1445 Context* c = context_list[i].get(); |
| 1448 ASSERT_EQ(ERR_IO_PENDING, c->result); | 1446 ASSERT_EQ(ERR_IO_PENDING, c->result); |
| 1449 c->result = c->callback.WaitForResult(); | 1447 c->result = c->callback.WaitForResult(); |
| 1450 ReadAndVerifyTransaction(c->trans.get(), kSimpleGET_Transaction); | 1448 ReadAndVerifyTransaction(c->trans.get(), kSimpleGET_Transaction); |
| 1451 } | 1449 } |
| 1452 } | 1450 } |
| 1453 | 1451 |
| 1454 // This is a test for http://code.google.com/p/chromium/issues/detail?id=4731. | 1452 // This is a test for http://code.google.com/p/chromium/issues/detail?id=4731. |
| 1455 // We may attempt to delete an entry synchronously with the act of adding a new | 1453 // We may attempt to delete an entry synchronously with the act of adding a new |
| 1456 // transaction to said entry. | 1454 // transaction to said entry. |
| 1457 TEST(HttpCache, FastNoStoreGET_DoneWithPending) { | 1455 TEST(HttpCache, FastNoStoreGET_DoneWithPending) { |
| (...skipping 1461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2919 | 2917 |
| 2920 TEST(HttpCache, SimplePOST_LoadOnlyFromCache_Hit) { | 2918 TEST(HttpCache, SimplePOST_LoadOnlyFromCache_Hit) { |
| 2921 MockHttpCache cache; | 2919 MockHttpCache cache; |
| 2922 | 2920 |
| 2923 // Test that we hit the cache for POST requests. | 2921 // Test that we hit the cache for POST requests. |
| 2924 | 2922 |
| 2925 MockTransaction transaction(kSimplePOST_Transaction); | 2923 MockTransaction transaction(kSimplePOST_Transaction); |
| 2926 | 2924 |
| 2927 const int64 kUploadId = 1; // Just a dummy value. | 2925 const int64 kUploadId = 1; // Just a dummy value. |
| 2928 | 2926 |
| 2929 ScopedVector<UploadElementReader> element_readers; | 2927 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 2930 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 2928 element_readers.push_back( |
| 2931 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), | 2929 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 2930 ElementsUploadDataStream upload_data_stream(std::move(element_readers), | |
| 2932 kUploadId); | 2931 kUploadId); |
| 2933 MockHttpRequest request(transaction); | 2932 MockHttpRequest request(transaction); |
| 2934 request.upload_data_stream = &upload_data_stream; | 2933 request.upload_data_stream = &upload_data_stream; |
| 2935 | 2934 |
| 2936 // Populate the cache. | 2935 // Populate the cache. |
| 2937 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); | 2936 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); |
| 2938 | 2937 |
| 2939 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 2938 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 2940 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 2939 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 2941 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 2940 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 2942 | 2941 |
| 2943 // Load from cache. | 2942 // Load from cache. |
| 2944 request.load_flags |= LOAD_ONLY_FROM_CACHE; | 2943 request.load_flags |= LOAD_ONLY_FROM_CACHE; |
| 2945 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); | 2944 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); |
| 2946 | 2945 |
| 2947 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 2946 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 2948 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 2947 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| 2949 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 2948 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 2950 } | 2949 } |
| 2951 | 2950 |
| 2952 // Test that we don't hit the cache for POST requests if there is a byte range. | 2951 // Test that we don't hit the cache for POST requests if there is a byte range. |
| 2953 TEST(HttpCache, SimplePOST_WithRanges) { | 2952 TEST(HttpCache, SimplePOST_WithRanges) { |
| 2954 MockHttpCache cache; | 2953 MockHttpCache cache; |
| 2955 | 2954 |
| 2956 MockTransaction transaction(kSimplePOST_Transaction); | 2955 MockTransaction transaction(kSimplePOST_Transaction); |
| 2957 transaction.request_headers = "Range: bytes = 0-4\r\n"; | 2956 transaction.request_headers = "Range: bytes = 0-4\r\n"; |
| 2958 | 2957 |
| 2959 const int64 kUploadId = 1; // Just a dummy value. | 2958 const int64 kUploadId = 1; // Just a dummy value. |
| 2960 | 2959 |
| 2961 ScopedVector<UploadElementReader> element_readers; | 2960 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 2962 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 2961 element_readers.push_back( |
| 2963 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), | 2962 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 2963 ElementsUploadDataStream upload_data_stream(std::move(element_readers), | |
| 2964 kUploadId); | 2964 kUploadId); |
| 2965 | 2965 |
| 2966 MockHttpRequest request(transaction); | 2966 MockHttpRequest request(transaction); |
| 2967 request.upload_data_stream = &upload_data_stream; | 2967 request.upload_data_stream = &upload_data_stream; |
| 2968 | 2968 |
| 2969 // Attempt to populate the cache. | 2969 // Attempt to populate the cache. |
| 2970 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); | 2970 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); |
| 2971 | 2971 |
| 2972 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 2972 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 2973 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 2973 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 2974 EXPECT_EQ(0, cache.disk_cache()->create_count()); | 2974 EXPECT_EQ(0, cache.disk_cache()->create_count()); |
| 2975 } | 2975 } |
| 2976 | 2976 |
| 2977 // Tests that a POST is cached separately from a previously cached GET. | 2977 // Tests that a POST is cached separately from a previously cached GET. |
| 2978 TEST(HttpCache, SimplePOST_SeparateCache) { | 2978 TEST(HttpCache, SimplePOST_SeparateCache) { |
| 2979 MockHttpCache cache; | 2979 MockHttpCache cache; |
| 2980 | 2980 |
| 2981 ScopedVector<UploadElementReader> element_readers; | 2981 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 2982 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 2982 element_readers.push_back( |
| 2983 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 1); | 2983 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 2984 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 1); | |
| 2984 | 2985 |
| 2985 MockTransaction transaction(kSimplePOST_Transaction); | 2986 MockTransaction transaction(kSimplePOST_Transaction); |
| 2986 MockHttpRequest req1(transaction); | 2987 MockHttpRequest req1(transaction); |
| 2987 req1.upload_data_stream = &upload_data_stream; | 2988 req1.upload_data_stream = &upload_data_stream; |
| 2988 | 2989 |
| 2989 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 2990 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 2990 | 2991 |
| 2991 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 2992 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 2992 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 2993 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 2993 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 2994 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 3010 AddMockTransaction(&transaction); | 3011 AddMockTransaction(&transaction); |
| 3011 MockHttpRequest req1(transaction); | 3012 MockHttpRequest req1(transaction); |
| 3012 | 3013 |
| 3013 // Attempt to populate the cache. | 3014 // Attempt to populate the cache. |
| 3014 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3015 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3015 | 3016 |
| 3016 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3017 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3017 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3018 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3018 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3019 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3019 | 3020 |
| 3020 ScopedVector<UploadElementReader> element_readers; | 3021 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3021 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3022 element_readers.push_back( |
| 3022 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 1); | 3023 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3024 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 1); | |
| 3023 | 3025 |
| 3024 transaction.method = "POST"; | 3026 transaction.method = "POST"; |
| 3025 transaction.status = "HTTP/1.1 205 No Content"; | 3027 transaction.status = "HTTP/1.1 205 No Content"; |
| 3026 MockHttpRequest req2(transaction); | 3028 MockHttpRequest req2(transaction); |
| 3027 req2.upload_data_stream = &upload_data_stream; | 3029 req2.upload_data_stream = &upload_data_stream; |
| 3028 | 3030 |
| 3029 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3031 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3030 | 3032 |
| 3031 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3033 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3032 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3034 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 3049 AddMockTransaction(&transaction); | 3051 AddMockTransaction(&transaction); |
| 3050 MockHttpRequest req1(transaction); | 3052 MockHttpRequest req1(transaction); |
| 3051 | 3053 |
| 3052 // Attempt to populate the cache. | 3054 // Attempt to populate the cache. |
| 3053 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3055 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3054 | 3056 |
| 3055 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3057 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3056 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3058 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3057 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3059 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3058 | 3060 |
| 3059 ScopedVector<UploadElementReader> element_readers; | 3061 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3060 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3062 element_readers.push_back( |
| 3061 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3063 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3064 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3062 | 3065 |
| 3063 transaction.method = "POST"; | 3066 transaction.method = "POST"; |
| 3064 transaction.status = "HTTP/1.1 205 No Content"; | 3067 transaction.status = "HTTP/1.1 205 No Content"; |
| 3065 MockHttpRequest req2(transaction); | 3068 MockHttpRequest req2(transaction); |
| 3066 req2.upload_data_stream = &upload_data_stream; | 3069 req2.upload_data_stream = &upload_data_stream; |
| 3067 | 3070 |
| 3068 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3071 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3069 | 3072 |
| 3070 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3073 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3071 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3074 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3072 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3075 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3073 | 3076 |
| 3074 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3077 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3075 | 3078 |
| 3076 EXPECT_EQ(3, cache.network_layer()->transaction_count()); | 3079 EXPECT_EQ(3, cache.network_layer()->transaction_count()); |
| 3077 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3080 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3078 EXPECT_EQ(2, cache.disk_cache()->create_count()); | 3081 EXPECT_EQ(2, cache.disk_cache()->create_count()); |
| 3079 RemoveMockTransaction(&transaction); | 3082 RemoveMockTransaction(&transaction); |
| 3080 } | 3083 } |
| 3081 | 3084 |
| 3082 // Tests that processing a POST before creating the backend doesn't crash. | 3085 // Tests that processing a POST before creating the backend doesn't crash. |
| 3083 TEST(HttpCache, SimplePOST_NoUploadId_NoBackend) { | 3086 TEST(HttpCache, SimplePOST_NoUploadId_NoBackend) { |
| 3084 // This will initialize a cache object with NULL backend. | 3087 // This will initialize a cache object with NULL backend. |
| 3085 scoped_ptr<MockBlockingBackendFactory> factory( | 3088 scoped_ptr<MockBlockingBackendFactory> factory( |
| 3086 new MockBlockingBackendFactory()); | 3089 new MockBlockingBackendFactory()); |
| 3087 factory->set_fail(true); | 3090 factory->set_fail(true); |
| 3088 factory->FinishCreation(); | 3091 factory->FinishCreation(); |
| 3089 MockHttpCache cache(factory.Pass()); | 3092 MockHttpCache cache(factory.Pass()); |
| 3090 | 3093 |
| 3091 ScopedVector<UploadElementReader> element_readers; | 3094 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3092 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3095 element_readers.push_back( |
| 3093 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3096 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3097 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3094 | 3098 |
| 3095 MockTransaction transaction(kSimplePOST_Transaction); | 3099 MockTransaction transaction(kSimplePOST_Transaction); |
| 3096 AddMockTransaction(&transaction); | 3100 AddMockTransaction(&transaction); |
| 3097 MockHttpRequest req(transaction); | 3101 MockHttpRequest req(transaction); |
| 3098 req.upload_data_stream = &upload_data_stream; | 3102 req.upload_data_stream = &upload_data_stream; |
| 3099 | 3103 |
| 3100 RunTransactionTestWithRequest(cache.http_cache(), transaction, req, NULL); | 3104 RunTransactionTestWithRequest(cache.http_cache(), transaction, req, NULL); |
| 3101 | 3105 |
| 3102 RemoveMockTransaction(&transaction); | 3106 RemoveMockTransaction(&transaction); |
| 3103 } | 3107 } |
| 3104 | 3108 |
| 3105 // Tests that we don't invalidate entries as a result of a failed POST. | 3109 // Tests that we don't invalidate entries as a result of a failed POST. |
| 3106 TEST(HttpCache, SimplePOST_DontInvalidate_100) { | 3110 TEST(HttpCache, SimplePOST_DontInvalidate_100) { |
| 3107 MockHttpCache cache; | 3111 MockHttpCache cache; |
| 3108 | 3112 |
| 3109 MockTransaction transaction(kSimpleGET_Transaction); | 3113 MockTransaction transaction(kSimpleGET_Transaction); |
| 3110 AddMockTransaction(&transaction); | 3114 AddMockTransaction(&transaction); |
| 3111 MockHttpRequest req1(transaction); | 3115 MockHttpRequest req1(transaction); |
| 3112 | 3116 |
| 3113 // Attempt to populate the cache. | 3117 // Attempt to populate the cache. |
| 3114 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3118 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3115 | 3119 |
| 3116 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3120 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3117 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3121 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3118 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3122 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3119 | 3123 |
| 3120 ScopedVector<UploadElementReader> element_readers; | 3124 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3121 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3125 element_readers.push_back( |
| 3122 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 1); | 3126 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3127 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 1); | |
| 3123 | 3128 |
| 3124 transaction.method = "POST"; | 3129 transaction.method = "POST"; |
| 3125 transaction.status = "HTTP/1.1 100 Continue"; | 3130 transaction.status = "HTTP/1.1 100 Continue"; |
| 3126 MockHttpRequest req2(transaction); | 3131 MockHttpRequest req2(transaction); |
| 3127 req2.upload_data_stream = &upload_data_stream; | 3132 req2.upload_data_stream = &upload_data_stream; |
| 3128 | 3133 |
| 3129 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3134 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3130 | 3135 |
| 3131 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3136 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3132 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3137 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3421 RemoveMockTransaction(&transaction); | 3426 RemoveMockTransaction(&transaction); |
| 3422 } | 3427 } |
| 3423 | 3428 |
| 3424 // Tests that we do not cache the response of a PUT. | 3429 // Tests that we do not cache the response of a PUT. |
| 3425 TEST(HttpCache, SimplePUT_Miss) { | 3430 TEST(HttpCache, SimplePUT_Miss) { |
| 3426 MockHttpCache cache; | 3431 MockHttpCache cache; |
| 3427 | 3432 |
| 3428 MockTransaction transaction(kSimplePOST_Transaction); | 3433 MockTransaction transaction(kSimplePOST_Transaction); |
| 3429 transaction.method = "PUT"; | 3434 transaction.method = "PUT"; |
| 3430 | 3435 |
| 3431 ScopedVector<UploadElementReader> element_readers; | 3436 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3432 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3437 element_readers.push_back( |
| 3433 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3438 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3439 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3434 | 3440 |
| 3435 MockHttpRequest request(transaction); | 3441 MockHttpRequest request(transaction); |
| 3436 request.upload_data_stream = &upload_data_stream; | 3442 request.upload_data_stream = &upload_data_stream; |
| 3437 | 3443 |
| 3438 // Attempt to populate the cache. | 3444 // Attempt to populate the cache. |
| 3439 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); | 3445 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); |
| 3440 | 3446 |
| 3441 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3447 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3442 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3448 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3443 EXPECT_EQ(0, cache.disk_cache()->create_count()); | 3449 EXPECT_EQ(0, cache.disk_cache()->create_count()); |
| 3444 } | 3450 } |
| 3445 | 3451 |
| 3446 // Tests that we invalidate entries as a result of a PUT. | 3452 // Tests that we invalidate entries as a result of a PUT. |
| 3447 TEST(HttpCache, SimplePUT_Invalidate) { | 3453 TEST(HttpCache, SimplePUT_Invalidate) { |
| 3448 MockHttpCache cache; | 3454 MockHttpCache cache; |
| 3449 | 3455 |
| 3450 MockTransaction transaction(kSimpleGET_Transaction); | 3456 MockTransaction transaction(kSimpleGET_Transaction); |
| 3451 MockHttpRequest req1(transaction); | 3457 MockHttpRequest req1(transaction); |
| 3452 | 3458 |
| 3453 // Attempt to populate the cache. | 3459 // Attempt to populate the cache. |
| 3454 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3460 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3455 | 3461 |
| 3456 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3462 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3457 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3463 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3458 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3464 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3459 | 3465 |
| 3460 ScopedVector<UploadElementReader> element_readers; | 3466 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3461 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3467 element_readers.push_back( |
| 3462 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3468 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3469 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3463 | 3470 |
| 3464 transaction.method = "PUT"; | 3471 transaction.method = "PUT"; |
| 3465 MockHttpRequest req2(transaction); | 3472 MockHttpRequest req2(transaction); |
| 3466 req2.upload_data_stream = &upload_data_stream; | 3473 req2.upload_data_stream = &upload_data_stream; |
| 3467 | 3474 |
| 3468 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3475 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3469 | 3476 |
| 3470 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3477 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3471 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3478 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| 3472 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3479 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 3486 AddMockTransaction(&transaction); | 3493 AddMockTransaction(&transaction); |
| 3487 MockHttpRequest req1(transaction); | 3494 MockHttpRequest req1(transaction); |
| 3488 | 3495 |
| 3489 // Attempt to populate the cache. | 3496 // Attempt to populate the cache. |
| 3490 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3497 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3491 | 3498 |
| 3492 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3499 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3493 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3500 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3494 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3501 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3495 | 3502 |
| 3496 ScopedVector<UploadElementReader> element_readers; | 3503 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3497 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3504 element_readers.push_back( |
| 3498 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3505 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3506 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3499 | 3507 |
| 3500 transaction.method = "PUT"; | 3508 transaction.method = "PUT"; |
| 3501 transaction.status = "HTTP/1.1 305 Use Proxy"; | 3509 transaction.status = "HTTP/1.1 305 Use Proxy"; |
| 3502 MockHttpRequest req2(transaction); | 3510 MockHttpRequest req2(transaction); |
| 3503 req2.upload_data_stream = &upload_data_stream; | 3511 req2.upload_data_stream = &upload_data_stream; |
| 3504 | 3512 |
| 3505 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3513 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3506 | 3514 |
| 3507 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3515 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3508 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3516 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 3524 AddMockTransaction(&transaction); | 3532 AddMockTransaction(&transaction); |
| 3525 MockHttpRequest req1(transaction); | 3533 MockHttpRequest req1(transaction); |
| 3526 | 3534 |
| 3527 // Attempt to populate the cache. | 3535 // Attempt to populate the cache. |
| 3528 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3536 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3529 | 3537 |
| 3530 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3538 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3531 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3539 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3532 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3540 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3533 | 3541 |
| 3534 ScopedVector<UploadElementReader> element_readers; | 3542 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3535 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3543 element_readers.push_back( |
| 3536 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3544 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3545 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3537 | 3546 |
| 3538 transaction.method = "PUT"; | 3547 transaction.method = "PUT"; |
| 3539 transaction.status = "HTTP/1.1 404 Not Found"; | 3548 transaction.status = "HTTP/1.1 404 Not Found"; |
| 3540 MockHttpRequest req2(transaction); | 3549 MockHttpRequest req2(transaction); |
| 3541 req2.upload_data_stream = &upload_data_stream; | 3550 req2.upload_data_stream = &upload_data_stream; |
| 3542 | 3551 |
| 3543 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3552 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3544 | 3553 |
| 3545 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3554 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3546 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3555 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| 3547 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3556 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3548 | 3557 |
| 3549 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3558 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3550 | 3559 |
| 3551 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3560 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3552 EXPECT_EQ(2, cache.disk_cache()->open_count()); | 3561 EXPECT_EQ(2, cache.disk_cache()->open_count()); |
| 3553 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3562 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3554 RemoveMockTransaction(&transaction); | 3563 RemoveMockTransaction(&transaction); |
| 3555 } | 3564 } |
| 3556 | 3565 |
| 3557 // Tests that we do not cache the response of a DELETE. | 3566 // Tests that we do not cache the response of a DELETE. |
| 3558 TEST(HttpCache, SimpleDELETE_Miss) { | 3567 TEST(HttpCache, SimpleDELETE_Miss) { |
| 3559 MockHttpCache cache; | 3568 MockHttpCache cache; |
| 3560 | 3569 |
| 3561 MockTransaction transaction(kSimplePOST_Transaction); | 3570 MockTransaction transaction(kSimplePOST_Transaction); |
| 3562 transaction.method = "DELETE"; | 3571 transaction.method = "DELETE"; |
| 3563 | 3572 |
| 3564 ScopedVector<UploadElementReader> element_readers; | 3573 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3565 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3574 element_readers.push_back( |
| 3566 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3575 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3576 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3567 | 3577 |
| 3568 MockHttpRequest request(transaction); | 3578 MockHttpRequest request(transaction); |
| 3569 request.upload_data_stream = &upload_data_stream; | 3579 request.upload_data_stream = &upload_data_stream; |
| 3570 | 3580 |
| 3571 // Attempt to populate the cache. | 3581 // Attempt to populate the cache. |
| 3572 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); | 3582 RunTransactionTestWithRequest(cache.http_cache(), transaction, request, NULL); |
| 3573 | 3583 |
| 3574 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3584 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3575 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3585 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3576 EXPECT_EQ(0, cache.disk_cache()->create_count()); | 3586 EXPECT_EQ(0, cache.disk_cache()->create_count()); |
| 3577 } | 3587 } |
| 3578 | 3588 |
| 3579 // Tests that we invalidate entries as a result of a DELETE. | 3589 // Tests that we invalidate entries as a result of a DELETE. |
| 3580 TEST(HttpCache, SimpleDELETE_Invalidate) { | 3590 TEST(HttpCache, SimpleDELETE_Invalidate) { |
| 3581 MockHttpCache cache; | 3591 MockHttpCache cache; |
| 3582 | 3592 |
| 3583 MockTransaction transaction(kSimpleGET_Transaction); | 3593 MockTransaction transaction(kSimpleGET_Transaction); |
| 3584 MockHttpRequest req1(transaction); | 3594 MockHttpRequest req1(transaction); |
| 3585 | 3595 |
| 3586 // Attempt to populate the cache. | 3596 // Attempt to populate the cache. |
| 3587 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); | 3597 RunTransactionTestWithRequest(cache.http_cache(), transaction, req1, NULL); |
| 3588 | 3598 |
| 3589 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3599 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 3590 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3600 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 3591 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3601 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 3592 | 3602 |
| 3593 ScopedVector<UploadElementReader> element_readers; | 3603 std::vector<scoped_ptr<UploadElementReader>> element_readers; |
| 3594 element_readers.push_back(new UploadBytesElementReader("hello", 5)); | 3604 element_readers.push_back( |
| 3595 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 3605 make_scoped_ptr(new UploadBytesElementReader("hello", 5))); |
| 3606 ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0); | |
| 3596 | 3607 |
| 3597 transaction.method = "DELETE"; | 3608 transaction.method = "DELETE"; |
| 3598 MockHttpRequest req2(transaction); | 3609 MockHttpRequest req2(transaction); |
| 3599 req2.upload_data_stream = &upload_data_stream; | 3610 req2.upload_data_stream = &upload_data_stream; |
| 3600 | 3611 |
| 3601 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); | 3612 RunTransactionTestWithRequest(cache.http_cache(), transaction, req2, NULL); |
| 3602 | 3613 |
| 3603 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3614 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
| 3604 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3615 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| 3605 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3616 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| (...skipping 4112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7718 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 7729 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
| 7719 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 7730 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 7720 EXPECT_TRUE(response_info.was_cached); | 7731 EXPECT_TRUE(response_info.was_cached); |
| 7721 | 7732 |
| 7722 // The new SSL state is reported. | 7733 // The new SSL state is reported. |
| 7723 EXPECT_EQ(status2, response_info.ssl_info.connection_status); | 7734 EXPECT_EQ(status2, response_info.ssl_info.connection_status); |
| 7724 EXPECT_TRUE(cert2->Equals(response_info.ssl_info.cert.get())); | 7735 EXPECT_TRUE(cert2->Equals(response_info.ssl_info.cert.get())); |
| 7725 } | 7736 } |
| 7726 | 7737 |
| 7727 } // namespace net | 7738 } // namespace net |
| OLD | NEW |