Chromium Code Reviews| Index: net/http/http_cache_unittest.cc |
| =================================================================== |
| --- net/http/http_cache_unittest.cc (revision 147972) |
| +++ net/http/http_cache_unittest.cc (working copy) |
| @@ -24,6 +24,7 @@ |
| #include "net/http/http_response_headers.h" |
| #include "net/http/http_response_info.h" |
| #include "net/http/http_transaction.h" |
| +#include "net/http/http_transaction_delegate.h" |
| #include "net/http/http_transaction_unittest.h" |
| #include "net/http/http_util.h" |
| #include "net/http/mock_http_cache.h" |
| @@ -59,6 +60,32 @@ |
| //----------------------------------------------------------------------------- |
| // helpers |
| +class TestHttpTransactionDelegate : public net::HttpTransactionDelegate { |
| + public: |
| + TestHttpTransactionDelegate(int num_actions_to_observe) |
| + : num_remaining_actions_to_observe_(num_actions_to_observe), |
| + action_in_progress_(false){ |
|
rvargas (doing something else)
2012/07/26 02:13:43
nit: missing space before {
tburkard
2012/07/26 02:50:54
Done.
|
| + } |
| + virtual ~TestHttpTransactionDelegate() { |
| + EXPECT_EQ(num_remaining_actions_to_observe_, 0); |
| + EXPECT_EQ(action_in_progress_, false); |
| + } |
| + virtual void OnCacheActionStart() { |
| + EXPECT_EQ(action_in_progress_, false); |
| + EXPECT_GT(num_remaining_actions_to_observe_, 0); |
| + num_remaining_actions_to_observe_--; |
| + action_in_progress_ = true; |
| + } |
| + virtual void OnCacheActionFinish() { |
| + EXPECT_EQ(action_in_progress_, true); |
| + action_in_progress_ = false; |
| + } |
| + |
| + private: |
| + int num_remaining_actions_to_observe_; |
| + bool action_in_progress_; |
| +}; |
| + |
| void ReadAndVerifyTransaction(net::HttpTransaction* trans, |
| const MockTransaction& trans_info) { |
| std::string content; |
| @@ -69,17 +96,25 @@ |
| EXPECT_EQ(expected, content); |
| } |
| -void RunTransactionTestWithRequestAndLog(net::HttpCache* cache, |
| - const MockTransaction& trans_info, |
| - const MockHttpRequest& request, |
| - net::HttpResponseInfo* response_info, |
| - const net::BoundNetLog& net_log) { |
| +static const int kNoDelegateTransactionCheck = -1; |
| + |
| +void RunTransactionTestWithRequestAndLogAndNumDelegateTransactions( |
|
rvargas (doing something else)
2012/07/26 02:13:43
nit: ...LogAndDelegate(
tburkard
2012/07/26 02:50:54
I'd rather keep it so to disambiguate "RequestLog"
rvargas (doing something else)
2012/07/26 18:47:33
I don't understand what you mean.
RunTransactionT
tburkard
2012/07/26 19:12:49
Done.
|
| + net::HttpCache* cache, |
| + const MockTransaction& trans_info, |
| + const MockHttpRequest& request, |
| + net::HttpResponseInfo* response_info, |
| + const net::BoundNetLog& net_log, |
| + int num_delegate_transactions) { |
|
rvargas (doing something else)
2012/07/26 02:13:43
num_actions ? if anything, they are not transactio
tburkard
2012/07/26 02:50:54
Done.
|
| net::TestCompletionCallback callback; |
| // write to the cache |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache->CreateTransaction(&trans); |
| + scoped_ptr<TestHttpTransactionDelegate> delegate; |
| + if (num_delegate_transactions != kNoDelegateTransactionCheck) { |
| + delegate.reset(new TestHttpTransactionDelegate(num_delegate_transactions)); |
| + } |
| + int rv = cache->CreateTransaction(&trans, delegate.get()); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -101,17 +136,28 @@ |
| const MockTransaction& trans_info, |
| const MockHttpRequest& request, |
| net::HttpResponseInfo* response_info) { |
| - RunTransactionTestWithRequestAndLog(cache, trans_info, request, |
| - response_info, net::BoundNetLog()); |
| + RunTransactionTestWithRequestAndLogAndNumDelegateTransactions( |
| + cache, trans_info, request, response_info, net::BoundNetLog(), |
| + kNoDelegateTransactionCheck); |
| } |
| void RunTransactionTestWithLog(net::HttpCache* cache, |
| const MockTransaction& trans_info, |
| const net::BoundNetLog& log) { |
| - RunTransactionTestWithRequestAndLog( |
| - cache, trans_info, MockHttpRequest(trans_info), NULL, log); |
| + RunTransactionTestWithRequestAndLogAndNumDelegateTransactions( |
| + cache, trans_info, MockHttpRequest(trans_info), NULL, log, |
| + kNoDelegateTransactionCheck); |
| } |
| +void RunTransactionTestWithNumDelegateTransactions( |
| + net::HttpCache* cache, |
| + const MockTransaction& trans_info, |
| + int num_delegate_transactions) { |
| + RunTransactionTestWithRequestAndLogAndNumDelegateTransactions( |
| + cache, trans_info, MockHttpRequest(trans_info), NULL, net::BoundNetLog(), |
| + num_delegate_transactions); |
| +} |
| + |
| void RunTransactionTest(net::HttpCache* cache, |
| const MockTransaction& trans_info) { |
| RunTransactionTestWithLog(cache, trans_info, net::BoundNetLog()); |
| @@ -396,7 +442,7 @@ |
| MockHttpCache cache; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| } |
| @@ -500,7 +546,7 @@ |
| MockHttpRequest request(kSimpleGET_Transaction); |
| scoped_ptr<Context> c(new Context()); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -545,7 +591,7 @@ |
| // Now fail to read from the cache. |
| scoped_ptr<Context> c(new Context()); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| MockHttpRequest request(kSimpleGET_Transaction); |
| @@ -645,7 +691,7 @@ |
| net::TestCompletionCallback callback; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -871,7 +917,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| EXPECT_EQ(net::LOAD_STATE_IDLE, c->trans->GetLoadState()); |
| @@ -939,7 +985,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| MockHttpRequest* this_request = &request; |
| @@ -1024,7 +1070,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| MockHttpRequest* this_request = &request; |
| @@ -1072,7 +1118,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1119,7 +1165,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1179,7 +1225,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1230,7 +1276,7 @@ |
| Context* c = new Context(); |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1260,7 +1306,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1302,7 +1348,7 @@ |
| net::TestCompletionCallback callback; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
| if (rv == net::ERR_IO_PENDING) |
| @@ -1337,7 +1383,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache->http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->result = c->trans->Start( |
| @@ -1376,7 +1422,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| } |
| @@ -1422,7 +1468,7 @@ |
| context_list.push_back(new Context()); |
| Context* c = context_list[i]; |
| - c->result = cache.http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| } |
| @@ -1468,7 +1514,7 @@ |
| MockHttpRequest request(kSimpleGET_Transaction); |
| scoped_ptr<Context> c(new Context()); |
| - c->result = cache->http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -1506,7 +1552,7 @@ |
| MockHttpRequest request(kSimpleGET_Transaction); |
| scoped_ptr<Context> c(new Context()); |
| - c->result = cache->http_cache()->CreateTransaction(&c->trans); |
| + c->result = cache->http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, c->result); |
| c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -2192,7 +2238,7 @@ |
| net::TestCompletionCallback callback; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -3253,7 +3299,7 @@ |
| MockHttpRequest request(kRangeGET_TransactionOK); |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3292,7 +3338,7 @@ |
| request.load_flags |= net::LOAD_VALIDATE_CACHE; |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3337,7 +3383,7 @@ |
| request.load_flags |= net::LOAD_VALIDATE_CACHE; |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3364,7 +3410,7 @@ |
| // active entry (no open or create). |
| c = new Context(); |
| - rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3645,7 +3691,7 @@ |
| net::TestCompletionCallback callback; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -3723,7 +3769,7 @@ |
| MockHttpRequest request(kSimpleGET_Transaction); |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3753,7 +3799,7 @@ |
| MockHttpRequest request(kSimpleGET_Transaction); |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3796,7 +3842,7 @@ |
| MockHttpRequest request(transaction); |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3839,7 +3885,7 @@ |
| MockHttpRequest request(transaction); |
| scoped_ptr<Context> c(new Context()); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -3899,7 +3945,7 @@ |
| MockHttpRequest request(transaction); |
| scoped_ptr<Context> c(new Context()); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| @@ -4043,7 +4089,7 @@ |
| MockHttpRequest request(transaction); |
| Context* c = new Context(); |
| - int rv = cache.http_cache()->CreateTransaction(&c->trans); |
| + int rv = cache.http_cache()->CreateTransaction(&c->trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| // Queue another request to this transaction. We have to start this request |
| @@ -4051,7 +4097,8 @@ |
| // otherwise it will just create a new entry without being queued to the first |
| // request. |
| Context* pending = new Context(); |
| - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&pending->trans)); |
| + EXPECT_EQ(net::OK, |
| + cache.http_cache()->CreateTransaction(&pending->trans, NULL)); |
| rv = c->trans->Start(&request, c->callback.callback(), net::BoundNetLog()); |
| EXPECT_EQ(net::ERR_IO_PENDING, |
| @@ -4135,7 +4182,7 @@ |
| "rg: 50-59 rg: 60-69 rg: 70-79 "; |
| scoped_ptr<Context> c(new Context); |
| - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans)); |
| + EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL)); |
| MockHttpRequest request(transaction); |
| int rv = c->trans->Start( |
| @@ -4207,7 +4254,7 @@ |
| MockHttpRequest request(transaction); |
| Context* c = new Context(); |
| - EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans)); |
| + EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(&c->trans, NULL)); |
| int rv = c->trans->Start( |
| &request, c->callback.callback(), net::BoundNetLog()); |
| @@ -4335,7 +4382,7 @@ |
| // write to the cache |
| { |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -4363,7 +4410,7 @@ |
| // read from the cache |
| { |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -4488,7 +4535,7 @@ |
| net::TestCompletionCallback callback; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| ASSERT_TRUE(trans.get()); |
| @@ -4503,7 +4550,7 @@ |
| MockHttpCache* cache = new MockHttpCache; |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache->http_cache()->CreateTransaction(&trans); |
| + int rv = cache->http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| delete cache; |
| @@ -4741,7 +4788,7 @@ |
| { |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| MockHttpRequest request(kSimpleGET_Transaction); |
| @@ -4775,7 +4822,7 @@ |
| { |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
| @@ -4813,7 +4860,7 @@ |
| { |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| // Force a response that can be resumed. |
| @@ -4870,7 +4917,7 @@ |
| { |
| // Now make a regular request. |
| scoped_ptr<net::HttpTransaction> trans; |
| - int rv = cache.http_cache()->CreateTransaction(&trans); |
| + int rv = cache.http_cache()->CreateTransaction(&trans, NULL); |
| EXPECT_EQ(net::OK, rv); |
| rv = trans->Start(&request, callback.callback(), net::BoundNetLog()); |
| @@ -4949,3 +4996,20 @@ |
| EXPECT_TRUE(truncated); |
| entry->Close(); |
| } |
| + |
| +TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit_TransactionDelegate) { |
| + MockHttpCache cache; |
| + |
| + // write to the cache |
|
rvargas (doing something else)
2012/07/26 02:13:43
nit: Starts with uppercase and ends with period. S
tburkard
2012/07/26 02:50:54
Done.
|
| + RunTransactionTestWithNumDelegateTransactions(cache.http_cache(), |
| + kSimpleGET_Transaction, |
| + 8); |
| + |
| + // force this transaction to read from the cache |
| + MockTransaction transaction(kSimpleGET_Transaction); |
| + transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; |
| + |
| + RunTransactionTestWithNumDelegateTransactions(cache.http_cache(), |
| + kSimpleGET_Transaction, |
| + 5); |
| +} |