Chromium Code Reviews| Index: content/browser/service_worker/service_worker_register_job.cc |
| diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc |
| index 9d1a83d3101eee6415372ca52400865016b61039..bd85af2f7eb92cda842d91cf822e10dcd409d301 100644 |
| --- a/content/browser/service_worker/service_worker_register_job.cc |
| +++ b/content/browser/service_worker/service_worker_register_job.cc |
| @@ -183,6 +183,7 @@ void ServiceWorkerRegisterJob::ContinueWithRegistration( |
| if (existing_registration.get() && |
| existing_registration->script_url() == script_url_) { |
| set_registration(existing_registration); |
| + AssociateProviderHostToRegistration(existing_registration); |
|
michaeln
2014/08/05 23:57:16
Not sure this is needed in the existing registrati
nhiroki
2014/08/06 06:57:27
I think you are correct. All existing documents sh
|
| // If there's no active version, go ahead to Update (this isn't in the spec |
| // but seems reasonable, and without SoftUpdate implemented we can never |
| // Update otherwise). |
| @@ -247,6 +248,7 @@ void ServiceWorkerRegisterJob::RegisterAndContinue( |
| set_registration(new ServiceWorkerRegistration( |
| pattern_, script_url_, context_->storage()->NewRegistrationId(), |
| context_)); |
| + AssociateProviderHostToRegistration(registration()); |
| UpdateAndContinue(); |
| } |
| @@ -296,7 +298,6 @@ void ServiceWorkerRegisterJob::InstallAndContinue() { |
| // "3. Set registration.installingWorker to worker." |
| registration()->SetInstallingVersion(new_version()); |
| - AssociateInstallingVersionToDocuments(context_, new_version()); |
| // "4. Run the [[UpdateState]] algorithm passing registration.installingWorker |
| // and "installing" as the arguments." |
| @@ -346,9 +347,7 @@ void ServiceWorkerRegisterJob::OnStoreRegistrationComplete( |
| // "10. Set registration.waitingWorker to registration.installingWorker." |
| // "11. Set registration.installingWorker to null." |
| - DisassociateVersionFromDocuments(context_, new_version()); |
| registration()->SetWaitingVersion(new_version()); |
| - AssociateWaitingVersionToDocuments(context_, new_version()); |
| // "12. Run the [[UpdateState]] algorithm passing registration.waitingWorker |
| // and "installed" as the arguments." |
| @@ -374,7 +373,6 @@ void ServiceWorkerRegisterJob::CompleteInternal( |
| if (status != SERVICE_WORKER_OK) { |
| if (registration()) { |
| if (new_version()) { |
| - DisassociateVersionFromDocuments(context_, new_version()); |
| registration()->UnsetVersion(new_version()); |
| new_version()->Doom(); |
| } |
| @@ -453,77 +451,19 @@ void ServiceWorkerRegisterJob::OnCompareScriptResourcesComplete( |
| new_version()->embedded_worker()->RemoveListener(this); |
| } |
| -// static |
| -void ServiceWorkerRegisterJob::AssociateInstallingVersionToDocuments( |
| - base::WeakPtr<ServiceWorkerContextCore> context, |
| - ServiceWorkerVersion* version) { |
| - DCHECK(context); |
| - DCHECK(version); |
| - |
| - for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| - context->GetProviderHostIterator(); |
| - !it->IsAtEnd(); it->Advance()) { |
| - ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| - if (ServiceWorkerUtils::ScopeMatches(version->scope(), |
| - host->document_url())) { |
| - if (!host->CanAssociateVersion(version)) |
| - continue; |
| - host->SetInstallingVersion(version); |
| - } |
| - } |
| -} |
| - |
| -// static |
| -void ServiceWorkerRegisterJob::AssociateWaitingVersionToDocuments( |
| - base::WeakPtr<ServiceWorkerContextCore> context, |
| - ServiceWorkerVersion* version) { |
| - DCHECK(context); |
| - DCHECK(version); |
| - |
| - for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| - context->GetProviderHostIterator(); |
| - !it->IsAtEnd(); it->Advance()) { |
| - ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| - if (ServiceWorkerUtils::ScopeMatches(version->scope(), |
| - host->document_url())) { |
| - if (!host->CanAssociateVersion(version)) |
| - continue; |
| - host->SetWaitingVersion(version); |
| - } |
| - } |
| -} |
| - |
| -// static |
| -void ServiceWorkerRegisterJob::AssociateActiveVersionToDocuments( |
| - base::WeakPtr<ServiceWorkerContextCore> context, |
| - ServiceWorkerVersion* version) { |
| - DCHECK(context); |
| - DCHECK(version); |
| - |
| +void ServiceWorkerRegisterJob::AssociateProviderHostToRegistration( |
| + ServiceWorkerRegistration* registration) { |
| + DCHECK(registration); |
| for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| - context->GetProviderHostIterator(); |
| + context_->GetProviderHostIterator(); |
| !it->IsAtEnd(); it->Advance()) { |
| ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| - if (ServiceWorkerUtils::ScopeMatches(version->scope(), |
| + if (ServiceWorkerUtils::ScopeMatches(registration->pattern(), |
| host->document_url())) { |
| - if (!host->CanAssociateVersion(version)) |
| - continue; |
| - host->SetActiveVersion(version); |
| + if (host->CanAssociateRegistration()) |
| + host->SetRegistration(registration); |
| } |
| } |
| } |
| -// static |
| -void ServiceWorkerRegisterJob::DisassociateVersionFromDocuments( |
| - base::WeakPtr<ServiceWorkerContextCore> context, |
| - ServiceWorkerVersion* version) { |
| - DCHECK(context); |
| - for (scoped_ptr<ServiceWorkerContextCore::ProviderHostIterator> it = |
| - context->GetProviderHostIterator(); |
| - !it->IsAtEnd(); it->Advance()) { |
| - ServiceWorkerProviderHost* host = it->GetProviderHost(); |
| - host->UnsetVersion(version); |
| - } |
| -} |
| - |
| } // namespace content |