Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2010 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/hash_tables.h" | 7 #include "base/hash_tables.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/scoped_vector.h" | 9 #include "base/scoped_vector.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 660 if (!fail_) | 660 if (!fail_) |
| 661 *backend_ = new MockDiskCache(); | 661 *backend_ = new MockDiskCache(); |
| 662 net::CompletionCallback* cb = callback_; | 662 net::CompletionCallback* cb = callback_; |
| 663 callback_ = NULL; | 663 callback_ = NULL; |
| 664 cb->Run(Result()); // This object can be deleted here. | 664 cb->Run(Result()); // This object can be deleted here. |
| 665 } | 665 } |
| 666 } | 666 } |
| 667 | 667 |
| 668 void set_fail(bool fail) { fail_ = fail; } | 668 void set_fail(bool fail) { fail_ = fail; } |
| 669 | 669 |
| 670 net::CompletionCallback* callback() { return callback_; } | |
| 671 | |
| 670 private: | 672 private: |
| 671 int Result() { return fail_ ? net::ERR_FAILED : net::OK; } | 673 int Result() { return fail_ ? net::ERR_FAILED : net::OK; } |
| 672 | 674 |
| 673 disk_cache::Backend** backend_; | 675 disk_cache::Backend** backend_; |
| 674 net::CompletionCallback* callback_; | 676 net::CompletionCallback* callback_; |
| 675 bool block_; | 677 bool block_; |
| 676 bool fail_; | 678 bool fail_; |
| 677 }; | 679 }; |
| 678 | 680 |
| 679 //----------------------------------------------------------------------------- | 681 //----------------------------------------------------------------------------- |
| (...skipping 1292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1972 context_list[2]->result = | 1974 context_list[2]->result = |
| 1973 context_list[2]->callback.GetResult(context_list[2]->result); | 1975 context_list[2]->callback.GetResult(context_list[2]->result); |
| 1974 ReadAndVerifyTransaction(context_list[2]->trans.get(), kETagGET_Transaction); | 1976 ReadAndVerifyTransaction(context_list[2]->trans.get(), kETagGET_Transaction); |
| 1975 | 1977 |
| 1976 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 1978 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 1977 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 1979 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 1978 | 1980 |
| 1979 delete context_list[2]; | 1981 delete context_list[2]; |
| 1980 } | 1982 } |
| 1981 | 1983 |
| 1984 // Tests that we can delete the cache while creating the backend. | |
| 1985 TEST(HttpCache, DeleteCacheWaitingForBackend) { | |
| 1986 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); | |
| 1987 MockHttpCache* cache = new MockHttpCache(factory); | |
| 1988 | |
| 1989 MockHttpRequest request(kSimpleGET_Transaction); | |
| 1990 | |
| 1991 Context* c = new Context(); | |
| 1992 c->result = cache->http_cache()->CreateTransaction(&c->trans); | |
| 1993 EXPECT_EQ(net::OK, c->result); | |
| 1994 | |
| 1995 c->trans->Start(&request, &c->callback, net::BoundNetLog()); | |
| 1996 | |
| 1997 // Just to make sure that everything is still pending. | |
| 1998 MessageLoop::current()->RunAllPending(); | |
| 1999 | |
| 2000 // The request should be creating the disk cache. | |
| 2001 EXPECT_FALSE(c->callback.have_result()); | |
| 2002 | |
| 2003 // We cannot call FinishCreation because the factory itself will go away with | |
| 2004 // the cache, so grab the callback and attempt to use it. | |
| 2005 net::CompletionCallback* callback = factory->callback(); | |
| 2006 | |
| 2007 delete cache; | |
|
Paweł Hajdan Jr.
2010/07/16 21:45:51
nit: How about using scoped pointers to make it mu
| |
| 2008 MessageLoop::current()->RunAllPending(); | |
| 2009 | |
| 2010 callback->Run(net::ERR_ABORTED); | |
| 2011 delete c; | |
|
Paweł Hajdan Jr.
2010/07/16 21:45:51
Similarly here.
| |
| 2012 } | |
| 2013 | |
| 1982 TEST(HttpCache, TypicalGET_ConditionalRequest) { | 2014 TEST(HttpCache, TypicalGET_ConditionalRequest) { |
| 1983 MockHttpCache cache; | 2015 MockHttpCache cache; |
| 1984 | 2016 |
| 1985 // write to the cache | 2017 // write to the cache |
| 1986 RunTransactionTest(cache.http_cache(), kTypicalGET_Transaction); | 2018 RunTransactionTest(cache.http_cache(), kTypicalGET_Transaction); |
| 1987 | 2019 |
| 1988 EXPECT_EQ(1, cache.network_layer()->transaction_count()); | 2020 EXPECT_EQ(1, cache.network_layer()->transaction_count()); |
| 1989 EXPECT_EQ(0, cache.disk_cache()->open_count()); | 2021 EXPECT_EQ(0, cache.disk_cache()->open_count()); |
| 1990 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 2022 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 1991 | 2023 |
| (...skipping 2732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4724 // Now return 200 when validating the entry so the metadata will be lost. | 4756 // Now return 200 when validating the entry so the metadata will be lost. |
| 4725 MockTransaction trans2(kTypicalGET_Transaction); | 4757 MockTransaction trans2(kTypicalGET_Transaction); |
| 4726 trans2.load_flags = net::LOAD_VALIDATE_CACHE; | 4758 trans2.load_flags = net::LOAD_VALIDATE_CACHE; |
| 4727 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); | 4759 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); |
| 4728 EXPECT_TRUE(response.metadata.get() == NULL); | 4760 EXPECT_TRUE(response.metadata.get() == NULL); |
| 4729 | 4761 |
| 4730 EXPECT_EQ(3, cache.network_layer()->transaction_count()); | 4762 EXPECT_EQ(3, cache.network_layer()->transaction_count()); |
| 4731 EXPECT_EQ(4, cache.disk_cache()->open_count()); | 4763 EXPECT_EQ(4, cache.disk_cache()->open_count()); |
| 4732 EXPECT_EQ(1, cache.disk_cache()->create_count()); | 4764 EXPECT_EQ(1, cache.disk_cache()->create_count()); |
| 4733 } | 4765 } |
| OLD | NEW |