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

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

Issue 717353004: ServiceWorker: Add support for .skipWaiting and controllerchange event(2/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: do not replace other registerations Created 6 years, 1 month 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_registration.cc
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index 0445f08f7e646ba73497be4257adeb4d6ad008c3..742486429a8fa1d3e005b4fb5f759ed62bb084b8 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -154,7 +154,8 @@ void ServiceWorkerRegistration::UnsetVersionInternal(
void ServiceWorkerRegistration::ActivateWaitingVersionWhenReady() {
DCHECK(waiting_version());
should_activate_when_ready_ = true;
- if (!active_version() || !active_version()->HasControllee())
+ if (!active_version() || !active_version()->HasControllee()
+ || waiting_version()->skip_waiting())
ActivateWaitingVersion();
}
@@ -210,7 +211,7 @@ void ServiceWorkerRegistration::OnNoControllees(ServiceWorkerVersion* version) {
void ServiceWorkerRegistration::ActivateWaitingVersion() {
DCHECK(context_);
DCHECK(waiting_version());
- DCHECK(should_activate_when_ready_);
+ CHECK(should_activate_when_ready_);
falken 2014/11/19 04:19:56 why not DCHECK?
xiang 2014/11/24 07:04:01 Done.
should_activate_when_ready_ = false;
scoped_refptr<ServiceWorkerVersion> activating_version = waiting_version();
scoped_refptr<ServiceWorkerVersion> exiting_version = active_version();
@@ -220,6 +221,9 @@ void ServiceWorkerRegistration::ActivateWaitingVersion() {
return; // Activation is no longer relevant.
}
+ if (activating_version->skip_waiting())
+ FOR_EACH_OBSERVER(Listener, listeners_, OnSkippedWaiting(this));
+
// "4. If exitingWorker is not null,
if (exiting_version.get()) {
DCHECK(!exiting_version->HasControllee());
@@ -239,10 +243,9 @@ void ServiceWorkerRegistration::ActivateWaitingVersion() {
// "7. Run the [[UpdateState]] algorithm passing registration.activeWorker and
// "activating" as arguments."
+ // "8. Fire a simple event named controllerchange..."
falken 2014/11/19 04:19:56 these line numbers are now out of the sync with th
xiang 2014/11/24 07:04:01 Done.
activating_version->SetStatus(ServiceWorkerVersion::ACTIVATING);
- // TODO(nhiroki): "8. Fire a simple event named controllerchange..."
-
// "9. Queue a task to fire an event named activate..."
activating_version->DispatchActivateEvent(
base::Bind(&ServiceWorkerRegistration::OnActivateEventFinished,

Powered by Google App Engine
This is Rietveld 408576698