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

Unified Diff: content/browser/service_worker/service_worker_storage.h

Issue 1152543002: ServiceWorker: Migrate the script cache backend from BlockFile to Simple (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 6 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: 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 0b4e96310c73a5490466769b1b4acb8f40463d7a..87788e83d853acf2ae2d1dfc7a4586f7ae5b576e 100644
--- a/content/browser/service_worker/service_worker_storage.h
+++ b/content/browser/service_worker/service_worker_storage.h
@@ -18,6 +18,7 @@
#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_metrics.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"
@@ -37,6 +38,7 @@ namespace content {
class ServiceWorkerContextCore;
class ServiceWorkerDiskCache;
+class ServiceWorkerDiskCacheMigrator;
class ServiceWorkerRegistration;
class ServiceWorkerResponseMetadataWriter;
class ServiceWorkerResponseReader;
@@ -213,11 +215,18 @@ class CONTENT_EXPORT ServiceWorkerStorage
friend class ServiceWorkerResourceStorageTest;
friend class ServiceWorkerControlleeRequestHandlerTest;
friend class ServiceWorkerContextRequestHandlerTest;
+ friend class ServiceWorkerDiskCacheMigratorTest;
friend class ServiceWorkerRequestHandlerTest;
friend class ServiceWorkerURLRequestJobTest;
friend class ServiceWorkerVersionBrowserTest;
friend class ServiceWorkerVersionTest;
friend class ServiceWorkerWriteToCacheJobTest;
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDiskCacheMigratorTest,
+ MigrateOnDiskCacheAccess);
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDiskCacheMigratorTest,
+ NotMigrateOnDatabaseAccess);
+ FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDiskCacheMigratorTest,
+ NotMigrateForEmptyDatabase);
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDispatcherHostTest,
CleanupOnRendererCrash);
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerResourceStorageTest,
@@ -238,6 +247,8 @@ class CONTENT_EXPORT ServiceWorkerStorage
int64 next_version_id;
int64 next_resource_id;
std::set<GURL> origins;
+ bool disk_cache_migration_needed;
+ bool old_disk_cache_deletion_needed;
InitialData();
~InitialData();
@@ -256,9 +267,11 @@ class CONTENT_EXPORT ServiceWorkerStorage
typedef std::vector<ServiceWorkerDatabase::RegistrationData> RegistrationList;
typedef std::map<int64, scoped_refptr<ServiceWorkerRegistration> >
RegistrationRefsById;
- typedef base::Callback<void(
- InitialData* data,
- ServiceWorkerDatabase::Status status)> InitializeCallback;
+ typedef base::Callback<void(InitialData* data,
+ ServiceWorkerDatabase::Status status)>
+ InitializeCallback;
+ typedef base::Callback<void(ServiceWorkerDatabase::Status status)>
+ DatabaseStatusCallback;
typedef base::Callback<void(
const GURL& origin,
const ServiceWorkerDatabase::RegistrationData& deleted_version_data,
@@ -295,13 +308,16 @@ class CONTENT_EXPORT ServiceWorkerStorage
base::FilePath GetDatabasePath();
base::FilePath GetDiskCachePath();
- // Loads the registration data from backend storage. This must be called
- // before any method that requires registration data.
+ // Returns a path to an old diskcache backed with BlockFile. This is used for
+ // the diskcache migration (see service_worker_disk_cache_migrator.h).
+ // TODO(nhiroki): Remove this after several milestones pass
+ // (http://crbug.com/487482)
+ base::FilePath GetOldDiskCachePath();
+
bool LazyInitialize(
const base::Closure& callback);
- void DidReadInitialData(
- InitialData* data,
- ServiceWorkerDatabase::Status status);
+ void DidReadInitialData(InitialData* data,
+ ServiceWorkerDatabase::Status status);
void DidFindRegistrationForDocument(
const GURL& document_url,
const FindRegistrationCallback& callback,
@@ -376,6 +392,11 @@ class CONTENT_EXPORT ServiceWorkerStorage
// Lazy disk_cache getter.
ServiceWorkerDiskCache* disk_cache();
+ void MigrateDiskCache();
+ void DidMigrateDiskCache(ServiceWorkerStatusCode status);
+ void DidSetDiskCacheMigrationNotNeeded(ServiceWorkerDatabase::Status status);
+ void OnDiskCacheMigrationFailed();
+ void InitializeDiskCache();
void OnDiskCacheInitialized(int rv);
void StartPurgingResources(const std::vector<int64>& ids);
@@ -402,6 +423,8 @@ class CONTENT_EXPORT ServiceWorkerStorage
ServiceWorkerDatabase* database,
scoped_refptr<base::SequencedTaskRunner> original_task_runner,
const InitializeCallback& callback);
+ static void DeleteOldDiskCacheInDB(ServiceWorkerDatabase* database,
+ const base::FilePath& disk_cache_path);
static void DeleteRegistrationFromDB(
ServiceWorkerDatabase* database,
scoped_refptr<base::SequencedTaskRunner> original_task_runner,
@@ -490,7 +513,12 @@ class CONTENT_EXPORT ServiceWorkerStorage
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_;
+ scoped_ptr<ServiceWorkerDiskCacheMigrator> disk_cache_migrator_;
+ bool disk_cache_migration_needed_;
+ bool old_disk_cache_deletion_needed_;
+
std::deque<int64> purgeable_resource_ids_;
bool is_purge_pending_;
bool has_checked_for_stale_resources_;
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.cc ('k') | content/browser/service_worker/service_worker_storage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698