Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(513)

Unified Diff: webkit/appcache/appcache_storage_impl.cc

Issue 7210006: AppCaches which belong to hosted apps are not protected from deletion (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Test beautification. Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698