Index: net/http/mock_http_cache.cc |
diff --git a/net/http/mock_http_cache.cc b/net/http/mock_http_cache.cc |
index 4ff840d7c1feb044bb052b6cf736eab001d1f060..98efd701e5bb23b046fdafb9d558e253a87252d5 100644 |
--- a/net/http/mock_http_cache.cc |
+++ b/net/http/mock_http_cache.cc |
@@ -11,26 +11,6 @@ |
namespace { |
-class OldCallbackRunner : public Task { |
- public: |
- OldCallbackRunner(net::OldCompletionCallback* callback, int result) |
- : callback_(callback), result_(result) {} |
- virtual void Run() { |
- callback_->Run(result_); |
- } |
- |
- private: |
- net::OldCompletionCallback* callback_; |
- int result_; |
- |
- DISALLOW_COPY_AND_ASSIGN(OldCallbackRunner); |
-}; |
- |
-void CompletionCallbackRunner( |
- const net::CompletionCallback& callback, int result) { |
- callback.Run(result); |
-} |
- |
int GetTestModeForEntry(const std::string& key) { |
// 'key' is prefixed with an identifier if it corresponds to a cached POST. |
// Skip past that to locate the actual URL. |
@@ -61,8 +41,7 @@ int g_test_mode = 0; |
struct MockDiskEntry::CallbackInfo { |
scoped_refptr<MockDiskEntry> entry; |
- net::OldCompletionCallback* old_callback; |
- net::CompletionCallback callback; |
+ net::OldCompletionCallback* callback; |
int result; |
}; |
@@ -127,30 +106,6 @@ int MockDiskEntry::ReadData(int index, int offset, net::IOBuffer* buf, |
return net::ERR_IO_PENDING; |
} |
-int MockDiskEntry::ReadData( |
- int index, int offset, net::IOBuffer* buf, int buf_len, |
- const net::CompletionCallback& callback) { |
- DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); |
- DCHECK(!callback.is_null()); |
- |
- if (fail_requests_) |
- return net::ERR_CACHE_READ_FAILURE; |
- |
- if (offset < 0 || offset > static_cast<int>(data_[index].size())) |
- return net::ERR_FAILED; |
- if (static_cast<size_t>(offset) == data_[index].size()) |
- return 0; |
- |
- int num = std::min(buf_len, static_cast<int>(data_[index].size()) - offset); |
- memcpy(buf->data(), &data_[index][offset], num); |
- |
- if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_READ) |
- return num; |
- |
- CallbackLater(callback, num); |
- return net::ERR_IO_PENDING; |
-} |
- |
int MockDiskEntry::WriteData(int index, int offset, net::IOBuffer* buf, |
int buf_len, net::OldCompletionCallback* callback, |
bool truncate) { |
@@ -177,32 +132,6 @@ int MockDiskEntry::WriteData(int index, int offset, net::IOBuffer* buf, |
return net::ERR_IO_PENDING; |
} |
-int MockDiskEntry::WriteData( |
- int index, int offset, net::IOBuffer* buf, int buf_len, |
- const net::CompletionCallback& callback, bool truncate) { |
- DCHECK(index >= 0 && index < kNumCacheEntryDataIndices); |
- DCHECK(truncate); |
- DCHECK(!callback.is_null()); |
- |
- if (fail_requests_) { |
- CallbackLater(callback, net::ERR_CACHE_READ_FAILURE); |
- return net::ERR_IO_PENDING; |
- } |
- |
- if (offset < 0 || offset > static_cast<int>(data_[index].size())) |
- return net::ERR_FAILED; |
- |
- data_[index].resize(offset + buf_len); |
- if (buf_len) |
- memcpy(&data_[index][offset], buf->data(), buf_len); |
- |
- if (MockHttpCache::GetTestMode(test_mode_) & TEST_MODE_SYNC_CACHE_WRITE) |
- return buf_len; |
- |
- CallbackLater(callback, buf_len); |
- return net::ERR_IO_PENDING; |
-} |
- |
int MockDiskEntry::ReadSparseData(int64 offset, net::IOBuffer* buf, int buf_len, |
net::OldCompletionCallback* callback) { |
DCHECK(callback); |
@@ -335,7 +264,7 @@ void MockDiskEntry::IgnoreCallbacks(bool value) { |
return; |
ignore_callbacks_ = value; |
if (!value) |
- StoreAndDeliverCallbacks(false, NULL, NULL, net::CompletionCallback(), 0); |
+ StoreAndDeliverCallbacks(false, NULL, NULL, 0); |
} |
MockDiskEntry::~MockDiskEntry() { |
@@ -346,29 +275,13 @@ MockDiskEntry::~MockDiskEntry() { |
// leveraging the fact that this class is reference counted. |
void MockDiskEntry::CallbackLater(net::OldCompletionCallback* callback, |
int result) { |
- if (ignore_callbacks_) { |
- StoreAndDeliverCallbacks(true, this, callback, |
- net::CompletionCallback(), result); |
- return; |
- } |
- |
- MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
- &MockDiskEntry::RunOldCallback, this, callback, result)); |
-} |
- |
-void MockDiskEntry::CallbackLater(const net::CompletionCallback& callback, |
- int result) { |
- if (ignore_callbacks_) { |
- StoreAndDeliverCallbacks(true, this, NULL, callback, result); |
- return; |
- } |
- |
+ if (ignore_callbacks_) |
+ return StoreAndDeliverCallbacks(true, this, callback, result); |
MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
&MockDiskEntry::RunCallback, this, callback, result)); |
} |
-void MockDiskEntry::RunOldCallback( |
- net::OldCompletionCallback* callback, int result) { |
+void MockDiskEntry::RunCallback(net::OldCompletionCallback* callback, int result) { |
if (busy_) { |
// This is kind of hacky, but controlling the behavior of just this entry |
// from a test is sort of complicated. What we really want to do is |
@@ -377,7 +290,7 @@ void MockDiskEntry::RunOldCallback( |
// this operation (already posted to the message loop)... and without |
// just delaying for n mS (which may cause trouble with slow bots). So |
// we re-post this operation (all async sparse IO operations will take two |
- // trips through the message loop instead of one). |
+ // trips trhough the message loop instead of one). |
if (!delayed_) { |
delayed_ = true; |
return CallbackLater(callback, result); |
@@ -387,44 +300,20 @@ void MockDiskEntry::RunOldCallback( |
callback->Run(result); |
} |
-void MockDiskEntry::RunCallback( |
- const net::CompletionCallback& callback, int result) { |
- if (busy_) { |
- // This is kind of hacky, but controlling the behavior of just this entry |
- // from a test is sort of complicated. What we really want to do is |
- // delay the delivery of a sparse IO operation a little more so that the |
- // request start operation (async) will finish without seeing the end of |
- // this operation (already posted to the message loop)... and without |
- // just delaying for n mS (which may cause trouble with slow bots). So |
- // we re-post this operation (all async sparse IO operations will take two |
- // trips through the message loop instead of one). |
- if (!delayed_) { |
- delayed_ = true; |
- return CallbackLater(callback, result); |
- } |
- } |
- busy_ = false; |
- callback.Run(result); |
-} |
- |
// When |store| is true, stores the callback to be delivered later; otherwise |
// delivers any callback previously stored. |
// Static. |
-void MockDiskEntry::StoreAndDeliverCallbacks( |
- bool store, MockDiskEntry* entry, |
- net::OldCompletionCallback* old_callback, |
- const net::CompletionCallback& callback, int result) { |
+void MockDiskEntry::StoreAndDeliverCallbacks(bool store, MockDiskEntry* entry, |
+ net::OldCompletionCallback* callback, |
+ int result) { |
static std::vector<CallbackInfo> callback_list; |
if (store) { |
- CallbackInfo c = {entry, old_callback, callback, result}; |
+ CallbackInfo c = {entry, callback, result}; |
callback_list.push_back(c); |
} else { |
- for (size_t i = 0; i < callback_list.size(); ++i) { |
+ for (size_t i = 0; i < callback_list.size(); i++) { |
CallbackInfo& c = callback_list[i]; |
- if (c.old_callback) |
- c.entry->CallbackLater(c.old_callback, c.result); |
- else |
- c.entry->CallbackLater(c.callback, c.result); |
+ c.entry->CallbackLater(c.callback, c.result); |
} |
callback_list.clear(); |
} |
@@ -436,6 +325,20 @@ bool MockDiskEntry::ignore_callbacks_ = false; |
//----------------------------------------------------------------------------- |
+class MockDiskCache::CallbackRunner : public Task { |
+ public: |
+ CallbackRunner(net::OldCompletionCallback* callback, int result) |
+ : callback_(callback), result_(result) {} |
+ virtual void Run() { |
+ callback_->Run(result_); |
+ } |
+ |
+ private: |
+ net::OldCompletionCallback* callback_; |
+ int result_; |
+ DISALLOW_COPY_AND_ASSIGN(CallbackRunner); |
+}; |
+ |
MockDiskCache::MockDiskCache() |
: open_count_(0), create_count_(0), fail_requests_(false), |
soft_failures_(false), double_create_check_(true) { |
@@ -480,38 +383,6 @@ int MockDiskCache::OpenEntry(const std::string& key, disk_cache::Entry** entry, |
return net::ERR_IO_PENDING; |
} |
-int MockDiskCache::OpenEntry(const std::string& key, disk_cache::Entry** entry, |
- const net::CompletionCallback& callback) { |
- DCHECK(!callback.is_null()); |
- |
- if (fail_requests_) |
- return net::ERR_CACHE_OPEN_FAILURE; |
- |
- EntryMap::iterator it = entries_.find(key); |
- if (it == entries_.end()) |
- return net::ERR_CACHE_OPEN_FAILURE; |
- |
- if (it->second->is_doomed()) { |
- it->second->Release(); |
- entries_.erase(it); |
- return net::ERR_CACHE_OPEN_FAILURE; |
- } |
- |
- open_count_++; |
- |
- it->second->AddRef(); |
- *entry = it->second; |
- |
- if (soft_failures_) |
- it->second->set_fail_requests(); |
- |
- if (GetTestModeForEntry(key) & TEST_MODE_SYNC_CACHE_START) |
- return net::OK; |
- |
- CallbackLater(callback, net::OK); |
- return net::ERR_IO_PENDING; |
-} |
- |
int MockDiskCache::CreateEntry(const std::string& key, |
disk_cache::Entry** entry, |
net::OldCompletionCallback* callback) { |
@@ -551,46 +422,6 @@ int MockDiskCache::CreateEntry(const std::string& key, |
return net::ERR_IO_PENDING; |
} |
-int MockDiskCache::CreateEntry(const std::string& key, |
- disk_cache::Entry** entry, |
- const net::CompletionCallback& callback) { |
- DCHECK(!callback.is_null()); |
- |
- if (fail_requests_) |
- return net::ERR_CACHE_CREATE_FAILURE; |
- |
- EntryMap::iterator it = entries_.find(key); |
- if (it != entries_.end()) { |
- if (!it->second->is_doomed()) { |
- if (double_create_check_) |
- NOTREACHED(); |
- else |
- return net::ERR_CACHE_CREATE_FAILURE; |
- } |
- it->second->Release(); |
- entries_.erase(it); |
- } |
- |
- create_count_++; |
- |
- MockDiskEntry* new_entry = new MockDiskEntry(key); |
- |
- new_entry->AddRef(); |
- entries_[key] = new_entry; |
- |
- new_entry->AddRef(); |
- *entry = new_entry; |
- |
- if (soft_failures_) |
- new_entry->set_fail_requests(); |
- |
- if (GetTestModeForEntry(key) & TEST_MODE_SYNC_CACHE_START) |
- return net::OK; |
- |
- CallbackLater(callback, net::OK); |
- return net::ERR_IO_PENDING; |
-} |
- |
int MockDiskCache::DoomEntry(const std::string& key, |
net::OldCompletionCallback* callback) { |
DCHECK(callback); |
@@ -611,22 +442,12 @@ int MockDiskCache::DoomAllEntries(net::OldCompletionCallback* callback) { |
return net::ERR_NOT_IMPLEMENTED; |
} |
-int MockDiskCache::DoomAllEntries(const net::CompletionCallback& callback) { |
- return net::ERR_NOT_IMPLEMENTED; |
-} |
- |
int MockDiskCache::DoomEntriesBetween(const base::Time initial_time, |
const base::Time end_time, |
net::OldCompletionCallback* callback) { |
return net::ERR_NOT_IMPLEMENTED; |
} |
-int MockDiskCache::DoomEntriesBetween(const base::Time initial_time, |
- const base::Time end_time, |
- const net::CompletionCallback& callback) { |
- return net::ERR_NOT_IMPLEMENTED; |
-} |
- |
int MockDiskCache::DoomEntriesSince(const base::Time initial_time, |
net::OldCompletionCallback* callback) { |
return net::ERR_NOT_IMPLEMENTED; |
@@ -637,11 +458,6 @@ int MockDiskCache::OpenNextEntry(void** iter, disk_cache::Entry** next_entry, |
return net::ERR_NOT_IMPLEMENTED; |
} |
-int MockDiskCache::OpenNextEntry(void** iter, disk_cache::Entry** next_entry, |
- const net::CompletionCallback& callback) { |
- return net::ERR_NOT_IMPLEMENTED; |
-} |
- |
void MockDiskCache::EndEnumeration(void** iter) { |
} |
@@ -662,13 +478,7 @@ void MockDiskCache::ReleaseAll() { |
void MockDiskCache::CallbackLater(net::OldCompletionCallback* callback, |
int result) { |
MessageLoop::current()->PostTask(FROM_HERE, |
- new OldCallbackRunner(callback, result)); |
-} |
- |
-void MockDiskCache::CallbackLater(const net::CompletionCallback& callback, |
- int result) { |
- MessageLoop::current()->PostTask( |
- FROM_HERE, base::Bind(&CompletionCallbackRunner, callback, result)); |
+ new CallbackRunner(callback, result)); |
} |
//----------------------------------------------------------------------------- |
@@ -691,9 +501,9 @@ MockHttpCache::MockHttpCache(net::HttpCache::BackendFactory* disk_cache_factory) |
} |
MockDiskCache* MockHttpCache::disk_cache() { |
- net::TestCompletionCallback cb; |
+ TestOldCompletionCallback cb; |
disk_cache::Backend* backend; |
- int rv = http_cache_.GetBackend(&backend, cb.callback()); |
+ int rv = http_cache_.GetBackend(&backend, &cb); |
rv = cb.GetResult(rv); |
return (rv == net::OK) ? static_cast<MockDiskCache*>(backend) : NULL; |
} |