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(); |