Chromium Code Reviews| Index: chrome/test/data/extensions/api_test/service_worker/sync/page.js |
| diff --git a/chrome/test/data/extensions/api_test/service_worker/sync/page.js b/chrome/test/data/extensions/api_test/service_worker/sync/page.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3ba9272993d8d2abbb025fa3ad8b019f575097ea |
| --- /dev/null |
| +++ b/chrome/test/data/extensions/api_test/service_worker/sync/page.js |
| @@ -0,0 +1,46 @@ |
| +// 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 SYNC_TAG = 'send-chats'; |
| + |
| +var startServiceWorker = new Promise(function(resolve, reject) { |
| + var serviceWorker; |
| + var serviceWorkerRegistration; |
| + navigator.serviceWorker.register('sw.js').then(function() { |
| + // Wait until the service worker is active. |
| + return navigator.serviceWorker.ready; |
| + }).then(function(registration) { |
| + serviceWorker = registration.active; |
| + serviceWorkerRegistration = registration; |
| + return registration.sync.permissionState(); |
|
Devlin
2015/11/16 18:12:41
Could we just return the registration here, and av
lazyboy
2015/11/16 19:30:16
I want to check permissionState()'s return value a
|
| + }).then(function(syncPermissionState) { |
| + if (syncPermissionState != 'granted') { |
| + reject('permissionState: ' + syncPermissionState); |
| + } |
| + return serviceWorkerRegistration.sync.register({tag: SYNC_TAG}); |
| + }).then(function() { |
| + resolve(serviceWorker); |
| + }).catch(function(err) { |
| + reject(err); |
| + }); |
| +}); |
| + |
| +window.runServiceWorker = function() { |
| + startServiceWorker.then(function(serviceWorker) { |
| + var mc = new MessageChannel(); |
| + // Called when ServiceWorker.onsync fires. |
| + mc.port1.onmessage = function(e) { |
| + if (e.data != 'SYNC: send-chats') { |
| + console.log('message: ' + e.data); |
| + chrome.test.sendMessage('FAIL'); // Fails the test fast. |
| + return; |
| + } |
| + chrome.test.sendMessage('' + e.data); |
|
Devlin
2015/11/16 18:12:41
Does just sendMessage(e.data) not work (i.e., do y
lazyboy
2015/11/16 19:30:16
Don't need it, just being safe to force cast, in c
|
| + }; |
| + serviceWorker.postMessage('connect', [mc.port2]); |
| + window.domAutomationController.send('SERVICE_WORKER_READY'); |
| + }).catch(function(err) { |
| + window.domAutomationController.send(err); |
| + }); |
| +}; |