Index: content/browser/service_worker/service_worker_storage.h |
diff --git a/content/browser/service_worker/service_worker_storage.h b/content/browser/service_worker/service_worker_storage.h |
index 4d37c77598386ea4978f557ee8d1f801d1f41e5e..6c2853f46f05dc1d1906d51e42aeacb7c3afe992 100644 |
--- a/content/browser/service_worker/service_worker_storage.h |
+++ b/content/browser/service_worker/service_worker_storage.h |
@@ -16,6 +16,7 @@ |
#include "base/memory/scoped_vector.h" |
#include "base/memory/weak_ptr.h" |
#include "content/browser/service_worker/service_worker_database.h" |
+#include "content/browser/service_worker/service_worker_database_task_manager.h" |
#include "content/browser/service_worker/service_worker_version.h" |
#include "content/common/content_export.h" |
#include "content/common/service_worker/service_worker_status_code.h" |
@@ -28,6 +29,7 @@ class SingleThreadTaskRunner; |
namespace storage { |
class QuotaManagerProxy; |
+class SpecialStoragePolicy; |
} |
namespace content { |
@@ -61,9 +63,10 @@ class CONTENT_EXPORT ServiceWorkerStorage |
static scoped_ptr<ServiceWorkerStorage> Create( |
const base::FilePath& path, |
base::WeakPtr<ServiceWorkerContextCore> context, |
- const scoped_refptr<base::SequencedTaskRunner>& database_task_runner, |
+ scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, |
const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread, |
- storage::QuotaManagerProxy* quota_manager_proxy); |
+ storage::QuotaManagerProxy* quota_manager_proxy, |
+ storage::SpecialStoragePolicy* special_storage_policy); |
// Used for DeleteAndStartOver. Creates new storage based on |old_storage|. |
static scoped_ptr<ServiceWorkerStorage> Create( |
@@ -175,6 +178,8 @@ class CONTENT_EXPORT ServiceWorkerStorage |
UpdateRegistration); |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerResourceStorageDiskTest, |
CleanupOnRestart); |
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerResourceStorageDiskTest, |
+ ClearOnExit); |
struct InitialData { |
int64 next_registration_id; |
@@ -223,9 +228,10 @@ class CONTENT_EXPORT ServiceWorkerStorage |
ServiceWorkerStorage( |
const base::FilePath& path, |
base::WeakPtr<ServiceWorkerContextCore> context, |
- const scoped_refptr<base::SequencedTaskRunner>& database_task_runner, |
+ scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, |
const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread, |
- storage::QuotaManagerProxy* quota_manager_proxy); |
+ storage::QuotaManagerProxy* quota_manager_proxy, |
+ storage::SpecialStoragePolicy* special_storage_policy); |
base::FilePath GetDatabasePath(); |
base::FilePath GetDiskCachePath(); |
@@ -303,6 +309,8 @@ class CONTENT_EXPORT ServiceWorkerStorage |
void DidCollectStaleResources(const std::vector<int64>& stale_resource_ids, |
ServiceWorkerDatabase::Status status); |
+ void ClearSessionOnlyOrigins(); |
+ |
// Static cross-thread helpers. |
static void CollectStaleResourcesFromDB( |
ServiceWorkerDatabase* database, |
@@ -340,6 +348,9 @@ class CONTENT_EXPORT ServiceWorkerStorage |
int64 registration_id, |
const GURL& origin, |
const FindInDBCallback& callback); |
+ static void DeleteAllDataForOriginsFromDB( |
+ ServiceWorkerDatabase* database, |
+ const std::set<GURL>& origins); |
void ScheduleDeleteAndStartOver(); |
void DidDeleteDatabase( |
@@ -374,12 +385,13 @@ class CONTENT_EXPORT ServiceWorkerStorage |
base::FilePath path_; |
base::WeakPtr<ServiceWorkerContextCore> context_; |
- // Only accessed on |database_task_runner_|. |
+ // Only accessed using |database_task_manager_|. |
scoped_ptr<ServiceWorkerDatabase> database_; |
- scoped_refptr<base::SequencedTaskRunner> database_task_runner_; |
+ scoped_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager_; |
scoped_refptr<base::SingleThreadTaskRunner> disk_cache_thread_; |
scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_; |
+ scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy_; |
scoped_ptr<ServiceWorkerDiskCache> disk_cache_; |
std::deque<int64> purgeable_resource_ids_; |
bool is_purge_pending_; |