| Index: webkit/appcache/mock_appcache_storage.cc
|
| diff --git a/webkit/appcache/mock_appcache_storage.cc b/webkit/appcache/mock_appcache_storage.cc
|
| index 8560074aa3266902c7d5d634d32b6c77f4eac441..43533905b60b7f48f96bd9bdc94226909a38831e 100644
|
| --- a/webkit/appcache/mock_appcache_storage.cc
|
| +++ b/webkit/appcache/mock_appcache_storage.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "webkit/appcache/mock_appcache_storage.h"
|
|
|
| +#include "base/bind.h"
|
| #include "base/logging.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/message_loop.h"
|
| @@ -28,7 +29,7 @@ namespace appcache {
|
|
|
| MockAppCacheStorage::MockAppCacheStorage(AppCacheService* service)
|
| : AppCacheStorage(service),
|
| - ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
|
| simulate_make_group_obsolete_failure_(false),
|
| simulate_store_group_and_newest_cache_failure_(false),
|
| simulate_find_main_resource_(false),
|
| @@ -42,22 +43,23 @@ MockAppCacheStorage::MockAppCacheStorage(AppCacheService* service)
|
| }
|
|
|
| MockAppCacheStorage::~MockAppCacheStorage() {
|
| - STLDeleteElements(&pending_tasks_);
|
| }
|
|
|
| void MockAppCacheStorage::GetAllInfo(Delegate* delegate) {
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessGetAllInfo,
|
| - make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessGetAllInfo,
|
| + weak_factory_.GetWeakPtr(),
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| }
|
|
|
| void MockAppCacheStorage::LoadCache(int64 id, Delegate* delegate) {
|
| DCHECK(delegate);
|
| AppCache* cache = working_set_.GetCache(id);
|
| if (ShouldCacheLoadAppearAsync(cache)) {
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessLoadCache,
|
| - id, make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessLoadCache,
|
| + weak_factory_.GetWeakPtr(), id,
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| return;
|
| }
|
| ProcessLoadCache(id, GetOrCreateDelegateReference(delegate));
|
| @@ -68,10 +70,10 @@ void MockAppCacheStorage::LoadOrCreateGroup(
|
| DCHECK(delegate);
|
| AppCacheGroup* group = working_set_.GetGroup(manifest_url);
|
| if (ShouldGroupLoadAppearAsync(group)) {
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessLoadOrCreateGroup,
|
| - manifest_url,
|
| - make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessLoadOrCreateGroup,
|
| + weak_factory_.GetWeakPtr(), manifest_url,
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| return;
|
| }
|
| ProcessLoadOrCreateGroup(
|
| @@ -83,11 +85,11 @@ void MockAppCacheStorage::StoreGroupAndNewestCache(
|
| DCHECK(group && delegate && newest_cache);
|
|
|
| // Always make this operation look async.
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessStoreGroupAndNewestCache,
|
| - make_scoped_refptr(group),
|
| - make_scoped_refptr(newest_cache),
|
| - make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessStoreGroupAndNewestCache,
|
| + weak_factory_.GetWeakPtr(), make_scoped_refptr(group),
|
| + make_scoped_refptr(newest_cache),
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| }
|
|
|
| void MockAppCacheStorage::FindResponseForMainRequest(
|
| @@ -97,10 +99,10 @@ void MockAppCacheStorage::FindResponseForMainRequest(
|
| // Note: MockAppCacheStorage does not respect the preferred_manifest_url.
|
|
|
| // Always make this operation look async.
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessFindResponseForMainRequest,
|
| - url,
|
| - make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessFindResponseForMainRequest,
|
| + weak_factory_.GetWeakPtr(), url,
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| }
|
|
|
| void MockAppCacheStorage::FindResponseForSubRequest(
|
| @@ -140,10 +142,10 @@ void MockAppCacheStorage::MakeGroupObsolete(
|
| DCHECK(group && delegate);
|
|
|
| // Always make this method look async.
|
| - ScheduleTask(method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::ProcessMakeGroupObsolete,
|
| - make_scoped_refptr(group),
|
| - make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| + ScheduleTask(
|
| + base::Bind(&MockAppCacheStorage::ProcessMakeGroupObsolete,
|
| + weak_factory_.GetWeakPtr(), make_scoped_refptr(group),
|
| + make_scoped_refptr(GetOrCreateDelegateReference(delegate))));
|
| }
|
|
|
| AppCacheResponseReader* MockAppCacheStorage::CreateResponseReader(
|
| @@ -405,19 +407,19 @@ void MockAppCacheStorage::ProcessMakeGroupObsolete(
|
| delegate_ref->delegate->OnGroupMadeObsolete(group, true);
|
| }
|
|
|
| -void MockAppCacheStorage::ScheduleTask(Task* task) {
|
| +void MockAppCacheStorage::ScheduleTask(const base::Closure& task) {
|
| pending_tasks_.push_back(task);
|
| - MessageLoop::current()->PostTask(FROM_HERE,
|
| - method_factory_.NewRunnableMethod(
|
| - &MockAppCacheStorage::RunOnePendingTask));
|
| + MessageLoop::current()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&MockAppCacheStorage::RunOnePendingTask,
|
| + weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void MockAppCacheStorage::RunOnePendingTask() {
|
| DCHECK(!pending_tasks_.empty());
|
| - Task* task = pending_tasks_.front();
|
| + base::Closure task = pending_tasks_.front();
|
| pending_tasks_.pop_front();
|
| - task->Run();
|
| - delete task;
|
| + task.Run();
|
| }
|
|
|
| void MockAppCacheStorage::AddStoredCache(AppCache* cache) {
|
|
|