Chromium Code Reviews| Index: content/browser/service_worker/service_worker_context_core.h |
| diff --git a/content/browser/service_worker/service_worker_context_core.h b/content/browser/service_worker/service_worker_context_core.h |
| index 8d6f44250d5da1540880d293bfd9162b0fc16c15..9f1fe22ea06c3563dfa891a9006181bb8d58a33a 100644 |
| --- a/content/browser/service_worker/service_worker_context_core.h |
| +++ b/content/browser/service_worker/service_worker_context_core.h |
| @@ -5,13 +5,19 @@ |
| #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_CONTEXT_CORE_H_ |
| #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_CONTEXT_CORE_H_ |
| +#include <map> |
| + |
| +#include "base/callback.h" |
| #include "base/files/file_path.h" |
| #include "base/id_map.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "content/browser/service_worker/service_worker_provider_host.h" |
| +#include "content/browser/service_worker/service_worker_storage.h" |
| #include "content/common/content_export.h" |
| +class GURL; |
| + |
| namespace base { |
| class FilePath; |
| } |
| @@ -22,6 +28,8 @@ class QuotaManagerProxy; |
| namespace content { |
| +class ServiceWorkerStorage; |
| +class ServiceWorkerRegistration; |
| class ServiceWorkerProviderHost; |
| // This class manages data associated with service workers. |
| @@ -33,10 +41,29 @@ class CONTENT_EXPORT ServiceWorkerContextCore |
| : NON_EXPORTED_BASE( |
| public base::SupportsWeakPtr<ServiceWorkerContextCore>) { |
| public: |
| - // Given an empty |user_data_directory|, nothing will be stored on disk. |
| + // TODO(alecflett): this is a more public enum than the one in |
| + // Storage, and really has to do with running the whole registration |
| + // process in the first place. |
| + enum RegistrationStatus { |
| + REGISTER_COMPLETE, |
| + REGISTER_FAILED, |
| + }; |
| + enum UnregistrationStatus { |
| + UNREGISTER_COMPLETE, |
| + UNREGISTER_FAILED, |
| + }; |
|
kinuko
2013/11/27 03:45:23
Assume that these enums are kind of tentative prob
alecflett
2013/12/02 16:11:35
Done.
|
| + typedef base::Callback<void(RegistrationStatus, int64)> RegistrationCallback; |
|
kinuko
2013/11/27 03:45:23
nit: we can write param names in Callback typedefs
alecflett
2013/12/02 16:11:35
Done.
|
| + typedef base::Callback<void(UnregistrationStatus)> UnregistrationCallback; |
| + |
| + // This is owned by the StoragePartition, which will supply it with |
| + // the local path on disk. Given an empty |user_data_directory|, |
| + // nothing will be stored on disk. |
| ServiceWorkerContextCore(const base::FilePath& user_data_directory, |
| quota::QuotaManagerProxy* quota_manager_proxy); |
| ~ServiceWorkerContextCore(); |
| + void Shutdown(); |
| + |
| + ServiceWorkerStorage* storage() { return storage_.get(); } |
| // The context class owns the set of ProviderHosts. |
| ServiceWorkerProviderHost* GetProviderHost(int process_id, int provider_id); |
| @@ -47,6 +74,15 @@ class CONTENT_EXPORT ServiceWorkerContextCore |
| // Checks the cmdline flag. |
| bool IsEnabled(); |
| + // The callback will be called on the IO thread. |
| + void RegisterServiceWorker(const GURL& pattern, |
| + const GURL& script_url, |
| + const RegistrationCallback& callback); |
| + |
| + // The callback will be called on the IO thread. |
| + void UnregisterServiceWorker(const GURL& pattern, |
| + const UnregistrationCallback& callback); |
| + |
| private: |
| typedef IDMap<ServiceWorkerProviderHost, IDMapOwnPointer> ProviderMap; |
| typedef IDMap<ProviderMap, IDMapOwnPointer> ProcessToProviderMap; |
| @@ -55,9 +91,18 @@ class CONTENT_EXPORT ServiceWorkerContextCore |
| return providers_.Lookup(process_id); |
| } |
| + void RegistrationComplete( |
| + const RegistrationCallback& callback, |
| + ServiceWorkerStorage::RegistrationStatus status, |
| + const scoped_refptr<ServiceWorkerRegistration>& registration); |
| + void UnregistrationComplete(const UnregistrationCallback& callback, |
| + ServiceWorkerStorage::RegistrationStatus status); |
| + |
| ProcessToProviderMap providers_; |
| - scoped_refptr<quota::QuotaManagerProxy> quota_manager_proxy_; |
| - base::FilePath path_; |
| + scoped_ptr<ServiceWorkerStorage> storage_; |
| + bool is_shutdown_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ServiceWorkerContextCore); |
| }; |
| } // namespace content |