summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-02 04:26:52 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-02 04:26:52 +0000
commit123f2748c2245a66ab5984d1254b3bce3411322e (patch)
tree54cbf8bee41dcc1867de9f8c1c358ac095ed553a /webkit
parent6c02004be3ca695ba35b3874c64b0db7b7c88f40 (diff)
downloadchromium_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.cc22
-rw-r--r--webkit/appcache/appcache_quota_client.h3
-rw-r--r--webkit/appcache/appcache_service.cc12
-rw-r--r--webkit/appcache/appcache_service.h6
-rw-r--r--webkit/appcache/appcache_service_unittest.cc16
-rw-r--r--webkit/appcache/mock_appcache_service.cc7
-rw-r--r--webkit/appcache/mock_appcache_service.h3
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_;