Index: third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/skip-waiting-installed-worker.js |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/skip-waiting-installed-worker.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/skip-waiting-installed-worker.js |
index bf582c770744391bfd38bec0da2e7701427c466a..eb63026d5c480ef47e42c8f4b73e1aa3fa79fb2f 100644 |
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/skip-waiting-installed-worker.js |
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/skip-waiting-installed-worker.js |
@@ -4,21 +4,32 @@ self.addEventListener('install', function() { |
self.state = 'installing'; |
}); |
+self.addEventListener('activate', function() { |
+ self.state = 'activating'; |
+ }); |
+ |
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; |
} |
- self.skipWaiting() |
+ event.waitUntil(self.skipWaiting() |
.then(function(result) { |
if (result !== undefined) { |
port.postMessage('FAIL: Promise should be resolved with undefined'); |
return; |
} |
+ |
+ if (self.state === 'activating') { |
+ port.postMessage( |
+ 'FAIL: Promise should be resolved before worker is activated'); |
+ return; |
+ } |
+ |
port.postMessage('PASS'); |
}) |
.catch(function(e) { |
port.postMessage('FAIL: unexpected exception: ' + e); |
- }); |
+ })); |
}); |