Commit ae998693 authored by Mark Pilgrim's avatar Mark Pilgrim Committed by Commit Bot

Appcache: BindOnce refactoring

Create net::OnceCompletionCallback and use it in
AppCacheService::GetAllAppCacheInfo

TBR=jam@chromium.org

Bug: 714018
Change-Id: Ie134d99a7c54deb9ded852e3a817420f5ac59b93
Reviewed-on: https://chromium-review.googlesource.com/664844
Commit-Queue: Mark Pilgrim <pilgrim@chromium.org>
Reviewed-by: default avatarMichael Nordman <michaeln@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502912}
parent c9e92eaa
...@@ -184,7 +184,7 @@ void AppCacheInternalsUI::Proxy::RequestAllAppCacheInfo() { ...@@ -184,7 +184,7 @@ void AppCacheInternalsUI::Proxy::RequestAllAppCacheInfo() {
new AppCacheInfoCollection()); new AppCacheInfoCollection());
appcache_service_->GetAllAppCacheInfo( appcache_service_->GetAllAppCacheInfo(
collection.get(), collection.get(),
base::Bind(&Proxy::OnAllAppCacheInfoReady, this, collection)); base::BindOnce(&Proxy::OnAllAppCacheInfoReady, this, collection));
} }
} }
......
...@@ -34,8 +34,8 @@ namespace content { ...@@ -34,8 +34,8 @@ namespace content {
namespace { namespace {
void DeferredCallback(const net::CompletionCallback& callback, int rv) { void DeferredCallback(OnceCompletionCallback callback, int rv) {
callback.Run(rv); std::move(callback).Run(rv);
} }
} // namespace } // namespace
...@@ -49,9 +49,8 @@ AppCacheInfoCollection::~AppCacheInfoCollection() {} ...@@ -49,9 +49,8 @@ AppCacheInfoCollection::~AppCacheInfoCollection() {}
class AppCacheServiceImpl::AsyncHelper class AppCacheServiceImpl::AsyncHelper
: public AppCacheStorage::Delegate { : public AppCacheStorage::Delegate {
public: public:
AsyncHelper(AppCacheServiceImpl* service, AsyncHelper(AppCacheServiceImpl* service, OnceCompletionCallback callback)
const net::CompletionCallback& callback) : service_(service), callback_(std::move(callback)) {
: service_(service), callback_(callback) {
service_->pending_helpers_[this] = base::WrapUnique(this); service_->pending_helpers_[this] = base::WrapUnique(this);
} }
...@@ -70,19 +69,19 @@ class AppCacheServiceImpl::AsyncHelper ...@@ -70,19 +69,19 @@ class AppCacheServiceImpl::AsyncHelper
if (!callback_.is_null()) { if (!callback_.is_null()) {
// Defer to guarantee async completion. // Defer to guarantee async completion.
base::SequencedTaskRunnerHandle::Get()->PostTask( base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(&DeferredCallback, callback_, rv)); FROM_HERE,
base::BindOnce(&DeferredCallback, std::move(callback_), rv));
} }
callback_.Reset(); callback_.Reset();
} }
AppCacheServiceImpl* service_; AppCacheServiceImpl* service_;
net::CompletionCallback callback_; OnceCompletionCallback callback_;
}; };
void AppCacheServiceImpl::AsyncHelper::Cancel() { void AppCacheServiceImpl::AsyncHelper::Cancel() {
if (!callback_.is_null()) { if (!callback_.is_null()) {
callback_.Run(net::ERR_ABORTED); std::move(callback_).Run(net::ERR_ABORTED);
callback_.Reset();
} }
service_->storage()->CancelDelegateCallbacks(this); service_->storage()->CancelDelegateCallbacks(this);
service_ = nullptr; service_ = nullptr;
...@@ -231,11 +230,10 @@ void AppCacheServiceImpl::DeleteOriginHelper::CacheCompleted(bool success) { ...@@ -231,11 +230,10 @@ void AppCacheServiceImpl::DeleteOriginHelper::CacheCompleted(bool success) {
class AppCacheServiceImpl::GetInfoHelper : AsyncHelper { class AppCacheServiceImpl::GetInfoHelper : AsyncHelper {
public: public:
GetInfoHelper( GetInfoHelper(AppCacheServiceImpl* service,
AppCacheServiceImpl* service, AppCacheInfoCollection* collection, AppCacheInfoCollection* collection,
const net::CompletionCallback& callback) OnceCompletionCallback callback)
: AsyncHelper(service, callback), collection_(collection) { : AsyncHelper(service, std::move(callback)), collection_(collection) {}
}
void Start() override { service_->storage()->GetAllInfo(this); } void Start() override { service_->storage()->GetAllInfo(this); }
...@@ -480,11 +478,11 @@ void AppCacheServiceImpl::Reinitialize() { ...@@ -480,11 +478,11 @@ void AppCacheServiceImpl::Reinitialize() {
Initialize(cache_directory_); Initialize(cache_directory_);
} }
void AppCacheServiceImpl::GetAllAppCacheInfo( void AppCacheServiceImpl::GetAllAppCacheInfo(AppCacheInfoCollection* collection,
AppCacheInfoCollection* collection, OnceCompletionCallback callback) {
const net::CompletionCallback& callback) {
DCHECK(collection); DCHECK(collection);
GetInfoHelper* helper = new GetInfoHelper(this, collection, callback); GetInfoHelper* helper =
new GetInfoHelper(this, collection, std::move(callback));
helper->Start(); helper->Start();
} }
......
...@@ -103,7 +103,7 @@ class CONTENT_EXPORT AppCacheServiceImpl ...@@ -103,7 +103,7 @@ class CONTENT_EXPORT AppCacheServiceImpl
// AppCacheService implementation: // AppCacheService implementation:
void GetAllAppCacheInfo(AppCacheInfoCollection* collection, void GetAllAppCacheInfo(AppCacheInfoCollection* collection,
const net::CompletionCallback& callback) override; OnceCompletionCallback callback) override;
void DeleteAppCacheGroup(const GURL& manifest_url, void DeleteAppCacheGroup(const GURL& manifest_url,
const net::CompletionCallback& callback) override; const net::CompletionCallback& callback) override;
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
namespace content { namespace content {
typedef base::OnceCallback<void(int)> OnceCompletionCallback;
// Refcounted container to avoid copying the collection in callbacks. // Refcounted container to avoid copying the collection in callbacks.
struct CONTENT_EXPORT AppCacheInfoCollection struct CONTENT_EXPORT AppCacheInfoCollection
: public base::RefCountedThreadSafe<AppCacheInfoCollection> { : public base::RefCountedThreadSafe<AppCacheInfoCollection> {
...@@ -37,7 +39,7 @@ class CONTENT_EXPORT AppCacheService { ...@@ -37,7 +39,7 @@ class CONTENT_EXPORT AppCacheService {
// acquires a reference to the 'collection' until completion. // acquires a reference to the 'collection' until completion.
// This method always completes asynchronously. // This method always completes asynchronously.
virtual void GetAllAppCacheInfo(AppCacheInfoCollection* collection, virtual void GetAllAppCacheInfo(AppCacheInfoCollection* collection,
const net::CompletionCallback& callback) = 0; OnceCompletionCallback callback) = 0;
// Deletes the group identified by 'manifest_url', 'callback' is // Deletes the group identified by 'manifest_url', 'callback' is
// invoked upon completion. Upon completion, the cache group and // invoked upon completion. Upon completion, the cache group and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment