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

Unified Diff: chrome/test/data/push_messaging/push_test.js

Issue 2387483002: Push API: Refactor and fix unsubscribe API (Closed)
Patch Set: Added enum reuse comments Created 4 years, 3 months 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/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..a61a2bc59cfc040c8a0745cbe12344b8f77dd744 100644
--- a/chrome/test/data/push_messaging/push_test.js
+++ b/chrome/test/data/push_messaging/push_test.js
@@ -59,6 +59,30 @@ ResultQueue.prototype.popImmediately = function() {
sendResultToTest(this.queue.length ? this.queue.pop() : null);
};
+// Waits for the given ServiceWorkerRegistration to become ready.
+// Shim for https://github.com/w3c/ServiceWorker/issues/770.
+function swRegistrationReady(reg) {
+ 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 +109,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 +227,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();

Powered by Google App Engine
This is Rietveld 408576698