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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
72 void RunTransactionTestWithRequestAndLog(net::HttpCache* cache, | 72 void RunTransactionTestWithRequestAndLog(net::HttpCache* cache, |
73 const MockTransaction& trans_info, | 73 const MockTransaction& trans_info, |
74 const MockHttpRequest& request, | 74 const MockHttpRequest& request, |
75 net::HttpResponseInfo* response_info, | 75 net::HttpResponseInfo* response_info, |
76 const net::BoundNetLog& net_log) { | 76 const net::BoundNetLog& net_log) { |
77 net::TestCompletionCallback callback; | 77 net::TestCompletionCallback callback; |
78 | 78 |
79 // write to the cache | 79 // write to the cache |
80 | 80 |
81 scoped_ptr<net::HttpTransaction> trans; | 81 scoped_ptr<net::HttpTransaction> trans; |
82 int rv = cache->CreateTransaction(&trans); | 82 int rv = cache->CreateTransaction(&trans, NULL); |
83 EXPECT_EQ(net::OK, rv); | 83 EXPECT_EQ(net::OK, rv); |
84 ASSERT_TRUE(trans.get()); | 84 ASSERT_TRUE(trans.get()); |
85 | 85 |
86 rv = trans->Start(&request, callback.callback(), net_log); | 86 rv = trans->Start(&request, callback.callback(), net_log); |
87 if (rv == net::ERR_IO_PENDING) | 87 if (rv == net::ERR_IO_PENDING) |
88 rv = callback.WaitForResult(); | 88 rv = callback.WaitForResult(); |
89 ASSERT_EQ(net::OK, rv); | 89 ASSERT_EQ(net::OK, rv); |
90 | 90 |
91 const net::HttpResponseInfo* response = trans->GetResponseInfo(); | 91 const net::HttpResponseInfo* response = trans->GetResponseInfo(); |
92 ASSERT_TRUE(response); | 92 ASSERT_TRUE(response); |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
389 } // namespace | 389 } // namespace |
390 | 390 |
391 | 391 |
392 //----------------------------------------------------------------------------- | 392 //----------------------------------------------------------------------------- |
393 // Tests. | 393 // Tests. |
394 | 394 |
395 TEST(HttpCache, CreateThenDestroy) { | 395 TEST(HttpCache, CreateThenDestroy) { |
396 MockHttpCache cache; | 396 MockHttpCache cache; |
397 | 397 |
398 scoped_ptr<net::HttpTransaction> trans; | 398 scoped_ptr<net::HttpTransaction> trans; |
399 int rv = cache.http_cache()->CreateTransaction(&trans); | 399 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
400 EXPECT_EQ(net::OK, rv); | 400 EXPECT_EQ(net::OK, rv); |
401 ASSERT_TRUE(trans.get()); | 401 ASSERT_TRUE(trans.get()); |
402 } | 402 } |
403 | 403 |
404 TEST(HttpCache, GetBackend) { | 404 TEST(HttpCache, GetBackend) { |
405 MockHttpCache cache(net::HttpCache::DefaultBackend::InMemory(0)); | 405 MockHttpCache cache(net::HttpCache::DefaultBackend::InMemory(0)); |
406 | 406 |
407 disk_cache::Backend* backend; | 407 disk_cache::Backend* backend; |
408 net::TestCompletionCallback cb; | 408 net::TestCompletionCallback cb; |
409 // This will lazily initialize the backend. | 409 // This will lazily initialize the backend. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
493 } | 493 } |
494 | 494 |
495 // Tests that disk failures after the transaction has started don't cause the | 495 // Tests that disk failures after the transaction has started don't cause the |
496 // request to fail. | 496 // request to fail. |
497 TEST(HttpCache, SimpleGETWithDiskFailures2) { | 497 TEST(HttpCache, SimpleGETWithDiskFailures2) { |
498 MockHttpCache cache; | 498 MockHttpCache cache; |
499 | 499 |
500 MockHttpRequest request(kSimpleGET_Transaction); | 500 MockHttpRequest request(kSimpleGET_Transaction); |
501 | 501 |
502 scoped_ptr<Context> c(new Context()); | 502 scoped_ptr<Context> c(new Context()); |
503 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 503 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
504 EXPECT_EQ(net::OK, rv); | 504 EXPECT_EQ(net::OK, rv); |
505 | 505 |
506 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 506 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
507 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 507 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
508 rv = c->callback.WaitForResult(); | 508 rv = c->callback.WaitForResult(); |
509 | 509 |
510 // Start failing request now. | 510 // Start failing request now. |
511 cache.disk_cache()->set_soft_failures(true); | 511 cache.disk_cache()->set_soft_failures(true); |
512 | 512 |
513 // We have to open the entry again to propagate the failure flag. | 513 // We have to open the entry again to propagate the failure flag. |
(...skipping 24 matching lines...) Expand all Loading... | |
538 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); | 538 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); |
539 | 539 |
540 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 540 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
541 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 541 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
542 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 542 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
543 | 543 |
544 cache.disk_cache()->set_soft_failures(true); | 544 cache.disk_cache()->set_soft_failures(true); |
545 | 545 |
546 // Now fail to read from the cache. | 546 // Now fail to read from the cache. |
547 scoped_ptr<Context> c(new Context()); | 547 scoped_ptr<Context> c(new Context()); |
548 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 548 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
549 EXPECT_EQ(net::OK, rv); | 549 EXPECT_EQ(net::OK, rv); |
550 | 550 |
551 MockHttpRequest request(kSimpleGET_Transaction); | 551 MockHttpRequest request(kSimpleGET_Transaction); |
552 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 552 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
553 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); | 553 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); |
554 | 554 |
555 // Now verify that the entry was removed from the cache. | 555 // Now verify that the entry was removed from the cache. |
556 cache.disk_cache()->set_soft_failures(false); | 556 cache.disk_cache()->set_soft_failures(false); |
557 | 557 |
558 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 558 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
638 MockHttpCache cache; | 638 MockHttpCache cache; |
639 | 639 |
640 // force this transaction to read from the cache | 640 // force this transaction to read from the cache |
641 MockTransaction transaction(kSimpleGET_Transaction); | 641 MockTransaction transaction(kSimpleGET_Transaction); |
642 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; | 642 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
643 | 643 |
644 MockHttpRequest request(transaction); | 644 MockHttpRequest request(transaction); |
645 net::TestCompletionCallback callback; | 645 net::TestCompletionCallback callback; |
646 | 646 |
647 scoped_ptr<net::HttpTransaction> trans; | 647 scoped_ptr<net::HttpTransaction> trans; |
648 int rv = cache.http_cache()->CreateTransaction(&trans); | 648 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
649 EXPECT_EQ(net::OK, rv); | 649 EXPECT_EQ(net::OK, rv); |
650 ASSERT_TRUE(trans.get()); | 650 ASSERT_TRUE(trans.get()); |
651 | 651 |
652 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 652 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
653 if (rv == net::ERR_IO_PENDING) | 653 if (rv == net::ERR_IO_PENDING) |
654 rv = callback.WaitForResult(); | 654 rv = callback.WaitForResult(); |
655 ASSERT_EQ(net::ERR_CACHE_MISS, rv); | 655 ASSERT_EQ(net::ERR_CACHE_MISS, rv); |
656 | 656 |
657 trans.reset(); | 657 trans.reset(); |
658 | 658 |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
864 | 864 |
865 MockHttpRequest request(kSimpleGET_Transaction); | 865 MockHttpRequest request(kSimpleGET_Transaction); |
866 | 866 |
867 std::vector<Context*> context_list; | 867 std::vector<Context*> context_list; |
868 const int kNumTransactions = 5; | 868 const int kNumTransactions = 5; |
869 | 869 |
870 for (int i = 0; i < kNumTransactions; ++i) { | 870 for (int i = 0; i < kNumTransactions; ++i) { |
871 context_list.push_back(new Context()); | 871 context_list.push_back(new Context()); |
872 Context* c = context_list[i]; | 872 Context* c = context_list[i]; |
873 | 873 |
874 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 874 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
875 EXPECT_EQ(net::OK, c->result); | 875 EXPECT_EQ(net::OK, c->result); |
876 EXPECT_EQ(net::LOAD_STATE_IDLE, c->trans->GetLoadState()); | 876 EXPECT_EQ(net::LOAD_STATE_IDLE, c->trans->GetLoadState()); |
877 | 877 |
878 c->result = c->trans->Start( | 878 c->result = c->trans->Start( |
879 &request, c->callback.callback(), net::BoundNetLog()); | 879 &request, c->callback.callback(), net::BoundNetLog()); |
880 } | 880 } |
881 | 881 |
882 // All requests are waiting for the active entry. | 882 // All requests are waiting for the active entry. |
883 for (int i = 0; i < kNumTransactions; ++i) { | 883 for (int i = 0; i < kNumTransactions; ++i) { |
884 Context* c = context_list[i]; | 884 Context* c = context_list[i]; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
932 MockHttpRequest reader_request(kSimpleGET_Transaction); | 932 MockHttpRequest reader_request(kSimpleGET_Transaction); |
933 reader_request.load_flags = net::LOAD_ONLY_FROM_CACHE; | 933 reader_request.load_flags = net::LOAD_ONLY_FROM_CACHE; |
934 | 934 |
935 std::vector<Context*> context_list; | 935 std::vector<Context*> context_list; |
936 const int kNumTransactions = 5; | 936 const int kNumTransactions = 5; |
937 | 937 |
938 for (int i = 0; i < kNumTransactions; ++i) { | 938 for (int i = 0; i < kNumTransactions; ++i) { |
939 context_list.push_back(new Context()); | 939 context_list.push_back(new Context()); |
940 Context* c = context_list[i]; | 940 Context* c = context_list[i]; |
941 | 941 |
942 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 942 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
943 EXPECT_EQ(net::OK, c->result); | 943 EXPECT_EQ(net::OK, c->result); |
944 | 944 |
945 MockHttpRequest* this_request = &request; | 945 MockHttpRequest* this_request = &request; |
946 if (i == 1 || i == 2) | 946 if (i == 1 || i == 2) |
947 this_request = &reader_request; | 947 this_request = &reader_request; |
948 | 948 |
949 c->result = c->trans->Start( | 949 c->result = c->trans->Start( |
950 this_request, c->callback.callback(), net::BoundNetLog()); | 950 this_request, c->callback.callback(), net::BoundNetLog()); |
951 } | 951 } |
952 | 952 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1017 MockHttpRequest writer_request(kSimpleGET_Transaction); | 1017 MockHttpRequest writer_request(kSimpleGET_Transaction); |
1018 writer_request.load_flags = net::LOAD_BYPASS_CACHE; | 1018 writer_request.load_flags = net::LOAD_BYPASS_CACHE; |
1019 | 1019 |
1020 ScopedVector<Context> context_list; | 1020 ScopedVector<Context> context_list; |
1021 const int kNumTransactions = 4; | 1021 const int kNumTransactions = 4; |
1022 | 1022 |
1023 for (int i = 0; i < kNumTransactions; ++i) { | 1023 for (int i = 0; i < kNumTransactions; ++i) { |
1024 context_list.push_back(new Context()); | 1024 context_list.push_back(new Context()); |
1025 Context* c = context_list[i]; | 1025 Context* c = context_list[i]; |
1026 | 1026 |
1027 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1027 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1028 EXPECT_EQ(net::OK, c->result); | 1028 EXPECT_EQ(net::OK, c->result); |
1029 | 1029 |
1030 MockHttpRequest* this_request = &request; | 1030 MockHttpRequest* this_request = &request; |
1031 if (i == 3) | 1031 if (i == 3) |
1032 this_request = &writer_request; | 1032 this_request = &writer_request; |
1033 | 1033 |
1034 c->result = c->trans->Start( | 1034 c->result = c->trans->Start( |
1035 this_request, c->callback.callback(), net::BoundNetLog()); | 1035 this_request, c->callback.callback(), net::BoundNetLog()); |
1036 } | 1036 } |
1037 | 1037 |
(...skipping 27 matching lines...) Expand all Loading... | |
1065 FastTransactionServer request_handler; | 1065 FastTransactionServer request_handler; |
1066 AddMockTransaction(&kFastNoStoreGET_Transaction); | 1066 AddMockTransaction(&kFastNoStoreGET_Transaction); |
1067 | 1067 |
1068 std::vector<Context*> context_list; | 1068 std::vector<Context*> context_list; |
1069 const int kNumTransactions = 3; | 1069 const int kNumTransactions = 3; |
1070 | 1070 |
1071 for (int i = 0; i < kNumTransactions; ++i) { | 1071 for (int i = 0; i < kNumTransactions; ++i) { |
1072 context_list.push_back(new Context()); | 1072 context_list.push_back(new Context()); |
1073 Context* c = context_list[i]; | 1073 Context* c = context_list[i]; |
1074 | 1074 |
1075 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1075 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1076 EXPECT_EQ(net::OK, c->result); | 1076 EXPECT_EQ(net::OK, c->result); |
1077 | 1077 |
1078 c->result = c->trans->Start( | 1078 c->result = c->trans->Start( |
1079 &request, c->callback.callback(), net::BoundNetLog()); | 1079 &request, c->callback.callback(), net::BoundNetLog()); |
1080 } | 1080 } |
1081 | 1081 |
1082 // Allow all requests to move from the Create queue to the active entry. | 1082 // Allow all requests to move from the Create queue to the active entry. |
1083 MessageLoop::current()->RunAllPending(); | 1083 MessageLoop::current()->RunAllPending(); |
1084 | 1084 |
1085 // The first request should be a writer at this point, and the subsequent | 1085 // The first request should be a writer at this point, and the subsequent |
(...skipping 26 matching lines...) Expand all Loading... | |
1112 | 1112 |
1113 MockHttpRequest request(kSimpleGET_Transaction); | 1113 MockHttpRequest request(kSimpleGET_Transaction); |
1114 | 1114 |
1115 std::vector<Context*> context_list; | 1115 std::vector<Context*> context_list; |
1116 const int kNumTransactions = 2; | 1116 const int kNumTransactions = 2; |
1117 | 1117 |
1118 for (int i = 0; i < kNumTransactions; ++i) { | 1118 for (int i = 0; i < kNumTransactions; ++i) { |
1119 context_list.push_back(new Context()); | 1119 context_list.push_back(new Context()); |
1120 Context* c = context_list[i]; | 1120 Context* c = context_list[i]; |
1121 | 1121 |
1122 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1122 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1123 EXPECT_EQ(net::OK, c->result); | 1123 EXPECT_EQ(net::OK, c->result); |
1124 | 1124 |
1125 c->result = c->trans->Start( | 1125 c->result = c->trans->Start( |
1126 &request, c->callback.callback(), net::BoundNetLog()); | 1126 &request, c->callback.callback(), net::BoundNetLog()); |
1127 } | 1127 } |
1128 | 1128 |
1129 // Allow all requests to move from the Create queue to the active entry. | 1129 // Allow all requests to move from the Create queue to the active entry. |
1130 MessageLoop::current()->RunAllPending(); | 1130 MessageLoop::current()->RunAllPending(); |
1131 | 1131 |
1132 // The first request should be a writer at this point, and the subsequent | 1132 // The first request should be a writer at this point, and the subsequent |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1172 | 1172 |
1173 MockHttpRequest request(kSimpleGET_Transaction); | 1173 MockHttpRequest request(kSimpleGET_Transaction); |
1174 | 1174 |
1175 std::vector<Context*> context_list; | 1175 std::vector<Context*> context_list; |
1176 const int kNumTransactions = 5; | 1176 const int kNumTransactions = 5; |
1177 | 1177 |
1178 for (int i = 0; i < kNumTransactions; i++) { | 1178 for (int i = 0; i < kNumTransactions; i++) { |
1179 context_list.push_back(new Context()); | 1179 context_list.push_back(new Context()); |
1180 Context* c = context_list[i]; | 1180 Context* c = context_list[i]; |
1181 | 1181 |
1182 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1182 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1183 EXPECT_EQ(net::OK, c->result); | 1183 EXPECT_EQ(net::OK, c->result); |
1184 | 1184 |
1185 c->result = c->trans->Start( | 1185 c->result = c->trans->Start( |
1186 &request, c->callback.callback(), net::BoundNetLog()); | 1186 &request, c->callback.callback(), net::BoundNetLog()); |
1187 } | 1187 } |
1188 | 1188 |
1189 // The first request should be creating the disk cache entry and the others | 1189 // The first request should be creating the disk cache entry and the others |
1190 // should be pending. | 1190 // should be pending. |
1191 | 1191 |
1192 EXPECT_EQ(0, cache.network_layer()->transaction_count()); | 1192 EXPECT_EQ(0, cache.network_layer()->transaction_count()); |
(...skipping 30 matching lines...) Expand all Loading... | |
1223 } | 1223 } |
1224 | 1224 |
1225 // Tests that we can cancel a single request to open a disk cache entry. | 1225 // Tests that we can cancel a single request to open a disk cache entry. |
1226 TEST(HttpCache, SimpleGET_CancelCreate) { | 1226 TEST(HttpCache, SimpleGET_CancelCreate) { |
1227 MockHttpCache cache; | 1227 MockHttpCache cache; |
1228 | 1228 |
1229 MockHttpRequest request(kSimpleGET_Transaction); | 1229 MockHttpRequest request(kSimpleGET_Transaction); |
1230 | 1230 |
1231 Context* c = new Context(); | 1231 Context* c = new Context(); |
1232 | 1232 |
1233 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1233 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1234 EXPECT_EQ(net::OK, c->result); | 1234 EXPECT_EQ(net::OK, c->result); |
1235 | 1235 |
1236 c->result = c->trans->Start( | 1236 c->result = c->trans->Start( |
1237 &request, c->callback.callback(), net::BoundNetLog()); | 1237 &request, c->callback.callback(), net::BoundNetLog()); |
1238 EXPECT_EQ(net::ERR_IO_PENDING, c->result); | 1238 EXPECT_EQ(net::ERR_IO_PENDING, c->result); |
1239 | 1239 |
1240 // Release the reference that the mock disk cache keeps for this entry, so | 1240 // Release the reference that the mock disk cache keeps for this entry, so |
1241 // that we test that the http cache handles the cancellation correctly. | 1241 // that we test that the http cache handles the cancellation correctly. |
1242 cache.disk_cache()->ReleaseAll(); | 1242 cache.disk_cache()->ReleaseAll(); |
1243 delete c; | 1243 delete c; |
1244 | 1244 |
1245 MessageLoop::current()->RunAllPending(); | 1245 MessageLoop::current()->RunAllPending(); |
1246 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 1246 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
1247 } | 1247 } |
1248 | 1248 |
1249 // Tests that we delete/create entries even if multiple requests are queued. | 1249 // Tests that we delete/create entries even if multiple requests are queued. |
1250 TEST(HttpCache, SimpleGET_ManyWriters_BypassCache) { | 1250 TEST(HttpCache, SimpleGET_ManyWriters_BypassCache) { |
1251 MockHttpCache cache; | 1251 MockHttpCache cache; |
1252 | 1252 |
1253 MockHttpRequest request(kSimpleGET_Transaction); | 1253 MockHttpRequest request(kSimpleGET_Transaction); |
1254 request.load_flags = net::LOAD_BYPASS_CACHE; | 1254 request.load_flags = net::LOAD_BYPASS_CACHE; |
1255 | 1255 |
1256 std::vector<Context*> context_list; | 1256 std::vector<Context*> context_list; |
1257 const int kNumTransactions = 5; | 1257 const int kNumTransactions = 5; |
1258 | 1258 |
1259 for (int i = 0; i < kNumTransactions; i++) { | 1259 for (int i = 0; i < kNumTransactions; i++) { |
1260 context_list.push_back(new Context()); | 1260 context_list.push_back(new Context()); |
1261 Context* c = context_list[i]; | 1261 Context* c = context_list[i]; |
1262 | 1262 |
1263 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1263 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1264 EXPECT_EQ(net::OK, c->result); | 1264 EXPECT_EQ(net::OK, c->result); |
1265 | 1265 |
1266 c->result = c->trans->Start( | 1266 c->result = c->trans->Start( |
1267 &request, c->callback.callback(), net::BoundNetLog()); | 1267 &request, c->callback.callback(), net::BoundNetLog()); |
1268 } | 1268 } |
1269 | 1269 |
1270 // The first request should be deleting the disk cache entry and the others | 1270 // The first request should be deleting the disk cache entry and the others |
1271 // should be pending. | 1271 // should be pending. |
1272 | 1272 |
1273 EXPECT_EQ(0, cache.network_layer()->transaction_count()); | 1273 EXPECT_EQ(0, cache.network_layer()->transaction_count()); |
(...skipping 21 matching lines...) Expand all Loading... | |
1295 TEST(HttpCache, SimpleGET_AbandonedCacheRead) { | 1295 TEST(HttpCache, SimpleGET_AbandonedCacheRead) { |
1296 MockHttpCache cache; | 1296 MockHttpCache cache; |
1297 | 1297 |
1298 // write to the cache | 1298 // write to the cache |
1299 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); | 1299 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); |
1300 | 1300 |
1301 MockHttpRequest request(kSimpleGET_Transaction); | 1301 MockHttpRequest request(kSimpleGET_Transaction); |
1302 net::TestCompletionCallback callback; | 1302 net::TestCompletionCallback callback; |
1303 | 1303 |
1304 scoped_ptr<net::HttpTransaction> trans; | 1304 scoped_ptr<net::HttpTransaction> trans; |
1305 int rv = cache.http_cache()->CreateTransaction(&trans); | 1305 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
1306 EXPECT_EQ(net::OK, rv); | 1306 EXPECT_EQ(net::OK, rv); |
1307 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 1307 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
1308 if (rv == net::ERR_IO_PENDING) | 1308 if (rv == net::ERR_IO_PENDING) |
1309 rv = callback.WaitForResult(); | 1309 rv = callback.WaitForResult(); |
1310 ASSERT_EQ(net::OK, rv); | 1310 ASSERT_EQ(net::OK, rv); |
1311 | 1311 |
1312 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); | 1312 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); |
1313 rv = trans->Read(buf, 256, callback.callback()); | 1313 rv = trans->Read(buf, 256, callback.callback()); |
1314 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 1314 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
1315 | 1315 |
(...skipping 14 matching lines...) Expand all Loading... | |
1330 | 1330 |
1331 MockHttpRequest request(kSimpleGET_Transaction); | 1331 MockHttpRequest request(kSimpleGET_Transaction); |
1332 | 1332 |
1333 std::vector<Context*> context_list; | 1333 std::vector<Context*> context_list; |
1334 const int kNumTransactions = 5; | 1334 const int kNumTransactions = 5; |
1335 | 1335 |
1336 for (int i = 0; i < kNumTransactions; i++) { | 1336 for (int i = 0; i < kNumTransactions; i++) { |
1337 context_list.push_back(new Context()); | 1337 context_list.push_back(new Context()); |
1338 Context* c = context_list[i]; | 1338 Context* c = context_list[i]; |
1339 | 1339 |
1340 c->result = cache->http_cache()->CreateTransaction(&c->trans); | 1340 c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
1341 EXPECT_EQ(net::OK, c->result); | 1341 EXPECT_EQ(net::OK, c->result); |
1342 | 1342 |
1343 c->result = c->trans->Start( | 1343 c->result = c->trans->Start( |
1344 &request, c->callback.callback(), net::BoundNetLog()); | 1344 &request, c->callback.callback(), net::BoundNetLog()); |
1345 } | 1345 } |
1346 | 1346 |
1347 // The first request should be creating the disk cache entry and the others | 1347 // The first request should be creating the disk cache entry and the others |
1348 // should be pending. | 1348 // should be pending. |
1349 | 1349 |
1350 EXPECT_EQ(0, cache->network_layer()->transaction_count()); | 1350 EXPECT_EQ(0, cache->network_layer()->transaction_count()); |
(...skipping 18 matching lines...) Expand all Loading... | |
1369 MockHttpRequest request1(kTypicalGET_Transaction); | 1369 MockHttpRequest request1(kTypicalGET_Transaction); |
1370 MockHttpRequest request2(kETagGET_Transaction); | 1370 MockHttpRequest request2(kETagGET_Transaction); |
1371 | 1371 |
1372 std::vector<Context*> context_list; | 1372 std::vector<Context*> context_list; |
1373 const int kNumTransactions = 3; | 1373 const int kNumTransactions = 3; |
1374 | 1374 |
1375 for (int i = 0; i < kNumTransactions; i++) { | 1375 for (int i = 0; i < kNumTransactions; i++) { |
1376 context_list.push_back(new Context()); | 1376 context_list.push_back(new Context()); |
1377 Context* c = context_list[i]; | 1377 Context* c = context_list[i]; |
1378 | 1378 |
1379 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1379 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1380 EXPECT_EQ(net::OK, c->result); | 1380 EXPECT_EQ(net::OK, c->result); |
1381 } | 1381 } |
1382 | 1382 |
1383 context_list[0]->result = context_list[0]->trans->Start( | 1383 context_list[0]->result = context_list[0]->trans->Start( |
1384 &request0, context_list[0]->callback.callback(), net::BoundNetLog()); | 1384 &request0, context_list[0]->callback.callback(), net::BoundNetLog()); |
1385 context_list[1]->result = context_list[1]->trans->Start( | 1385 context_list[1]->result = context_list[1]->trans->Start( |
1386 &request1, context_list[1]->callback.callback(), net::BoundNetLog()); | 1386 &request1, context_list[1]->callback.callback(), net::BoundNetLog()); |
1387 context_list[2]->result = context_list[2]->trans->Start( | 1387 context_list[2]->result = context_list[2]->trans->Start( |
1388 &request2, context_list[2]->callback.callback(), net::BoundNetLog()); | 1388 &request2, context_list[2]->callback.callback(), net::BoundNetLog()); |
1389 | 1389 |
(...skipping 25 matching lines...) Expand all Loading... | |
1415 MockHttpRequest request1(kTypicalGET_Transaction); | 1415 MockHttpRequest request1(kTypicalGET_Transaction); |
1416 MockHttpRequest request2(kETagGET_Transaction); | 1416 MockHttpRequest request2(kETagGET_Transaction); |
1417 | 1417 |
1418 std::vector<Context*> context_list; | 1418 std::vector<Context*> context_list; |
1419 const int kNumTransactions = 3; | 1419 const int kNumTransactions = 3; |
1420 | 1420 |
1421 for (int i = 0; i < kNumTransactions; i++) { | 1421 for (int i = 0; i < kNumTransactions; i++) { |
1422 context_list.push_back(new Context()); | 1422 context_list.push_back(new Context()); |
1423 Context* c = context_list[i]; | 1423 Context* c = context_list[i]; |
1424 | 1424 |
1425 c->result = cache.http_cache()->CreateTransaction(&c->trans); | 1425 c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
1426 EXPECT_EQ(net::OK, c->result); | 1426 EXPECT_EQ(net::OK, c->result); |
1427 } | 1427 } |
1428 | 1428 |
1429 context_list[0]->result = context_list[0]->trans->Start( | 1429 context_list[0]->result = context_list[0]->trans->Start( |
1430 &request0, context_list[0]->callback.callback(), net::BoundNetLog()); | 1430 &request0, context_list[0]->callback.callback(), net::BoundNetLog()); |
1431 context_list[1]->result = context_list[1]->trans->Start( | 1431 context_list[1]->result = context_list[1]->trans->Start( |
1432 &request1, context_list[1]->callback.callback(), net::BoundNetLog()); | 1432 &request1, context_list[1]->callback.callback(), net::BoundNetLog()); |
1433 context_list[2]->result = context_list[2]->trans->Start( | 1433 context_list[2]->result = context_list[2]->trans->Start( |
1434 &request2, context_list[2]->callback.callback(), net::BoundNetLog()); | 1434 &request2, context_list[2]->callback.callback(), net::BoundNetLog()); |
1435 | 1435 |
(...skipping 25 matching lines...) Expand all Loading... | |
1461 } | 1461 } |
1462 | 1462 |
1463 // Tests that we can delete the cache while creating the backend. | 1463 // Tests that we can delete the cache while creating the backend. |
1464 TEST(HttpCache, DeleteCacheWaitingForBackend) { | 1464 TEST(HttpCache, DeleteCacheWaitingForBackend) { |
1465 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); | 1465 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); |
1466 scoped_ptr<MockHttpCache> cache(new MockHttpCache(factory)); | 1466 scoped_ptr<MockHttpCache> cache(new MockHttpCache(factory)); |
1467 | 1467 |
1468 MockHttpRequest request(kSimpleGET_Transaction); | 1468 MockHttpRequest request(kSimpleGET_Transaction); |
1469 | 1469 |
1470 scoped_ptr<Context> c(new Context()); | 1470 scoped_ptr<Context> c(new Context()); |
1471 c->result = cache->http_cache()->CreateTransaction(&c->trans); | 1471 c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
1472 EXPECT_EQ(net::OK, c->result); | 1472 EXPECT_EQ(net::OK, c->result); |
1473 | 1473 |
1474 c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 1474 c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
1475 | 1475 |
1476 // Just to make sure that everything is still pending. | 1476 // Just to make sure that everything is still pending. |
1477 MessageLoop::current()->RunAllPending(); | 1477 MessageLoop::current()->RunAllPending(); |
1478 | 1478 |
1479 // The request should be creating the disk cache. | 1479 // The request should be creating the disk cache. |
1480 EXPECT_FALSE(c->callback.have_result()); | 1480 EXPECT_FALSE(c->callback.have_result()); |
1481 | 1481 |
(...skipping 17 matching lines...) Expand all Loading... | |
1499 | 1499 |
1500 DeleteCacheCompletionCallback cb(cache); | 1500 DeleteCacheCompletionCallback cb(cache); |
1501 disk_cache::Backend* backend; | 1501 disk_cache::Backend* backend; |
1502 int rv = cache->http_cache()->GetBackend(&backend, cb.callback()); | 1502 int rv = cache->http_cache()->GetBackend(&backend, cb.callback()); |
1503 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 1503 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
1504 | 1504 |
1505 // Now let's queue a regular transaction | 1505 // Now let's queue a regular transaction |
1506 MockHttpRequest request(kSimpleGET_Transaction); | 1506 MockHttpRequest request(kSimpleGET_Transaction); |
1507 | 1507 |
1508 scoped_ptr<Context> c(new Context()); | 1508 scoped_ptr<Context> c(new Context()); |
1509 c->result = cache->http_cache()->CreateTransaction(&c->trans); | 1509 c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
1510 EXPECT_EQ(net::OK, c->result); | 1510 EXPECT_EQ(net::OK, c->result); |
1511 | 1511 |
1512 c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 1512 c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
1513 | 1513 |
1514 // And another direct backend request. | 1514 // And another direct backend request. |
1515 net::TestCompletionCallback cb2; | 1515 net::TestCompletionCallback cb2; |
1516 rv = cache->http_cache()->GetBackend(&backend, cb2.callback()); | 1516 rv = cache->http_cache()->GetBackend(&backend, cb2.callback()); |
1517 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 1517 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
1518 | 1518 |
1519 // Just to make sure that everything is still pending. | 1519 // Just to make sure that everything is still pending. |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2185 TEST(HttpCache, SimplePOST_LoadOnlyFromCache_Miss) { | 2185 TEST(HttpCache, SimplePOST_LoadOnlyFromCache_Miss) { |
2186 MockHttpCache cache; | 2186 MockHttpCache cache; |
2187 | 2187 |
2188 MockTransaction transaction(kSimplePOST_Transaction); | 2188 MockTransaction transaction(kSimplePOST_Transaction); |
2189 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; | 2189 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
2190 | 2190 |
2191 MockHttpRequest request(transaction); | 2191 MockHttpRequest request(transaction); |
2192 net::TestCompletionCallback callback; | 2192 net::TestCompletionCallback callback; |
2193 | 2193 |
2194 scoped_ptr<net::HttpTransaction> trans; | 2194 scoped_ptr<net::HttpTransaction> trans; |
2195 int rv = cache.http_cache()->CreateTransaction(&trans); | 2195 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
2196 EXPECT_EQ(net::OK, rv); | 2196 EXPECT_EQ(net::OK, rv); |
2197 ASSERT_TRUE(trans.get()); | 2197 ASSERT_TRUE(trans.get()); |
2198 | 2198 |
2199 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 2199 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
2200 ASSERT_EQ(net::ERR_CACHE_MISS, callback.GetResult(rv)); | 2200 ASSERT_EQ(net::ERR_CACHE_MISS, callback.GetResult(rv)); |
2201 | 2201 |
2202 trans.reset(); | 2202 trans.reset(); |
2203 | 2203 |
2204 EXPECT_EQ(0, cache.network_layer()->transaction_count()); | 2204 EXPECT_EQ(0, cache.network_layer()->transaction_count()); |
2205 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 2205 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3246 } | 3246 } |
3247 | 3247 |
3248 // Tests that we don't delete a sparse entry when we cancel a request. | 3248 // Tests that we don't delete a sparse entry when we cancel a request. |
3249 TEST(HttpCache, RangeGET_Cancel) { | 3249 TEST(HttpCache, RangeGET_Cancel) { |
3250 MockHttpCache cache; | 3250 MockHttpCache cache; |
3251 AddMockTransaction(&kRangeGET_TransactionOK); | 3251 AddMockTransaction(&kRangeGET_TransactionOK); |
3252 | 3252 |
3253 MockHttpRequest request(kRangeGET_TransactionOK); | 3253 MockHttpRequest request(kRangeGET_TransactionOK); |
3254 | 3254 |
3255 Context* c = new Context(); | 3255 Context* c = new Context(); |
3256 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3256 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3257 EXPECT_EQ(net::OK, rv); | 3257 EXPECT_EQ(net::OK, rv); |
3258 | 3258 |
3259 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3259 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3260 if (rv == net::ERR_IO_PENDING) | 3260 if (rv == net::ERR_IO_PENDING) |
3261 rv = c->callback.WaitForResult(); | 3261 rv = c->callback.WaitForResult(); |
3262 | 3262 |
3263 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3263 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
3264 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3264 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3265 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3265 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3266 | 3266 |
(...skipping 18 matching lines...) Expand all Loading... | |
3285 // cancelling the previous one. | 3285 // cancelling the previous one. |
3286 TEST(HttpCache, RangeGET_Cancel2) { | 3286 TEST(HttpCache, RangeGET_Cancel2) { |
3287 MockHttpCache cache; | 3287 MockHttpCache cache; |
3288 AddMockTransaction(&kRangeGET_TransactionOK); | 3288 AddMockTransaction(&kRangeGET_TransactionOK); |
3289 | 3289 |
3290 RunTransactionTest(cache.http_cache(), kRangeGET_TransactionOK); | 3290 RunTransactionTest(cache.http_cache(), kRangeGET_TransactionOK); |
3291 MockHttpRequest request(kRangeGET_TransactionOK); | 3291 MockHttpRequest request(kRangeGET_TransactionOK); |
3292 request.load_flags |= net::LOAD_VALIDATE_CACHE; | 3292 request.load_flags |= net::LOAD_VALIDATE_CACHE; |
3293 | 3293 |
3294 Context* c = new Context(); | 3294 Context* c = new Context(); |
3295 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3295 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3296 EXPECT_EQ(net::OK, rv); | 3296 EXPECT_EQ(net::OK, rv); |
3297 | 3297 |
3298 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3298 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3299 if (rv == net::ERR_IO_PENDING) | 3299 if (rv == net::ERR_IO_PENDING) |
3300 rv = c->callback.WaitForResult(); | 3300 rv = c->callback.WaitForResult(); |
3301 | 3301 |
3302 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3302 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
3303 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3303 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
3304 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3304 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3305 | 3305 |
(...skipping 24 matching lines...) Expand all Loading... | |
3330 // a row, making sure that the second is waiting for the entry to be ready. | 3330 // a row, making sure that the second is waiting for the entry to be ready. |
3331 TEST(HttpCache, RangeGET_Cancel3) { | 3331 TEST(HttpCache, RangeGET_Cancel3) { |
3332 MockHttpCache cache; | 3332 MockHttpCache cache; |
3333 AddMockTransaction(&kRangeGET_TransactionOK); | 3333 AddMockTransaction(&kRangeGET_TransactionOK); |
3334 | 3334 |
3335 RunTransactionTest(cache.http_cache(), kRangeGET_TransactionOK); | 3335 RunTransactionTest(cache.http_cache(), kRangeGET_TransactionOK); |
3336 MockHttpRequest request(kRangeGET_TransactionOK); | 3336 MockHttpRequest request(kRangeGET_TransactionOK); |
3337 request.load_flags |= net::LOAD_VALIDATE_CACHE; | 3337 request.load_flags |= net::LOAD_VALIDATE_CACHE; |
3338 | 3338 |
3339 Context* c = new Context(); | 3339 Context* c = new Context(); |
3340 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3340 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3341 EXPECT_EQ(net::OK, rv); | 3341 EXPECT_EQ(net::OK, rv); |
3342 | 3342 |
3343 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3343 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3344 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 3344 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
3345 rv = c->callback.WaitForResult(); | 3345 rv = c->callback.WaitForResult(); |
3346 | 3346 |
3347 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3347 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
3348 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 3348 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
3349 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3349 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3350 | 3350 |
3351 // Make sure that we revalidate the entry and read from the cache (a single | 3351 // Make sure that we revalidate the entry and read from the cache (a single |
3352 // read will return while waiting for the network). | 3352 // read will return while waiting for the network). |
3353 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(5)); | 3353 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(5)); |
3354 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); | 3354 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); |
3355 EXPECT_EQ(5, c->callback.GetResult(rv)); | 3355 EXPECT_EQ(5, c->callback.GetResult(rv)); |
3356 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); | 3356 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); |
3357 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 3357 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
3358 | 3358 |
3359 // Destroy the transaction before completing the read. | 3359 // Destroy the transaction before completing the read. |
3360 delete c; | 3360 delete c; |
3361 | 3361 |
3362 // We have the read and the delete (OnProcessPendingQueue) waiting on the | 3362 // We have the read and the delete (OnProcessPendingQueue) waiting on the |
3363 // message loop. This means that a new transaction will just reuse the same | 3363 // message loop. This means that a new transaction will just reuse the same |
3364 // active entry (no open or create). | 3364 // active entry (no open or create). |
3365 | 3365 |
3366 c = new Context(); | 3366 c = new Context(); |
3367 rv = cache.http_cache()->CreateTransaction(&c->trans); | 3367 rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3368 EXPECT_EQ(net::OK, rv); | 3368 EXPECT_EQ(net::OK, rv); |
3369 | 3369 |
3370 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3370 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3371 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 3371 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
3372 | 3372 |
3373 MockDiskEntry::IgnoreCallbacks(true); | 3373 MockDiskEntry::IgnoreCallbacks(true); |
3374 MessageLoop::current()->RunAllPending(); | 3374 MessageLoop::current()->RunAllPending(); |
3375 MockDiskEntry::IgnoreCallbacks(false); | 3375 MockDiskEntry::IgnoreCallbacks(false); |
3376 | 3376 |
3377 // The new transaction is waiting for the query range callback. | 3377 // The new transaction is waiting for the query range callback. |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3638 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3638 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3639 | 3639 |
3640 // Force this transaction to read from the cache. | 3640 // Force this transaction to read from the cache. |
3641 MockTransaction transaction(kRangeGET_TransactionOK); | 3641 MockTransaction transaction(kRangeGET_TransactionOK); |
3642 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; | 3642 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
3643 | 3643 |
3644 MockHttpRequest request(transaction); | 3644 MockHttpRequest request(transaction); |
3645 net::TestCompletionCallback callback; | 3645 net::TestCompletionCallback callback; |
3646 | 3646 |
3647 scoped_ptr<net::HttpTransaction> trans; | 3647 scoped_ptr<net::HttpTransaction> trans; |
3648 int rv = cache.http_cache()->CreateTransaction(&trans); | 3648 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
3649 EXPECT_EQ(net::OK, rv); | 3649 EXPECT_EQ(net::OK, rv); |
3650 ASSERT_TRUE(trans.get()); | 3650 ASSERT_TRUE(trans.get()); |
3651 | 3651 |
3652 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 3652 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
3653 if (rv == net::ERR_IO_PENDING) | 3653 if (rv == net::ERR_IO_PENDING) |
3654 rv = callback.WaitForResult(); | 3654 rv = callback.WaitForResult(); |
3655 ASSERT_EQ(net::ERR_CACHE_MISS, rv); | 3655 ASSERT_EQ(net::ERR_CACHE_MISS, rv); |
3656 | 3656 |
3657 trans.reset(); | 3657 trans.reset(); |
3658 | 3658 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3716 } | 3716 } |
3717 | 3717 |
3718 // Tests that we delete an entry when the request is cancelled before starting | 3718 // Tests that we delete an entry when the request is cancelled before starting |
3719 // to read from the network. | 3719 // to read from the network. |
3720 TEST(HttpCache, DoomOnDestruction) { | 3720 TEST(HttpCache, DoomOnDestruction) { |
3721 MockHttpCache cache; | 3721 MockHttpCache cache; |
3722 | 3722 |
3723 MockHttpRequest request(kSimpleGET_Transaction); | 3723 MockHttpRequest request(kSimpleGET_Transaction); |
3724 | 3724 |
3725 Context* c = new Context(); | 3725 Context* c = new Context(); |
3726 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3726 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3727 EXPECT_EQ(net::OK, rv); | 3727 EXPECT_EQ(net::OK, rv); |
3728 | 3728 |
3729 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3729 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3730 if (rv == net::ERR_IO_PENDING) | 3730 if (rv == net::ERR_IO_PENDING) |
3731 c->result = c->callback.WaitForResult(); | 3731 c->result = c->callback.WaitForResult(); |
3732 | 3732 |
3733 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3733 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
3734 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3734 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3735 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3735 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3736 | 3736 |
3737 // Destroy the transaction. We only have the headers so we should delete this | 3737 // Destroy the transaction. We only have the headers so we should delete this |
3738 // entry. | 3738 // entry. |
3739 delete c; | 3739 delete c; |
3740 | 3740 |
3741 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); | 3741 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); |
3742 | 3742 |
3743 EXPECT_EQ(2, cache.network_layer()->transaction_count()); | 3743 EXPECT_EQ(2, cache.network_layer()->transaction_count()); |
3744 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3744 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3745 EXPECT_EQ(2, cache.disk_cache()->create_count()); | 3745 EXPECT_EQ(2, cache.disk_cache()->create_count()); |
3746 } | 3746 } |
3747 | 3747 |
3748 // Tests that we delete an entry when the request is cancelled if the response | 3748 // Tests that we delete an entry when the request is cancelled if the response |
3749 // does not have content-length and strong validators. | 3749 // does not have content-length and strong validators. |
3750 TEST(HttpCache, DoomOnDestruction2) { | 3750 TEST(HttpCache, DoomOnDestruction2) { |
3751 MockHttpCache cache; | 3751 MockHttpCache cache; |
3752 | 3752 |
3753 MockHttpRequest request(kSimpleGET_Transaction); | 3753 MockHttpRequest request(kSimpleGET_Transaction); |
3754 | 3754 |
3755 Context* c = new Context(); | 3755 Context* c = new Context(); |
3756 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3756 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3757 EXPECT_EQ(net::OK, rv); | 3757 EXPECT_EQ(net::OK, rv); |
3758 | 3758 |
3759 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3759 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3760 if (rv == net::ERR_IO_PENDING) | 3760 if (rv == net::ERR_IO_PENDING) |
3761 rv = c->callback.WaitForResult(); | 3761 rv = c->callback.WaitForResult(); |
3762 | 3762 |
3763 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3763 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
3764 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3764 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3765 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3765 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3766 | 3766 |
(...skipping 22 matching lines...) Expand all Loading... | |
3789 MockTransaction transaction(kSimpleGET_Transaction); | 3789 MockTransaction transaction(kSimpleGET_Transaction); |
3790 transaction.response_headers = | 3790 transaction.response_headers = |
3791 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" | 3791 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" |
3792 "Content-Length: 22\n" | 3792 "Content-Length: 22\n" |
3793 "Accept-Ranges: none\n" | 3793 "Accept-Ranges: none\n" |
3794 "Etag: foopy\n"; | 3794 "Etag: foopy\n"; |
3795 AddMockTransaction(&transaction); | 3795 AddMockTransaction(&transaction); |
3796 MockHttpRequest request(transaction); | 3796 MockHttpRequest request(transaction); |
3797 | 3797 |
3798 Context* c = new Context(); | 3798 Context* c = new Context(); |
3799 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3799 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3800 EXPECT_EQ(net::OK, rv); | 3800 EXPECT_EQ(net::OK, rv); |
3801 | 3801 |
3802 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3802 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3803 if (rv == net::ERR_IO_PENDING) | 3803 if (rv == net::ERR_IO_PENDING) |
3804 rv = c->callback.WaitForResult(); | 3804 rv = c->callback.WaitForResult(); |
3805 | 3805 |
3806 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3806 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
3807 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3807 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3808 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3808 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3809 | 3809 |
(...skipping 22 matching lines...) Expand all Loading... | |
3832 | 3832 |
3833 MockTransaction transaction(kSimpleGET_Transaction); | 3833 MockTransaction transaction(kSimpleGET_Transaction); |
3834 transaction.response_headers = | 3834 transaction.response_headers = |
3835 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" | 3835 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" |
3836 "Content-Length: 22\n" | 3836 "Content-Length: 22\n" |
3837 "Etag: foopy\n"; | 3837 "Etag: foopy\n"; |
3838 AddMockTransaction(&transaction); | 3838 AddMockTransaction(&transaction); |
3839 MockHttpRequest request(transaction); | 3839 MockHttpRequest request(transaction); |
3840 | 3840 |
3841 scoped_ptr<Context> c(new Context()); | 3841 scoped_ptr<Context> c(new Context()); |
3842 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3842 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3843 EXPECT_EQ(net::OK, rv); | 3843 EXPECT_EQ(net::OK, rv); |
3844 | 3844 |
3845 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3845 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3846 if (rv == net::ERR_IO_PENDING) | 3846 if (rv == net::ERR_IO_PENDING) |
3847 rv = c->callback.WaitForResult(); | 3847 rv = c->callback.WaitForResult(); |
3848 | 3848 |
3849 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 3849 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
3850 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 3850 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
3851 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 3851 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
3852 | 3852 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3892 | 3892 |
3893 MockTransaction transaction(kSimpleGET_Transaction); | 3893 MockTransaction transaction(kSimpleGET_Transaction); |
3894 transaction.response_headers = | 3894 transaction.response_headers = |
3895 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" | 3895 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" |
3896 "Content-Length: 22\n" | 3896 "Content-Length: 22\n" |
3897 "Etag: foopy\n"; | 3897 "Etag: foopy\n"; |
3898 AddMockTransaction(&transaction); | 3898 AddMockTransaction(&transaction); |
3899 MockHttpRequest request(transaction); | 3899 MockHttpRequest request(transaction); |
3900 | 3900 |
3901 scoped_ptr<Context> c(new Context()); | 3901 scoped_ptr<Context> c(new Context()); |
3902 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 3902 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
3903 EXPECT_EQ(net::OK, rv); | 3903 EXPECT_EQ(net::OK, rv); |
3904 | 3904 |
3905 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 3905 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
3906 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); | 3906 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); |
3907 | 3907 |
3908 // Read everything. | 3908 // Read everything. |
3909 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(22)); | 3909 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(22)); |
3910 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); | 3910 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); |
3911 EXPECT_EQ(buf->size(), c->callback.GetResult(rv)); | 3911 EXPECT_EQ(buf->size(), c->callback.GetResult(rv)); |
3912 | 3912 |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4036 std::string response_headers(transaction.response_headers); | 4036 std::string response_headers(transaction.response_headers); |
4037 response_headers += ("Cache-Control: no-store\n"); | 4037 response_headers += ("Cache-Control: no-store\n"); |
4038 transaction.response_headers = response_headers.c_str(); | 4038 transaction.response_headers = response_headers.c_str(); |
4039 transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 " | 4039 transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 " |
4040 "rg: 50-59 rg: 60-69 rg: 70-79 "; | 4040 "rg: 50-59 rg: 60-69 rg: 70-79 "; |
4041 AddMockTransaction(&transaction); | 4041 AddMockTransaction(&transaction); |
4042 | 4042 |
4043 MockHttpRequest request(transaction); | 4043 MockHttpRequest request(transaction); |
4044 Context* c = new Context(); | 4044 Context* c = new Context(); |
4045 | 4045 |
4046 int rv = cache.http_cache()->CreateTransaction(&c->trans); | 4046 int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
4047 EXPECT_EQ(net::OK, rv); | 4047 EXPECT_EQ(net::OK, rv); |
4048 | 4048 |
4049 // Queue another request to this transaction. We have to start this request | 4049 // Queue another request to this transaction. We have to start this request |
4050 // before the first one gets the response from the server and dooms the entry, | 4050 // before the first one gets the response from the server and dooms the entry, |
4051 // otherwise it will just create a new entry without being queued to the first | 4051 // otherwise it will just create a new entry without being queued to the first |
4052 // request. | 4052 // request. |
4053 Context* pending = new Context(); | 4053 Context* pending = new Context(); |
4054 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&pending->trans)); | 4054 EXPECT_EQ(net::OK, |
4055 cache.http_cache()->CreateTransaction(&pending->trans, NULL)); | |
4055 | 4056 |
4056 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); | 4057 rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
4057 EXPECT_EQ(net::ERR_IO_PENDING, | 4058 EXPECT_EQ(net::ERR_IO_PENDING, |
4058 pending->trans->Start(&request, pending->callback.callback(), | 4059 pending->trans->Start(&request, pending->callback.callback(), |
4059 net::BoundNetLog())); | 4060 net::BoundNetLog())); |
4060 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); | 4061 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); |
4061 | 4062 |
4062 // Make sure that the entry has some data stored. | 4063 // Make sure that the entry has some data stored. |
4063 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(5)); | 4064 scoped_refptr<net::IOBufferWithSize> buf(new net::IOBufferWithSize(5)); |
4064 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); | 4065 rv = c->trans->Read(buf, buf->size(), c->callback.callback()); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4128 CreateTruncatedEntry(raw_headers, &cache); | 4129 CreateTruncatedEntry(raw_headers, &cache); |
4129 | 4130 |
4130 // Now make a regular request. | 4131 // Now make a regular request. |
4131 std::string headers; | 4132 std::string headers; |
4132 MockTransaction transaction(kRangeGET_TransactionOK); | 4133 MockTransaction transaction(kRangeGET_TransactionOK); |
4133 transaction.request_headers = EXTRA_HEADER; | 4134 transaction.request_headers = EXTRA_HEADER; |
4134 transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 " | 4135 transaction.data = "rg: 00-09 rg: 10-19 rg: 20-29 rg: 30-39 rg: 40-49 " |
4135 "rg: 50-59 rg: 60-69 rg: 70-79 "; | 4136 "rg: 50-59 rg: 60-69 rg: 70-79 "; |
4136 | 4137 |
4137 scoped_ptr<Context> c(new Context); | 4138 scoped_ptr<Context> c(new Context); |
4138 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans)); | 4139 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL)); |
4139 | 4140 |
4140 MockHttpRequest request(transaction); | 4141 MockHttpRequest request(transaction); |
4141 int rv = c->trans->Start( | 4142 int rv = c->trans->Start( |
4142 &request, c->callback.callback(), net::BoundNetLog()); | 4143 &request, c->callback.callback(), net::BoundNetLog()); |
4143 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); | 4144 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); |
4144 | 4145 |
4145 // We should have checked with the server before finishing Start(). | 4146 // We should have checked with the server before finishing Start(). |
4146 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 4147 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
4147 EXPECT_EQ(1, cache.disk_cache()->open_count()); | 4148 EXPECT_EQ(1, cache.disk_cache()->open_count()); |
4148 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 4149 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4200 "Accept-Ranges: bytes\n" | 4201 "Accept-Ranges: bytes\n" |
4201 "Content-Length: 80\n"); | 4202 "Content-Length: 80\n"); |
4202 CreateTruncatedEntry(raw_headers, &cache); | 4203 CreateTruncatedEntry(raw_headers, &cache); |
4203 | 4204 |
4204 // Now make a regular request. | 4205 // Now make a regular request. |
4205 MockTransaction transaction(kRangeGET_TransactionOK); | 4206 MockTransaction transaction(kRangeGET_TransactionOK); |
4206 transaction.request_headers = EXTRA_HEADER; | 4207 transaction.request_headers = EXTRA_HEADER; |
4207 | 4208 |
4208 MockHttpRequest request(transaction); | 4209 MockHttpRequest request(transaction); |
4209 Context* c = new Context(); | 4210 Context* c = new Context(); |
4210 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans)); | 4211 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL)); |
4211 | 4212 |
4212 int rv = c->trans->Start( | 4213 int rv = c->trans->Start( |
4213 &request, c->callback.callback(), net::BoundNetLog()); | 4214 &request, c->callback.callback(), net::BoundNetLog()); |
4214 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); | 4215 EXPECT_EQ(net::OK, c->callback.GetResult(rv)); |
4215 | 4216 |
4216 // Read 20 bytes from the cache, and 10 from the net. | 4217 // Read 20 bytes from the cache, and 10 from the net. |
4217 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(100)); | 4218 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(100)); |
4218 rv = c->trans->Read(buf, 20, c->callback.callback()); | 4219 rv = c->trans->Read(buf, 20, c->callback.callback()); |
4219 EXPECT_EQ(20, c->callback.GetResult(rv)); | 4220 EXPECT_EQ(20, c->callback.GetResult(rv)); |
4220 rv = c->trans->Read(buf, 10, c->callback.callback()); | 4221 rv = c->trans->Read(buf, 10, c->callback.callback()); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4328 ScopedMockTransaction kTestTransaction(kSimpleGET_Transaction); | 4329 ScopedMockTransaction kTestTransaction(kSimpleGET_Transaction); |
4329 kTestTransaction.status = "HTTP/1.1 301 Moved Permanently"; | 4330 kTestTransaction.status = "HTTP/1.1 301 Moved Permanently"; |
4330 kTestTransaction.response_headers = "Location: http://www.bar.com/\n"; | 4331 kTestTransaction.response_headers = "Location: http://www.bar.com/\n"; |
4331 | 4332 |
4332 MockHttpRequest request(kTestTransaction); | 4333 MockHttpRequest request(kTestTransaction); |
4333 net::TestCompletionCallback callback; | 4334 net::TestCompletionCallback callback; |
4334 | 4335 |
4335 // write to the cache | 4336 // write to the cache |
4336 { | 4337 { |
4337 scoped_ptr<net::HttpTransaction> trans; | 4338 scoped_ptr<net::HttpTransaction> trans; |
4338 int rv = cache.http_cache()->CreateTransaction(&trans); | 4339 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4339 EXPECT_EQ(net::OK, rv); | 4340 EXPECT_EQ(net::OK, rv); |
4340 ASSERT_TRUE(trans.get()); | 4341 ASSERT_TRUE(trans.get()); |
4341 | 4342 |
4342 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4343 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4343 if (rv == net::ERR_IO_PENDING) | 4344 if (rv == net::ERR_IO_PENDING) |
4344 rv = callback.WaitForResult(); | 4345 rv = callback.WaitForResult(); |
4345 ASSERT_EQ(net::OK, rv); | 4346 ASSERT_EQ(net::OK, rv); |
4346 | 4347 |
4347 const net::HttpResponseInfo* info = trans->GetResponseInfo(); | 4348 const net::HttpResponseInfo* info = trans->GetResponseInfo(); |
4348 ASSERT_TRUE(info); | 4349 ASSERT_TRUE(info); |
4349 | 4350 |
4350 EXPECT_EQ(info->headers->response_code(), 301); | 4351 EXPECT_EQ(info->headers->response_code(), 301); |
4351 | 4352 |
4352 std::string location; | 4353 std::string location; |
4353 info->headers->EnumerateHeader(NULL, "Location", &location); | 4354 info->headers->EnumerateHeader(NULL, "Location", &location); |
4354 EXPECT_EQ(location, "http://www.bar.com/"); | 4355 EXPECT_EQ(location, "http://www.bar.com/"); |
4355 | 4356 |
4356 // Destroy transaction when going out of scope. We have not actually | 4357 // Destroy transaction when going out of scope. We have not actually |
4357 // read the response body -- want to test that it is still getting cached. | 4358 // read the response body -- want to test that it is still getting cached. |
4358 } | 4359 } |
4359 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 4360 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
4360 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 4361 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
4361 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 4362 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
4362 | 4363 |
4363 // read from the cache | 4364 // read from the cache |
4364 { | 4365 { |
4365 scoped_ptr<net::HttpTransaction> trans; | 4366 scoped_ptr<net::HttpTransaction> trans; |
4366 int rv = cache.http_cache()->CreateTransaction(&trans); | 4367 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4367 EXPECT_EQ(net::OK, rv); | 4368 EXPECT_EQ(net::OK, rv); |
4368 ASSERT_TRUE(trans.get()); | 4369 ASSERT_TRUE(trans.get()); |
4369 | 4370 |
4370 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4371 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4371 if (rv == net::ERR_IO_PENDING) | 4372 if (rv == net::ERR_IO_PENDING) |
4372 rv = callback.WaitForResult(); | 4373 rv = callback.WaitForResult(); |
4373 ASSERT_EQ(net::OK, rv); | 4374 ASSERT_EQ(net::OK, rv); |
4374 | 4375 |
4375 const net::HttpResponseInfo* info = trans->GetResponseInfo(); | 4376 const net::HttpResponseInfo* info = trans->GetResponseInfo(); |
4376 ASSERT_TRUE(info); | 4377 ASSERT_TRUE(info); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4481 // write to the cache | 4482 // write to the cache |
4482 RunTransactionTest(cache.http_cache(), transaction); | 4483 RunTransactionTest(cache.http_cache(), transaction); |
4483 | 4484 |
4484 // Test that it was not cached. | 4485 // Test that it was not cached. |
4485 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; | 4486 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
4486 | 4487 |
4487 MockHttpRequest request(transaction); | 4488 MockHttpRequest request(transaction); |
4488 net::TestCompletionCallback callback; | 4489 net::TestCompletionCallback callback; |
4489 | 4490 |
4490 scoped_ptr<net::HttpTransaction> trans; | 4491 scoped_ptr<net::HttpTransaction> trans; |
4491 int rv = cache.http_cache()->CreateTransaction(&trans); | 4492 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4492 EXPECT_EQ(net::OK, rv); | 4493 EXPECT_EQ(net::OK, rv); |
4493 ASSERT_TRUE(trans.get()); | 4494 ASSERT_TRUE(trans.get()); |
4494 | 4495 |
4495 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4496 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4496 if (rv == net::ERR_IO_PENDING) | 4497 if (rv == net::ERR_IO_PENDING) |
4497 rv = callback.WaitForResult(); | 4498 rv = callback.WaitForResult(); |
4498 ASSERT_EQ(net::ERR_CACHE_MISS, rv); | 4499 ASSERT_EQ(net::ERR_CACHE_MISS, rv); |
4499 } | 4500 } |
4500 | 4501 |
4501 // Ensure that we don't crash by if left-behind transactions. | 4502 // Ensure that we don't crash by if left-behind transactions. |
4502 TEST(HttpCache, OutlivedTransactions) { | 4503 TEST(HttpCache, OutlivedTransactions) { |
4503 MockHttpCache* cache = new MockHttpCache; | 4504 MockHttpCache* cache = new MockHttpCache; |
4504 | 4505 |
4505 scoped_ptr<net::HttpTransaction> trans; | 4506 scoped_ptr<net::HttpTransaction> trans; |
4506 int rv = cache->http_cache()->CreateTransaction(&trans); | 4507 int rv = cache->http_cache()->CreateTransaction(&trans, NULL); |
4507 EXPECT_EQ(net::OK, rv); | 4508 EXPECT_EQ(net::OK, rv); |
4508 | 4509 |
4509 delete cache; | 4510 delete cache; |
4510 trans.reset(); | 4511 trans.reset(); |
4511 } | 4512 } |
4512 | 4513 |
4513 // Test that the disabled mode works. | 4514 // Test that the disabled mode works. |
4514 TEST(HttpCache, CacheDisabledMode) { | 4515 TEST(HttpCache, CacheDisabledMode) { |
4515 MockHttpCache cache; | 4516 MockHttpCache cache; |
4516 | 4517 |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4734 } | 4735 } |
4735 | 4736 |
4736 // Tests that we don't mark entries as truncated when a filter detects the end | 4737 // Tests that we don't mark entries as truncated when a filter detects the end |
4737 // of the stream. | 4738 // of the stream. |
4738 TEST(HttpCache, FilterCompletion) { | 4739 TEST(HttpCache, FilterCompletion) { |
4739 MockHttpCache cache; | 4740 MockHttpCache cache; |
4740 net::TestCompletionCallback callback; | 4741 net::TestCompletionCallback callback; |
4741 | 4742 |
4742 { | 4743 { |
4743 scoped_ptr<net::HttpTransaction> trans; | 4744 scoped_ptr<net::HttpTransaction> trans; |
4744 int rv = cache.http_cache()->CreateTransaction(&trans); | 4745 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4745 EXPECT_EQ(net::OK, rv); | 4746 EXPECT_EQ(net::OK, rv); |
4746 | 4747 |
4747 MockHttpRequest request(kSimpleGET_Transaction); | 4748 MockHttpRequest request(kSimpleGET_Transaction); |
4748 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4749 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4749 EXPECT_EQ(net::OK, callback.GetResult(rv)); | 4750 EXPECT_EQ(net::OK, callback.GetResult(rv)); |
4750 | 4751 |
4751 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); | 4752 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); |
4752 rv = trans->Read(buf, 256, callback.callback()); | 4753 rv = trans->Read(buf, 256, callback.callback()); |
4753 EXPECT_GT(callback.GetResult(rv), 0); | 4754 EXPECT_GT(callback.GetResult(rv), 0); |
4754 | 4755 |
(...skipping 13 matching lines...) Expand all Loading... | |
4768 } | 4769 } |
4769 | 4770 |
4770 // Tests that we stop cachining when told. | 4771 // Tests that we stop cachining when told. |
4771 TEST(HttpCache, StopCachingDeletesEntry) { | 4772 TEST(HttpCache, StopCachingDeletesEntry) { |
4772 MockHttpCache cache; | 4773 MockHttpCache cache; |
4773 net::TestCompletionCallback callback; | 4774 net::TestCompletionCallback callback; |
4774 MockHttpRequest request(kSimpleGET_Transaction); | 4775 MockHttpRequest request(kSimpleGET_Transaction); |
4775 | 4776 |
4776 { | 4777 { |
4777 scoped_ptr<net::HttpTransaction> trans; | 4778 scoped_ptr<net::HttpTransaction> trans; |
4778 int rv = cache.http_cache()->CreateTransaction(&trans); | 4779 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4779 EXPECT_EQ(net::OK, rv); | 4780 EXPECT_EQ(net::OK, rv); |
4780 | 4781 |
4781 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4782 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4782 EXPECT_EQ(net::OK, callback.GetResult(rv)); | 4783 EXPECT_EQ(net::OK, callback.GetResult(rv)); |
4783 | 4784 |
4784 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); | 4785 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); |
4785 rv = trans->Read(buf, 10, callback.callback()); | 4786 rv = trans->Read(buf, 10, callback.callback()); |
4786 EXPECT_EQ(callback.GetResult(rv), 10); | 4787 EXPECT_EQ(callback.GetResult(rv), 10); |
4787 | 4788 |
4788 trans->StopCaching(); | 4789 trans->StopCaching(); |
(...skipping 17 matching lines...) Expand all Loading... | |
4806 } | 4807 } |
4807 | 4808 |
4808 // Tests that when we are told to stop caching we don't throw away valid data. | 4809 // Tests that when we are told to stop caching we don't throw away valid data. |
4809 TEST(HttpCache, StopCachingSavesEntry) { | 4810 TEST(HttpCache, StopCachingSavesEntry) { |
4810 MockHttpCache cache; | 4811 MockHttpCache cache; |
4811 net::TestCompletionCallback callback; | 4812 net::TestCompletionCallback callback; |
4812 MockHttpRequest request(kSimpleGET_Transaction); | 4813 MockHttpRequest request(kSimpleGET_Transaction); |
4813 | 4814 |
4814 { | 4815 { |
4815 scoped_ptr<net::HttpTransaction> trans; | 4816 scoped_ptr<net::HttpTransaction> trans; |
4816 int rv = cache.http_cache()->CreateTransaction(&trans); | 4817 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4817 EXPECT_EQ(net::OK, rv); | 4818 EXPECT_EQ(net::OK, rv); |
4818 | 4819 |
4819 // Force a response that can be resumed. | 4820 // Force a response that can be resumed. |
4820 MockTransaction mock_transaction(kSimpleGET_Transaction); | 4821 MockTransaction mock_transaction(kSimpleGET_Transaction); |
4821 AddMockTransaction(&mock_transaction); | 4822 AddMockTransaction(&mock_transaction); |
4822 mock_transaction.response_headers = "Cache-Control: max-age=10000\n" | 4823 mock_transaction.response_headers = "Cache-Control: max-age=10000\n" |
4823 "Content-Length: 42\n" | 4824 "Content-Length: 42\n" |
4824 "Etag: foo\n"; | 4825 "Etag: foo\n"; |
4825 | 4826 |
4826 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4827 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4863 std::string raw_headers("HTTP/1.1 200 OK\n" | 4864 std::string raw_headers("HTTP/1.1 200 OK\n" |
4864 "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" | 4865 "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" |
4865 "ETag: \"foo\"\n" | 4866 "ETag: \"foo\"\n" |
4866 "Accept-Ranges: bytes\n" | 4867 "Accept-Ranges: bytes\n" |
4867 "Content-Length: 80\n"); | 4868 "Content-Length: 80\n"); |
4868 CreateTruncatedEntry(raw_headers, &cache); | 4869 CreateTruncatedEntry(raw_headers, &cache); |
4869 | 4870 |
4870 { | 4871 { |
4871 // Now make a regular request. | 4872 // Now make a regular request. |
4872 scoped_ptr<net::HttpTransaction> trans; | 4873 scoped_ptr<net::HttpTransaction> trans; |
4873 int rv = cache.http_cache()->CreateTransaction(&trans); | 4874 int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
4874 EXPECT_EQ(net::OK, rv); | 4875 EXPECT_EQ(net::OK, rv); |
4875 | 4876 |
4876 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); | 4877 rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
4877 EXPECT_EQ(net::OK, callback.GetResult(rv)); | 4878 EXPECT_EQ(net::OK, callback.GetResult(rv)); |
4878 | 4879 |
4879 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); | 4880 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); |
4880 rv = trans->Read(buf, 10, callback.callback()); | 4881 rv = trans->Read(buf, 10, callback.callback()); |
4881 EXPECT_EQ(callback.GetResult(rv), 10); | 4882 EXPECT_EQ(callback.GetResult(rv), 10); |
4882 | 4883 |
4883 // This is actually going to do nothing. | 4884 // This is actually going to do nothing. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4941 RemoveMockTransaction(&transaction); | 4942 RemoveMockTransaction(&transaction); |
4942 | 4943 |
4943 // Verify that the entry is marked as incomplete. | 4944 // Verify that the entry is marked as incomplete. |
4944 disk_cache::Entry* entry; | 4945 disk_cache::Entry* entry; |
4945 ASSERT_TRUE(cache.OpenBackendEntry(kSimpleGET_Transaction.url, &entry)); | 4946 ASSERT_TRUE(cache.OpenBackendEntry(kSimpleGET_Transaction.url, &entry)); |
4946 net::HttpResponseInfo response; | 4947 net::HttpResponseInfo response; |
4947 bool truncated = false; | 4948 bool truncated = false; |
4948 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated)); | 4949 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated)); |
4949 EXPECT_TRUE(truncated); | 4950 EXPECT_TRUE(truncated); |
4950 entry->Close(); | 4951 entry->Close(); |
4951 } | 4952 } |
rvargas (doing something else)
2012/07/23 22:22:36
We need a unit test for the delegate.
tburkard
2012/07/24 01:03:12
Since this is just instrumentation for testing, I
rvargas (doing something else)
2012/07/24 03:10:38
I have to disagree. This is a change in the interf
tburkard
2012/07/24 22:23:26
Done.
| |
OLD | NEW |