| 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..6a1a492b3dba5051b48f06969b17d1dc9e23e7c6 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,7 @@ class CONTENT_EXPORT ServiceWorkerStorage
|
| int64 next_version_id;
|
| int64 next_resource_id;
|
| std::set<GURL> origins;
|
| + ServiceWorkerDatabase::DiskCacheMigrationState migration_state;
|
|
|
| InitialData();
|
| ~InitialData();
|
| @@ -256,9 +266,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 +307,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,
|
| @@ -364,6 +379,10 @@ class CONTENT_EXPORT ServiceWorkerStorage
|
| const ServiceWorkerDatabase::RegistrationData& data,
|
| const ResourceList& resources);
|
|
|
| + // |continuation| is called only when |status| is OK.
|
| + void DidWriteDatabase(const base::Closure& continuation,
|
| + ServiceWorkerDatabase::Status status);
|
| +
|
| scoped_refptr<ServiceWorkerRegistration> GetOrCreateRegistration(
|
| const ServiceWorkerDatabase::RegistrationData& data,
|
| const ResourceList& resources);
|
| @@ -376,6 +395,9 @@ class CONTENT_EXPORT ServiceWorkerStorage
|
|
|
| // Lazy disk_cache getter.
|
| ServiceWorkerDiskCache* disk_cache();
|
| + void MigrateDiskCache();
|
| + void DidMigrateDiskCache(ServiceWorkerStatusCode status);
|
| + void InitializeDiskCache();
|
| void OnDiskCacheInitialized(int rv);
|
|
|
| void StartPurgingResources(const std::vector<int64>& ids);
|
| @@ -402,6 +424,11 @@ class CONTENT_EXPORT ServiceWorkerStorage
|
| ServiceWorkerDatabase* database,
|
| scoped_refptr<base::SequencedTaskRunner> original_task_runner,
|
| const InitializeCallback& callback);
|
| + static void DeleteOldDiskCacheInDB(
|
| + ServiceWorkerDatabase* database,
|
| + scoped_refptr<base::SequencedTaskRunner> original_task_runner,
|
| + const base::FilePath& disk_cache_path,
|
| + const DatabaseStatusCallback& callback);
|
| static void DeleteRegistrationFromDB(
|
| ServiceWorkerDatabase* database,
|
| scoped_refptr<base::SequencedTaskRunner> original_task_runner,
|
| @@ -490,7 +517,11 @@ 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_;
|
| + ServiceWorkerDatabase::DiskCacheMigrationState disk_cache_migration_state_;
|
| +
|
| std::deque<int64> purgeable_resource_ids_;
|
| bool is_purge_pending_;
|
| bool has_checked_for_stale_resources_;
|
|
|