 Chromium Code Reviews
 Chromium Code Reviews Issue 62203007:
  Implement memory-persistent registration  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 62203007:
  Implement memory-persistent registration  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: content/browser/service_worker/service_worker_context_core.cc | 
| diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc | 
| index 22ae50070557838d6d3f29d6b7a80abf9bb36805..4eb9d9a448c12cdf5dc3bd7ddcebf178199a4fb4 100644 | 
| --- a/content/browser/service_worker/service_worker_context_core.cc | 
| +++ b/content/browser/service_worker/service_worker_context_core.cc | 
| @@ -6,28 +6,29 @@ | 
| #include "base/command_line.h" | 
| #include "base/files/file_path.h" | 
| +#include "base/strings/string_util.h" | 
| #include "content/browser/service_worker/service_worker_provider_host.h" | 
| +#include "content/browser/service_worker/service_worker_register_job.h" | 
| +#include "content/browser/service_worker/service_worker_registration.h" | 
| +#include "content/browser/service_worker/service_worker_storage.h" | 
| +#include "content/public/browser/browser_thread.h" | 
| #include "content/public/common/content_switches.h" | 
| -#include "webkit/browser/quota/quota_manager.h" | 
| +#include "url/gurl.h" | 
| namespace content { | 
| -namespace { | 
| - | 
| -const base::FilePath::CharType kServiceWorkerDirectory[] = | 
| - FILE_PATH_LITERAL("ServiceWorker"); | 
| - | 
| -} // namespace | 
| - | 
| ServiceWorkerContextCore::ServiceWorkerContextCore( | 
| - const base::FilePath& user_data_directory, | 
| + const base::FilePath& path, | 
| quota::QuotaManagerProxy* quota_manager_proxy) | 
| - : quota_manager_proxy_(quota_manager_proxy) { | 
| - if (!user_data_directory.empty()) | 
| - path_ = user_data_directory.Append(kServiceWorkerDirectory); | 
| -} | 
| + : storage_(new ServiceWorkerStorage(path, quota_manager_proxy)), | 
| + is_shutdown_(false) {} | 
| -ServiceWorkerContextCore::~ServiceWorkerContextCore() { | 
| +ServiceWorkerContextCore::~ServiceWorkerContextCore() { DCHECK(is_shutdown_); } | 
| + | 
| +void ServiceWorkerContextCore::Shutdown() { | 
| + storage_->Shutdown(); | 
| + storage_.reset(); | 
| + is_shutdown_ = true; | 
| } | 
| ServiceWorkerProviderHost* ServiceWorkerContextCore::GetProviderHost( | 
| @@ -67,4 +68,50 @@ bool ServiceWorkerContextCore::IsEnabled() { | 
| switches::kEnableServiceWorker); | 
| } | 
| +void ServiceWorkerContextCore::RegistrationComplete( | 
| + const ServiceWorkerContextCore::RegistrationCallback& callback, | 
| + ServiceWorkerStorage::RegistrationStatus status, | 
| + const scoped_refptr<ServiceWorkerRegistration>& registration) { | 
| + if (status != ServiceWorkerStorage::REGISTRATION_OK) | 
| + callback.Run(REGISTER_FAILED, -1L); | 
| + | 
| + callback.Run(REGISTER_COMPLETE, registration->id()); | 
| +} | 
| + | 
| +void ServiceWorkerContextCore::UnregistrationComplete( | 
| + const UnregistrationCallback& callback, | 
| + ServiceWorkerStorage::RegistrationStatus status) { | 
| + // Unregistering a non-existent registration is a no-op. | 
| + if (status == ServiceWorkerStorage::REGISTRATION_OK || | 
| + status == ServiceWorkerStorage::REGISTRATION_NOT_FOUND) | 
| + callback.Run(UNREGISTER_COMPLETE); | 
| + else | 
| + callback.Run(UNREGISTER_FAILED); | 
| +} | 
| + | 
| +void ServiceWorkerContextCore::RegisterServiceWorker( | 
| 
kinuko
2013/11/27 03:45:23
nit: method order.
 
alecflett
2013/12/02 16:11:35
Done.
 | 
| + const GURL& pattern, | 
| + const GURL& script_url, | 
| + const RegistrationCallback& callback) { | 
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| + | 
| + storage_->Register(pattern, | 
| + script_url, | 
| + base::Bind(&ServiceWorkerContextCore::RegistrationComplete, | 
| + AsWeakPtr(), | 
| + callback)); | 
| +} | 
| + | 
| +void ServiceWorkerContextCore::UnregisterServiceWorker( | 
| + const GURL& pattern, | 
| + const UnregistrationCallback& callback) { | 
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 
| + | 
| + storage_->Unregister( | 
| + pattern, | 
| + base::Bind(&ServiceWorkerContextCore::UnregistrationComplete, | 
| + AsWeakPtr(), | 
| + callback)); | 
| +} | 
| + | 
| } // namespace content |