Skip to content
This repository has been archived by the owner on Jul 18, 2018. It is now read-only.

Commit

Permalink
Correct the skip-waiting-installed.html behavior
Browse files Browse the repository at this point in the history
According to the latest spec, the skipWaiting promise should be resolved
after 'activate' event is dispatched. This change is from
w3c/ServiceWorker#1065.

Tracing through the spec, skipWaiting() enters "Try Activate".
"Try Activate" invokes "Activate". "Activate" blocks until the final step:
"13. Run the Update Worker State algorithm passing registration’s active
worker and activated as the arguments."

"Update Worker State" queues a task to set ServiceWorker#state to 'activated'.
But in step 10, we have dispatched the 'activate' event. Therefore the order
should be:
1. 'activate' event handler runs
2. skipWaiting() promise resolves
3. ServiceWorker#state is set to 'activated'

So we correct the test case here and delete all the wrong expected files.

BUG=725616

Change-Id: Id0765988c7cdf48f39bb73ccb3fc0cce6ea60949
Reviewed-on: https://chromium-review.googlesource.com/646244
Commit-Queue: Matt Falkenhagen <[email protected]>
Reviewed-by: Matt Falkenhagen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#499513}
  • Loading branch information
xzhan96 authored and Commit Bot committed Sep 4, 2017
1 parent e385f33 commit da03deb
Show file tree
Hide file tree
Showing 8 changed files with 10 additions and 135 deletions.
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
self.state = 'starting';

self.addEventListener('install', function() {
self.state = 'installing';
});
var saw_activate_event = false

self.addEventListener('activate', function() {
self.state = 'activating';
saw_activate_event = true;
});

self.addEventListener('message', function(event) {
var port = event.data.port;
if (self.state !== 'installing') {
port.postMessage('FAIL: Worker should be waiting in installed state');
return;
}
event.waitUntil(self.skipWaiting()
.then(function(result) {
if (result !== undefined) {
port.postMessage('FAIL: Promise should be resolved with undefined');
return;
}

if (self.state === 'activating') {
if (!saw_activate_event) {
port.postMessage(
'FAIL: Promise should be resolved after activate event is dispatched');
return;
}

if (self.registration.active.state !== 'activating') {
port.postMessage(
'FAIL: Promise should be resolved before worker is activated');
'FAITL: Promise should be resolved before ServiceWorker#state is set to activated');
return;
}

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit da03deb

Please sign in to comment.