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

Unified Diff: webkit/appcache/appcache_service.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_service.cc
diff --git a/webkit/appcache/appcache_service.cc b/webkit/appcache/appcache_service.cc
index bc0f4cc17207a60a3d94bbb10b5f744859de110a..57ba00d2337dcba7da97ba0e8c49836f4a4001a4 100644
--- a/webkit/appcache/appcache_service.cc
+++ b/webkit/appcache/appcache_service.cc
@@ -110,12 +110,16 @@ class AppCacheService::DeleteHelper : public AsyncHelper {
public:
DeleteHelper(
AppCacheService* service, const GURL& manifest_url,
- net::CompletionCallback* callback)
- : AsyncHelper(service, callback), manifest_url_(manifest_url) {
+ net::CompletionCallback* callback, bool sync)
+ : AsyncHelper(service, callback), manifest_url_(manifest_url),
+ sync_(sync) {
}
virtual void Start() {
- service_->storage()->LoadOrCreateGroup(manifest_url_, this);
+ if (sync_)
+ service_->storage()->SyncLoadOrCreateGroup(manifest_url_, this);
+ else
+ service_->storage()->LoadOrCreateGroup(manifest_url_, this);
}
private:
@@ -126,6 +130,8 @@ class AppCacheService::DeleteHelper : public AsyncHelper {
appcache::AppCacheGroup* group, bool success);
GURL manifest_url_;
+ bool sync_;
+
DISALLOW_COPY_AND_ASSIGN(DeleteHelper);
};
@@ -134,16 +140,21 @@ void AppCacheService::DeleteHelper::OnGroupLoaded(
if (group) {
group->set_being_deleted(true);
group->CancelUpdate();
- service_->storage()->MakeGroupObsolete(group, this);
+ if (sync_)
+ service_->storage()->SyncMakeGroupObsolete(group, this);
+ else
+ service_->storage()->MakeGroupObsolete(group, this);
} else {
- CallCallback(net::ERR_FAILED);
+ if (!sync_)
+ CallCallback(net::ERR_FAILED);
delete this;
}
}
void AppCacheService::DeleteHelper::OnGroupMadeObsolete(
appcache::AppCacheGroup* group, bool success) {
- CallCallback(success ? net::OK : net::ERR_FAILED);
+ if (!sync_)
+ CallCallback(success ? net::OK : net::ERR_FAILED);
delete this;
}
@@ -243,12 +254,15 @@ class AppCacheService::GetInfoHelper : AsyncHelper {
public:
GetInfoHelper(
AppCacheService* service, AppCacheInfoCollection* collection,
- net::CompletionCallback* callback)
- : AsyncHelper(service, callback), collection_(collection) {
+ net::CompletionCallback* callback, bool sync)
+ : AsyncHelper(service, callback), collection_(collection), sync_(sync) {
}
virtual void Start() {
- service_->storage()->GetAllInfo(this);
+ if (sync_)
+ service_->storage()->SyncGetAllInfo(this);
+ else
+ service_->storage()->GetAllInfo(this);
}
private:
@@ -256,6 +270,8 @@ class AppCacheService::GetInfoHelper : AsyncHelper {
virtual void OnAllInfo(AppCacheInfoCollection* collection);
scoped_refptr<AppCacheInfoCollection> collection_;
+ bool sync_;
+
DISALLOW_COPY_AND_ASSIGN(GetInfoHelper);
};
@@ -263,7 +279,8 @@ void AppCacheService::GetInfoHelper::OnAllInfo(
AppCacheInfoCollection* collection) {
if (collection)
collection->infos_by_origin.swap(collection_->infos_by_origin);
- CallCallback(collection ? net::OK : net::ERR_FAILED);
+ if (!sync_)
+ CallCallback(collection ? net::OK : net::ERR_FAILED);
delete this;
}
@@ -309,13 +326,25 @@ void AppCacheService::CanHandleMainResourceOffline(
void AppCacheService::GetAllAppCacheInfo(AppCacheInfoCollection* collection,
net::CompletionCallback* callback) {
DCHECK(collection);
- GetInfoHelper* helper = new GetInfoHelper(this, collection, callback);
+ GetInfoHelper* helper = new GetInfoHelper(this, collection, callback, false);
+ helper->Start();
+}
+
+void AppCacheService::SyncGetAllAppCacheInfo(
+ AppCacheInfoCollection* collection) {
+ DCHECK(collection);
+ GetInfoHelper* helper = new GetInfoHelper(this, collection, NULL, true);
helper->Start();
}
void AppCacheService::DeleteAppCacheGroup(const GURL& manifest_url,
net::CompletionCallback* callback) {
- DeleteHelper* helper = new DeleteHelper(this, manifest_url, callback);
+ DeleteHelper* helper = new DeleteHelper(this, manifest_url, callback, false);
+ helper->Start();
+}
+
+void AppCacheService::SyncDeleteAppCacheGroup(const GURL& manifest_url) {
+ DeleteHelper* helper = new DeleteHelper(this, manifest_url, NULL, true);
helper->Start();
}

Powered by Google App Engine
This is Rietveld 408576698