Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Unified Diff: content/browser/service_worker/service_worker_register_job.cc

Issue 354643003: ServiceWorker: Support navigator.serviceWorker.active (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fix Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 05e62bb48b35bd4e7fcbae95aba1ec5fe1abf118..0903cdb8f15ff818a3622e8e5dfdc70d6fae1236 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -344,7 +344,9 @@ void ServiceWorkerRegisterJob::ActivateAndContinue() {
// "5. Set serviceWorkerRegistration.activeWorker to activatingWorker."
// "6. Set serviceWorkerRegistration.waitingWorker to null."
+ DisassociateVersionFromDocuments(context_, new_version());
registration()->SetActiveVersion(new_version());
+ AssociateActiveVersionToDocuments(context_, new_version());
// "7. Run the [[UpdateState]] algorithm passing registration.activeWorker and
// "activating" as arguments."
@@ -483,6 +485,26 @@ void ServiceWorkerRegisterJob::AssociateWaitingVersionToDocuments(
}
// static
+void ServiceWorkerRegisterJob::AssociateActiveVersionToDocuments(
+ 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->SetActiveVersion(version);
+ }
+ }
+}
+
+// static
void ServiceWorkerRegisterJob::DisassociateVersionFromDocuments(
base::WeakPtr<ServiceWorkerContextCore> context,
ServiceWorkerVersion* version) {
« no previous file with comments | « content/browser/service_worker/service_worker_register_job.h ('k') | content/child/service_worker/service_worker_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698