summaryrefslogtreecommitdiffstats
path: root/net/disk_cache/disk_cache_test_base.cc
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-30 23:24:06 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-30 23:24:06 +0000
commit3b93902e179c52cc8ed7af074427faf1f9409adf (patch)
tree1b5e6154ca27a2506e5730455454cc07d2c5bb9d /net/disk_cache/disk_cache_test_base.cc
parent94a922b85962d298dbc5e66e88862e060a731eff (diff)
downloadchromium_src-3b93902e179c52cc8ed7af074427faf1f9409adf.zip
chromium_src-3b93902e179c52cc8ed7af074427faf1f9409adf.tar.gz
chromium_src-3b93902e179c52cc8ed7af074427faf1f9409adf.tar.bz2
Disk cache: Switch the disk cache to use the cache_thread.
Add an InFlightBackendIO class that handles posting of cacheoperations back and forth between the IO thread and the cachethread. BUG=26730 TEST=unit tests Review URL: http://codereview.chromium.org/2829008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51312 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/disk_cache_test_base.cc')
-rw-r--r--net/disk_cache/disk_cache_test_base.cc33
1 files changed, 26 insertions, 7 deletions
diff --git a/net/disk_cache/disk_cache_test_base.cc b/net/disk_cache/disk_cache_test_base.cc
index 7b0cc8e..0add3c7 100644
--- a/net/disk_cache/disk_cache_test_base.cc
+++ b/net/disk_cache/disk_cache_test_base.cc
@@ -4,6 +4,7 @@
#include "net/disk_cache/disk_cache_test_base.h"
+#include "net/base/net_errors.h"
#include "net/base/test_completion_callback.h"
#include "net/disk_cache/backend_impl.h"
#include "net/disk_cache/disk_cache_test_util.h"
@@ -66,21 +67,25 @@ void DiskCacheTestWithCache::InitDiskCache() {
if (implementation_)
return InitDiskCacheImpl(path);
+ scoped_refptr<base::MessageLoopProxy> thread =
+ use_current_thread_ ? base::MessageLoopProxy::CreateForCurrentThread() :
+ cache_thread_.message_loop_proxy();
+
TestCompletionCallback cb;
int rv = disk_cache::BackendImpl::CreateBackend(
path, force_creation_, size_, net::DISK_CACHE,
- disk_cache::kNoRandom, cache_thread_.message_loop_proxy(),
- &cache_, &cb);
+ disk_cache::kNoRandom, thread, &cache_, &cb);
ASSERT_EQ(net::OK, cb.GetResult(rv));
}
void DiskCacheTestWithCache::InitDiskCacheImpl(const FilePath& path) {
+ scoped_refptr<base::MessageLoopProxy> thread =
+ use_current_thread_ ? base::MessageLoopProxy::CreateForCurrentThread() :
+ cache_thread_.message_loop_proxy();
if (mask_)
- cache_impl_ = new disk_cache::BackendImpl(
- path, mask_, cache_thread_.message_loop_proxy());
+ cache_impl_ = new disk_cache::BackendImpl(path, mask_, thread);
else
- cache_impl_ = new disk_cache::BackendImpl(
- path, cache_thread_.message_loop_proxy());
+ cache_impl_ = new disk_cache::BackendImpl(path, thread);
cache_ = cache_impl_;
ASSERT_TRUE(NULL != cache_);
@@ -92,7 +97,9 @@ void DiskCacheTestWithCache::InitDiskCacheImpl(const FilePath& path) {
cache_impl_->SetNewEviction();
cache_impl_->SetFlags(disk_cache::kNoRandom);
- ASSERT_TRUE(cache_impl_->Init());
+ TestCompletionCallback cb;
+ int rv = cache_impl_->Init(&cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
}
void DiskCacheTestWithCache::TearDown() {
@@ -112,6 +119,9 @@ void DiskCacheTestWithCache::TearDown() {
// We are expected to leak memory when simulating crashes.
void DiskCacheTestWithCache::SimulateCrash() {
ASSERT_TRUE(implementation_ && !memory_only_);
+ TestCompletionCallback cb;
+ int rv = cache_impl_->FlushQueueForTest(&cb);
+ ASSERT_EQ(net::OK, cb.GetResult(rv));
cache_impl_->ClearRefCountForTest();
delete cache_impl_;
@@ -171,3 +181,12 @@ int DiskCacheTestWithCache::OpenNextEntry(void** iter,
int rv = cache_->OpenNextEntry(iter, next_entry, &cb);
return cb.GetResult(rv);
}
+
+void DiskCacheTestWithCache::FlushQueueForTest() {
+ if (memory_only_ || !cache_impl_)
+ return;
+
+ TestCompletionCallback cb;
+ int rv = cache_impl_->FlushQueueForTest(&cb);
+ EXPECT_EQ(net::OK, cb.GetResult(rv));
+}