| Index: content/browser/service_worker/service_worker_storage.cc
|
| diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc
|
| index c78f2ac8af0d41ff9971dd7c713869c6c14bbb83..1b2005daf12f6b6283b6f66a4ab92c41ca277924 100644
|
| --- a/content/browser/service_worker/service_worker_storage.cc
|
| +++ b/content/browser/service_worker/service_worker_storage.cc
|
| @@ -5,8 +5,10 @@
|
| #include "content/browser/service_worker/service_worker_storage.h"
|
|
|
| #include <string>
|
| +
|
| #include "base/message_loop/message_loop.h"
|
| #include "content/browser/service_worker/service_worker_context_core.h"
|
| +#include "content/browser/service_worker/service_worker_database.pb.h"
|
| #include "content/browser/service_worker/service_worker_info.h"
|
| #include "content/browser/service_worker/service_worker_registration.h"
|
| #include "content/browser/service_worker/service_worker_utils.h"
|
| @@ -25,6 +27,11 @@ void RunSoon(const base::Closure& closure) {
|
| const base::FilePath::CharType kServiceWorkerDirectory[] =
|
| FILE_PATH_LITERAL("ServiceWorker");
|
|
|
| +ServiceWorkerVersion::Status GetVersionStatus(bool is_active) {
|
| + return is_active ? ServiceWorkerVersion::ACTIVE
|
| + : ServiceWorkerVersion::INSTALLED;
|
| +}
|
| +
|
| } // namespace
|
|
|
| ServiceWorkerStorage::ServiceWorkerStorage(
|
| @@ -69,10 +76,10 @@ void ServiceWorkerStorage::FindRegistrationForPattern(
|
| // Find one with a matching scope.
|
| for (RegistrationsMap::const_iterator it = found->second.begin();
|
| it != found->second.end(); ++it) {
|
| - if (scope == it->second.scope) {
|
| - const ServiceWorkerDatabase::RegistrationData* data = &(it->second);
|
| + if (scope == GURL(it->second.scope_url())) {
|
| + const ServiceWorkerRegistrationData* data = &(it->second);
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| - context_->GetLiveRegistration(data->registration_id);
|
| + context_->GetLiveRegistration(data->registration_id());
|
| if (registration) {
|
| RunSoon(base::Bind(
|
| callback, SERVICE_WORKER_OK,
|
| @@ -116,13 +123,14 @@ void ServiceWorkerStorage::FindRegistrationForDocument(
|
| it != found->second.end(); ++it) {
|
| // TODO(michaeln): if there are multiple matches the one with
|
| // the longest scope should win.
|
| - if (ServiceWorkerUtils::ScopeMatches(it->second.scope, document_url)) {
|
| - const ServiceWorkerDatabase::RegistrationData* data = &(it->second);
|
| + if (ServiceWorkerUtils::ScopeMatches(
|
| + GURL(it->second.scope_url()), document_url)) {
|
| + const ServiceWorkerRegistrationData* data = &(it->second);
|
|
|
| // If its in the live map, return syncly to simulate this class having
|
| // iterated over the values in that map instead of reading the db.
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| - context_->GetLiveRegistration(data->registration_id);
|
| + context_->GetLiveRegistration(data->registration_id());
|
| if (registration) {
|
| callback.Run(SERVICE_WORKER_OK, registration);
|
| return;
|
| @@ -186,10 +194,10 @@ void ServiceWorkerStorage::GetAllRegistrations(
|
| continue;
|
| }
|
| ServiceWorkerRegistrationInfo info;
|
| - info.pattern = it->second->scope;
|
| - info.script_url = it->second->script;
|
| + info.pattern = GURL(it->second->scope_url());
|
| + info.script_url = GURL(it->second->script_url());
|
| info.active_version.is_null = false;
|
| - if (it->second->is_active)
|
| + if (it->second->is_active())
|
| info.active_version.status = ServiceWorkerVersion::ACTIVE;
|
| else
|
| info.active_version.status = ServiceWorkerVersion::INSTALLED;
|
| @@ -214,15 +222,14 @@ void ServiceWorkerStorage::StoreRegistration(
|
| // Keep a database struct in the storage map.
|
| RegistrationsMap& storage_map =
|
| stored_registrations_[registration->script_url().GetOrigin()];
|
| - ServiceWorkerDatabase::RegistrationData& data =
|
| - storage_map[registration->id()];
|
| - data.registration_id = registration->id();
|
| - data.scope = registration->pattern();
|
| - data.script = registration->script_url();
|
| - data.has_fetch_handler = true;
|
| - data.version_id = version->version_id();
|
| - data.last_update_check = base::Time::Now();
|
| - data.is_active = false; // initially stored in the waiting state
|
| + ServiceWorkerRegistrationData& data = storage_map[registration->id()];
|
| + data.set_registration_id(registration->id());
|
| + data.set_scope_url(registration->pattern().spec());
|
| + data.set_script_url(registration->script_url().spec());
|
| + data.set_has_fetch_handler(true);
|
| + data.set_version_id(version->version_id());
|
| + data.set_last_update_check_time(base::Time::Now().ToInternalValue());
|
| + data.set_is_active(false); // initially stored in the waiting state
|
|
|
| // Keep a seperate map of ptrs keyed by id only.
|
| registrations_by_id_[registration->id()] = &storage_map[registration->id()];
|
| @@ -230,9 +237,9 @@ void ServiceWorkerStorage::StoreRegistration(
|
| RunSoon(base::Bind(callback, SERVICE_WORKER_OK));
|
| }
|
|
|
| - void ServiceWorkerStorage::UpdateToActiveState(
|
| - ServiceWorkerRegistration* registration,
|
| - const StatusCallback& callback) {
|
| +void ServiceWorkerStorage::UpdateToActiveState(
|
| + ServiceWorkerRegistration* registration,
|
| + const StatusCallback& callback) {
|
| DCHECK(simulated_lazy_initted_);
|
| if (!context_) {
|
| RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_FAILED));
|
| @@ -245,8 +252,8 @@ void ServiceWorkerStorage::StoreRegistration(
|
| RunSoon(base::Bind(callback, SERVICE_WORKER_ERROR_NOT_FOUND));
|
| return;
|
| }
|
| - DCHECK(!found->second->is_active);
|
| - found->second->is_active = true;
|
| + DCHECK(!found->second->is_active());
|
| + found->second->set_is_active(true);
|
| RunSoon(base::Bind(callback, SERVICE_WORKER_OK));
|
| }
|
|
|
| @@ -261,7 +268,7 @@ void ServiceWorkerStorage::DeleteRegistration(
|
| return;
|
| }
|
|
|
| - GURL origin = found->second->script.GetOrigin();
|
| + GURL origin = GURL(found->second->script_url()).GetOrigin();
|
| stored_registrations_[origin].erase(registration_id);
|
| if (stored_registrations_[origin].empty())
|
| stored_registrations_.erase(origin);
|
| @@ -292,17 +299,18 @@ int64 ServiceWorkerStorage::NewResourceId() {
|
|
|
| scoped_refptr<ServiceWorkerRegistration>
|
| ServiceWorkerStorage::CreateRegistration(
|
| - const ServiceWorkerDatabase::RegistrationData* data) {
|
| + const ServiceWorkerRegistrationData* data) {
|
| scoped_refptr<ServiceWorkerRegistration> registration(
|
| new ServiceWorkerRegistration(
|
| - data->scope, data->script, data->registration_id, context_));
|
| + GURL(data->scope_url()), GURL(data->script_url()),
|
| + data->registration_id(), context_));
|
|
|
| scoped_refptr<ServiceWorkerVersion> version =
|
| - context_->GetLiveVersion(data->version_id);
|
| + context_->GetLiveVersion(data->version_id());
|
| if (!version) {
|
| version = new ServiceWorkerVersion(
|
| - registration, data->version_id, context_);
|
| - version->SetStatus(data->GetVersionStatus());
|
| + registration, data->version_id(), context_);
|
| + version->SetStatus(GetVersionStatus(data->is_active()));
|
| }
|
|
|
| if (version->status() == ServiceWorkerVersion::ACTIVE)
|
|
|