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()); |