| Index: webkit/appcache/appcache_storage_impl.cc
|
| diff --git a/webkit/appcache/appcache_storage_impl.cc b/webkit/appcache/appcache_storage_impl.cc
|
| index 6b7d04d148979f8ba367ba50f4d508eb264ae61f..cca3f086701c3e56c0d56880403610a798eb0f35 100644
|
| --- a/webkit/appcache/appcache_storage_impl.cc
|
| +++ b/webkit/appcache/appcache_storage_impl.cc
|
| @@ -1127,6 +1127,14 @@ void AppCacheStorageImpl::GetAllInfo(Delegate* delegate) {
|
| task->Schedule();
|
| }
|
|
|
| +void AppCacheStorageImpl::SyncGetAllInfo(Delegate* delegate) {
|
| + DCHECK(delegate);
|
| + scoped_refptr<GetAllInfoTask> task(new GetAllInfoTask(this));
|
| + task->AddDelegate(GetOrCreateDelegateReference(delegate));
|
| + task->Run();
|
| + task->RunCompleted();
|
| +}
|
| +
|
| void AppCacheStorageImpl::LoadCache(int64 id, Delegate* delegate) {
|
| DCHECK(delegate);
|
| if (is_disabled_) {
|
| @@ -1194,6 +1202,39 @@ void AppCacheStorageImpl::LoadOrCreateGroup(
|
| pending_group_loads_[manifest_url] = task.get();
|
| }
|
|
|
| +void AppCacheStorageImpl::SyncLoadOrCreateGroup(
|
| + const GURL& manifest_url, Delegate* delegate) {
|
| + DCHECK(delegate);
|
| + if (is_disabled_) {
|
| + delegate->OnGroupLoaded(NULL, manifest_url);
|
| + return;
|
| + }
|
| +
|
| + AppCacheGroup* group = working_set_.GetGroup(manifest_url);
|
| + if (group) {
|
| + delegate->OnGroupLoaded(group, manifest_url);
|
| + scoped_refptr<DatabaseTask> update_task(
|
| + new UpdateGroupLastAccessTimeTask(
|
| + this, group, base::Time::Now()));
|
| + update_task->Run();
|
| + update_task->RunCompleted();
|
| + return;
|
| + }
|
| +
|
| + if (usage_map_.find(manifest_url.GetOrigin()) == usage_map_.end()) {
|
| + // No need to query the database, return a new group immediately.
|
| + scoped_refptr<AppCacheGroup> group(new AppCacheGroup(
|
| + service_, manifest_url, NewGroupId()));
|
| + delegate->OnGroupLoaded(group, manifest_url);
|
| + return;
|
| + }
|
| +
|
| + scoped_refptr<GroupLoadTask> task = new GroupLoadTask(manifest_url, this);
|
| + task->AddDelegate(GetOrCreateDelegateReference(delegate));
|
| + task->Run();
|
| + task->RunCompleted();
|
| +}
|
| +
|
| void AppCacheStorageImpl::StoreGroupAndNewestCache(
|
| AppCacheGroup* group, AppCache* newest_cache, Delegate* delegate) {
|
| // TODO(michaeln): distinguish between a simple update of an existing
|
| @@ -1373,6 +1414,16 @@ void AppCacheStorageImpl::MakeGroupObsolete(
|
| task->Schedule();
|
| }
|
|
|
| +void AppCacheStorageImpl::SyncMakeGroupObsolete(
|
| + AppCacheGroup* group, Delegate* delegate) {
|
| + DCHECK(group && delegate);
|
| + scoped_refptr<MakeGroupObsoleteTask> task(
|
| + new MakeGroupObsoleteTask(this, group));
|
| + task->AddDelegate(GetOrCreateDelegateReference(delegate));
|
| + task->Run();
|
| + task->RunCompleted();
|
| +}
|
| +
|
| AppCacheResponseReader* AppCacheStorageImpl::CreateResponseReader(
|
| const GURL& manifest_url, int64 response_id) {
|
| return new AppCacheResponseReader(response_id, disk_cache());
|
|
|