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

Unified Diff: chrome/test/data/extensions/api_test/service_worker/update_without_skip_waiting/v2/page.js

Issue 1510573003: Add test without skipWaiting() to demonstrate extension & service worker update. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address nits from falken@ Created 5 years 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: chrome/test/data/extensions/api_test/service_worker/update_without_skip_waiting/v2/page.js
diff --git a/chrome/test/data/extensions/api_test/service_worker/update_without_skip_waiting/v2/page.js b/chrome/test/data/extensions/api_test/service_worker/update_without_skip_waiting/v2/page.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f29a7bfe4f2942a0984d83ae42bc0f4a080d35b
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/service_worker/update_without_skip_waiting/v2/page.js
@@ -0,0 +1,59 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var expectUpdate = false;
+
+var registerServiceWorkerPromise = new Promise(function(resolve, reject) {
+ expectUpdate = window.location.hash == '#expect_update';
+ var serviceWorkerRegistration;
+ navigator.serviceWorker.register('sw.js').then(function() {
+ return navigator.serviceWorker.ready;
+ }).then(function(registration) {
+ serviceWorkerRegistration = registration;
+
+ var promises = [registration.update()];
+ if (expectUpdate) {
+ promises.push(new Promise(function(resolve) {
+ registration.onupdatefound = function(e) {
+ resolve();
+ };
+ }));
+ }
+
+ return Promise.all(promises);
+ }).then(function() {
+ var installingWorker = serviceWorkerRegistration.installing;
+ if (installingWorker) {
+ // If there's an installing worker, wait for waiting worker to exist
+ // first.
+ installingWorker.onstatechange = function(e) {
+ if (installingWorker.state == 'installed') {
+ chrome.test.assertTrue(null != serviceWorkerRegistration.waiting);
Devlin 2015/12/10 18:16:57 prefer chrome.test.assertTrue(!!serviceWorkerRegis
lazyboy 2015/12/10 18:59:44 Done.
+ resolve(serviceWorkerRegistration.active);
+ }
+ }
+ } else {
+ chrome.test.assertFalse(expectUpdate);
+ chrome.test.assertEq(null, serviceWorkerRegistration.waiting);
+ resolve(serviceWorkerRegistration.active);
+ }
+ }).catch(function(err) {
+ reject(err);
+ });
+});
+
+registerServiceWorkerPromise.then(function(serviceWorker) {
+ var channel = new MessageChannel();
+ channel.port1.onmessage = function(e) {
+ chrome.test.log('Message received from SW: ' + e.data);
+ var response = e.data;
+ if (expectUpdate)
+ response += ' (with update)';
+ chrome.test.sendMessage(response);
+ };
+ serviceWorker.postMessage('ping', [channel.port2]);
+}).catch(function(err) {
+ chrome.test.log(err);
+ chrome.test.sendMessage('FAILURE_V2');
+});

Powered by Google App Engine
This is Rietveld 408576698