Chromium Code Reviews| Index: chrome/test/data/push_messaging/push_test.js |
| diff --git a/chrome/test/data/push_messaging/push_test.js b/chrome/test/data/push_messaging/push_test.js |
| index cc817eefd1af48b656097e659a0c9915447375c4..1503b98ec35e6a65b9e889fff94154aa63bf152d 100644 |
| --- a/chrome/test/data/push_messaging/push_test.js |
| +++ b/chrome/test/data/push_messaging/push_test.js |
| @@ -59,6 +59,28 @@ ResultQueue.prototype.popImmediately = function() { |
| sendResultToTest(this.queue.length ? this.queue.pop() : null); |
| }; |
| +function swRegistrationReady(reg) { |
|
Peter Beverloo
2016/09/30 14:26:07
nit: this definitely deserves some documentation :
johnme
2016/09/30 17:02:10
Done.
|
| + return new Promise((resolve, reject) => { |
| + if (reg.active) { |
| + resolve(); |
| + return; |
| + } |
| + |
| + if (!reg.installing && !reg.waiting) { |
| + reject(Error('Install failed')); |
| + return; |
| + } |
| + |
| + (reg.installing || reg.waiting).addEventListener('statechange', function() { |
| + if (this.state == 'redundant') { |
| + reject(Error('Install failed')); |
| + } else if (this.state == 'activated') { |
| + resolve(); |
| + } |
| + }); |
| + }); |
| +} |
| + |
| // Notification permission has been coalesced with Push permission. After |
| // this is granted, Push API subscription can succeed. |
| function requestNotificationPermission() { |
| @@ -85,6 +107,14 @@ function unregisterServiceWorker() { |
| }).catch(sendErrorToTest); |
| } |
| +function replaceServiceWorker() { |
| + navigator.serviceWorker.register('service_worker_with_skipWaiting_claim.js', { |
| + scope: './' |
| + }).then(swRegistrationReady).then(() => { |
| + sendResultToTest('ok - service worker replaced'); |
| + }).catch(sendErrorToTest); |
| +} |
| + |
| function removeManifest() { |
| var element = document.querySelector('link[rel="manifest"]'); |
| if (element) { |
| @@ -195,11 +225,28 @@ function unsubscribePush() { |
| sendResultToTest('unsubscribe result: ' + result); |
| }, function(error) { |
| sendResultToTest('unsubscribe error: ' + error.message); |
| - }) |
| + }); |
| }) |
| }); |
| } |
| +function storePushSubscription() { |
| + navigator.serviceWorker.ready.then(swRegistration => { |
| + swRegistration.pushManager.getSubscription().then(pushSubscription => { |
| + window.storedPushSubscription = pushSubscription; |
| + sendResultToTest('ok - stored'); |
| + }, sendErrorToTest); |
| + }, sendErrorToTest); |
| +} |
| + |
| +function unsubscribeStoredPushSubscription() { |
| + window.storedPushSubscription.unsubscribe().then(function(result) { |
| + sendResultToTest('unsubscribe result: ' + result); |
| + }, function(error) { |
| + sendResultToTest('unsubscribe error: ' + error.message); |
| + }); |
| +} |
| + |
| function hasSubscription() { |
| navigator.serviceWorker.ready.then(function(swRegistration) { |
| return swRegistration.pushManager.getSubscription(); |