diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-02 04:26:52 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-02 04:26:52 +0000 |
commit | 123f2748c2245a66ab5984d1254b3bce3411322e (patch) | |
tree | 54cbf8bee41dcc1867de9f8c1c358ac095ed553a /webkit | |
parent | 6c02004be3ca695ba35b3874c64b0db7b7c88f40 (diff) | |
download | chromium_src-123f2748c2245a66ab5984d1254b3bce3411322e.zip chromium_src-123f2748c2245a66ab5984d1254b3bce3411322e.tar.gz chromium_src-123f2748c2245a66ab5984d1254b3bce3411322e.tar.bz2 |
base::Bind: Convert AppCacheHelper::DeleteAppCachesForOrigin.
BUG=none
TEST=none
R=groby@chromium.org
Review URL: http://codereview.chromium.org/8769024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112635 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/appcache/appcache_quota_client.cc | 22 | ||||
-rw-r--r-- | webkit/appcache/appcache_quota_client.h | 3 | ||||
-rw-r--r-- | webkit/appcache/appcache_service.cc | 12 | ||||
-rw-r--r-- | webkit/appcache/appcache_service.h | 6 | ||||
-rw-r--r-- | webkit/appcache/appcache_service_unittest.cc | 16 | ||||
-rw-r--r-- | webkit/appcache/mock_appcache_service.cc | 7 | ||||
-rw-r--r-- | webkit/appcache/mock_appcache_service.h | 3 |
7 files changed, 38 insertions, 31 deletions
diff --git a/webkit/appcache/appcache_quota_client.cc b/webkit/appcache/appcache_quota_client.cc index b071910..ed36956 100644 --- a/webkit/appcache/appcache_quota_client.cc +++ b/webkit/appcache/appcache_quota_client.cc @@ -9,6 +9,7 @@ #include <set> #include "base/bind.h" +#include "base/bind_helpers.h" #include "webkit/appcache/appcache_service.h" using quota::QuotaClient; @@ -34,9 +35,10 @@ namespace appcache { AppCacheQuotaClient::AppCacheQuotaClient(AppCacheService* service) : ALLOW_THIS_IN_INITIALIZER_LIST(service_delete_callback_( - new net::CancelableOldCompletionCallback<AppCacheQuotaClient>( - this, &AppCacheQuotaClient::DidDeleteAppCachesForOrigin))), - service_(service), appcache_is_ready_(false), + base::Bind(&AppCacheQuotaClient::DidDeleteAppCachesForOrigin, + base::Unretained(this)))), + service_(service), + appcache_is_ready_(false), quota_manager_is_destroyed_(false) { } @@ -54,10 +56,9 @@ void AppCacheQuotaClient::OnQuotaManagerDestroyed() { DeletePendingRequests(); if (!current_delete_request_callback_.is_null()) { current_delete_request_callback_.Reset(); - service_delete_callback_.release()->Cancel(); - } else { - service_delete_callback_ = NULL; + service_delete_callback_.Cancel(); } + quota_manager_is_destroyed_ = true; if (!service_) delete this; @@ -136,7 +137,9 @@ void AppCacheQuotaClient::DeleteOriginData(const GURL& origin, DidDeleteAppCachesForOrigin(net::OK); return; } - service_->DeleteAppCachesForOrigin(origin, service_delete_callback_); + + service_->DeleteAppCachesForOrigin( + origin, service_delete_callback_.callback()); } void AppCacheQuotaClient::DidDeleteAppCachesForOrigin(int rv) { @@ -223,10 +226,9 @@ void AppCacheQuotaClient::NotifyAppCacheDestroyed() { if (!current_delete_request_callback_.is_null()) { current_delete_request_callback_.Run(quota::kQuotaErrorAbort); current_delete_request_callback_.Reset(); - service_delete_callback_.release()->Cancel(); - } else { - service_delete_callback_ = NULL; + service_delete_callback_.Cancel(); } + if (quota_manager_is_destroyed_) delete this; } diff --git a/webkit/appcache/appcache_quota_client.h b/webkit/appcache/appcache_quota_client.h index 20c0f0d..e81a833 100644 --- a/webkit/appcache/appcache_quota_client.h +++ b/webkit/appcache/appcache_quota_client.h @@ -78,8 +78,7 @@ class AppCacheQuotaClient : public quota::QuotaClient { // And once it's ready, we can only handle one delete request at a time, // so we queue up additional requests while one is in already in progress. DeletionCallback current_delete_request_callback_; - scoped_refptr<net::CancelableOldCompletionCallback<AppCacheQuotaClient> > - service_delete_callback_; + net::CancelableCompletionCallback service_delete_callback_; AppCacheService* service_; bool appcache_is_ready_; diff --git a/webkit/appcache/appcache_service.cc b/webkit/appcache/appcache_service.cc index 9aaa50c..e899593 100644 --- a/webkit/appcache/appcache_service.cc +++ b/webkit/appcache/appcache_service.cc @@ -210,12 +210,12 @@ void AppCacheService::DeleteHelper::OnGroupMadeObsolete( // DeleteOriginHelper ------- -class AppCacheService::DeleteOriginHelper : public AsyncHelper { +class AppCacheService::DeleteOriginHelper : public NewAsyncHelper { public: DeleteOriginHelper( AppCacheService* service, const GURL& origin, - net::OldCompletionCallback* callback) - : AsyncHelper(service, callback), origin_(origin), + const net::CompletionCallback& callback) + : NewAsyncHelper(service, callback), origin_(origin), num_caches_to_delete_(0), successes_(0), failures_(0) { } @@ -238,17 +238,19 @@ class AppCacheService::DeleteOriginHelper : public AsyncHelper { int num_caches_to_delete_; int successes_; int failures_; + DISALLOW_COPY_AND_ASSIGN(DeleteOriginHelper); }; void AppCacheService::DeleteOriginHelper::OnAllInfo( - AppCacheInfoCollection* collection) { + AppCacheInfoCollection* collection) { if (!collection) { // Failed to get a listing. CallCallback(net::ERR_FAILED); delete this; return; } + std::map<GURL, AppCacheInfoVector>::iterator found = collection->infos_by_origin.find(origin_); if (found == collection->infos_by_origin.end() || found->second.empty()) { @@ -524,7 +526,7 @@ void AppCacheService::DeleteAppCacheGroup( } void AppCacheService::DeleteAppCachesForOrigin( - const GURL& origin, net::OldCompletionCallback* callback) { + const GURL& origin, const net::CompletionCallback& callback) { DeleteOriginHelper* helper = new DeleteOriginHelper(this, origin, callback); helper->Start(); } diff --git a/webkit/appcache/appcache_service.h b/webkit/appcache/appcache_service.h index dade754..f63ac25 100644 --- a/webkit/appcache/appcache_service.h +++ b/webkit/appcache/appcache_service.h @@ -90,9 +90,9 @@ class APPCACHE_EXPORT AppCacheService { // Deletes all appcaches for the origin, 'callback' is invoked upon // completion. This method always completes asynchronously. - // (virtual for unittesting) - virtual void DeleteAppCachesForOrigin(const GURL& origin, - net::OldCompletionCallback* callback); + // (virtual for unit testing) + virtual void DeleteAppCachesForOrigin( + const GURL& origin, const net::CompletionCallback& callback); // Checks the integrity of 'response_id' by reading the headers and data. // If it cannot be read, the cache group for 'manifest_url' is deleted. diff --git a/webkit/appcache/appcache_service_unittest.cc b/webkit/appcache/appcache_service_unittest.cc index 0182f86..1a58964 100644 --- a/webkit/appcache/appcache_service_unittest.cc +++ b/webkit/appcache/appcache_service_unittest.cc @@ -5,6 +5,7 @@ #include <string> #include "base/bind.h" +#include "base/bind_helpers.h" #include "base/message_loop.h" #include "base/pickle.h" #include "net/base/completion_callback.h" @@ -89,7 +90,8 @@ class AppCacheServiceTest : public testing::Test { service_(new AppCacheService(NULL)), delete_result_(net::OK), delete_completion_count_(0), ALLOW_THIS_IN_INITIALIZER_LIST(deletion_callback_( - this, &AppCacheServiceTest::OnDeleteAppCachesComplete)) { + base::Bind(&AppCacheServiceTest::OnDeleteAppCachesComplete, + base::Unretained(this)))) { // Setup to use mock storage. service_->storage_.reset(new MockAppCacheStorage(service_.get())); } @@ -172,12 +174,12 @@ class AppCacheServiceTest : public testing::Test { scoped_ptr<AppCacheService> service_; int delete_result_; int delete_completion_count_; - net::OldCompletionCallbackImpl<AppCacheServiceTest> deletion_callback_; + net::CompletionCallback deletion_callback_; }; TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { // Without giving mock storage simiulated info, should fail. - service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); + service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); EXPECT_EQ(0, delete_completion_count_); MessageLoop::current()->RunAllPending(); EXPECT_EQ(1, delete_completion_count_); @@ -186,7 +188,7 @@ TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { // Should succeed given an empty info collection. mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); - service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); + service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); EXPECT_EQ(0, delete_completion_count_); MessageLoop::current()->RunAllPending(); EXPECT_EQ(1, delete_completion_count_); @@ -208,7 +210,7 @@ TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { info_vector.push_back(mock_manifest_3); info->infos_by_origin[kOrigin] = info_vector; mock_storage()->SimulateGetAllInfo(info); - service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); + service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); EXPECT_EQ(0, delete_completion_count_); MessageLoop::current()->RunAllPending(); EXPECT_EQ(1, delete_completion_count_); @@ -219,7 +221,7 @@ TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { info->infos_by_origin[kOrigin] = info_vector; mock_storage()->SimulateGetAllInfo(info); mock_storage()->SimulateMakeGroupObsoleteFailure(); - service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); + service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); EXPECT_EQ(0, delete_completion_count_); MessageLoop::current()->RunAllPending(); EXPECT_EQ(1, delete_completion_count_); @@ -228,7 +230,7 @@ TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { // Should complete with abort error if the service is deleted // prior to a delete completion. - service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); + service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); EXPECT_EQ(0, delete_completion_count_); service_.reset(); // kill it EXPECT_EQ(1, delete_completion_count_); diff --git a/webkit/appcache/mock_appcache_service.cc b/webkit/appcache/mock_appcache_service.cc index d87f017..56c66ba 100644 --- a/webkit/appcache/mock_appcache_service.cc +++ b/webkit/appcache/mock_appcache_service.cc @@ -9,12 +9,13 @@ namespace appcache { -static void DeferredCallCallback(net::OldCompletionCallback* callback, int rv) { - callback->Run(rv); +static void DeferredCallCallback( + const net::CompletionCallback& callback, int rv) { + callback.Run(rv); } void MockAppCacheService::DeleteAppCachesForOrigin( - const GURL& origin, net::OldCompletionCallback* callback) { + const GURL& origin, const net::CompletionCallback& callback) { ++delete_called_count_; MessageLoop::current()->PostTask( FROM_HERE, diff --git a/webkit/appcache/mock_appcache_service.h b/webkit/appcache/mock_appcache_service.h index f803c28..cd51d11 100644 --- a/webkit/appcache/mock_appcache_service.h +++ b/webkit/appcache/mock_appcache_service.h @@ -26,7 +26,7 @@ class MockAppCacheService : public AppCacheService { // removing groups and caches in our mock storage instance. virtual void DeleteAppCachesForOrigin( const GURL& origin, - net::OldCompletionCallback* callback) OVERRIDE; + const net::CompletionCallback& callback) OVERRIDE; void set_quota_manager_proxy(quota::QuotaManagerProxy* proxy) { quota_manager_proxy_ = proxy; @@ -37,6 +37,7 @@ class MockAppCacheService : public AppCacheService { } int delete_called_count() const { return delete_called_count_; } + private: int mock_delete_appcaches_for_origin_result_; int delete_called_count_; |