summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache/appcache_service.cc')
-rw-r--r--webkit/appcache/appcache_service.cc36
1 files changed, 20 insertions, 16 deletions
diff --git a/webkit/appcache/appcache_service.cc b/webkit/appcache/appcache_service.cc
index 79ee7ac..55ae766 100644
--- a/webkit/appcache/appcache_service.cc
+++ b/webkit/appcache/appcache_service.cc
@@ -24,6 +24,14 @@
namespace appcache {
+namespace {
+
+void DeferredCallback(const net::CompletionCallback& callback, int rv) {
+ callback.Run(rv);
+}
+
+} // namespace
+
AppCacheInfoCollection::AppCacheInfoCollection() {}
AppCacheInfoCollection::~AppCacheInfoCollection() {}
@@ -52,7 +60,7 @@ class AppCacheService::NewAsyncHelper
if (!callback_.is_null()) {
// Defer to guarantee async completion.
MessageLoop::current()->PostTask(
- FROM_HERE, base::Bind(&DeferredCallCallback, callback_, rv));
+ FROM_HERE, base::Bind(&DeferredCallback, callback_, rv));
}
callback_.Reset();
}
@@ -80,8 +88,9 @@ class AppCacheService::AsyncHelper
: public AppCacheStorage::Delegate {
public:
AsyncHelper(
- AppCacheService* service, net::OldCompletionCallback* callback)
- : service_(service), callback_(callback) {
+ AppCacheService* service, const net::CompletionCallback& callback)
+ : service_(service),
+ callback_(callback) {
service_->pending_helpers_.insert(this);
}
@@ -95,27 +104,22 @@ class AppCacheService::AsyncHelper
protected:
void CallCallback(int rv) {
- if (callback_) {
+ if (!callback_.is_null()) {
// Defer to guarantee async completion.
MessageLoop::current()->PostTask(
- FROM_HERE, base::Bind(&DeferredCallCallback, callback_, rv));
+ FROM_HERE, base::Bind(&DeferredCallback, callback_, rv));
}
- callback_ = NULL;
- }
-
- static void DeferredCallCallback(net::OldCompletionCallback* callback,
- int rv) {
- callback->Run(rv);
+ callback_.Reset();
}
AppCacheService* service_;
- net::OldCompletionCallback* callback_;
+ net::CompletionCallback callback_;
};
void AppCacheService::AsyncHelper::Cancel() {
- if (callback_) {
- callback_->Run(net::ERR_ABORTED);
- callback_ = NULL;
+ if (!callback_.is_null()) {
+ callback_.Run(net::ERR_ABORTED);
+ callback_.Reset();
}
service_->storage()->CancelDelegateCallbacks(this);
service_ = NULL;
@@ -339,7 +343,7 @@ class AppCacheService::CheckResponseHelper : AsyncHelper {
CheckResponseHelper(
AppCacheService* service, const GURL& manifest_url, int64 cache_id,
int64 response_id)
- : AsyncHelper(service, NULL),
+ : AsyncHelper(service, net::CompletionCallback()),
manifest_url_(manifest_url),
cache_id_(cache_id),
response_id_(response_id),