| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>getSubscription must return the details of the active subscription if the
re is one</title> | 4 <title>getSubscription must return the details of the active subscription if the
re is one</title> |
| 5 <link rel="manifest" href="resources/push_manifest.json"> | 5 <link rel="manifest" href="resources/push_manifest.json"> |
| 6 <script src="../resources/testharness.js"></script> | 6 <script src="../resources/testharness.js"></script> |
| 7 <script src="../resources/testharnessreport.js"></script> | 7 <script src="../resources/testharnessreport.js"></script> |
| 8 <script src="../serviceworker/resources/test-helpers.js"></script> | 8 <script src="../serviceworker/resources/test-helpers.js"></script> |
| 9 <script src="../notifications/resources/test-helpers.js"></script> | 9 <script src="../notifications/resources/test-helpers.js"></script> |
| 10 <script src="resources/test-helpers.js"></script> | 10 <script src="resources/test-helpers.js"></script> |
| 11 </head> | 11 </head> |
| 12 <body> | 12 <body> |
| 13 <script> | 13 <script> |
| 14 // This test uses the test runner. If running manually, grant permission when pr
ompted. | 14 // This test uses the test runner. If running manually, grant permission when pr
ompted. |
| 15 async_test(function(test) { | 15 async_test(function(test) { |
| 16 if (window.testRunner) | 16 if (window.testRunner) |
| 17 testRunner.setPermission('push-messaging', 'granted', location.origin, locat
ion.origin); | 17 testRunner.setPermission('push-messaging', 'granted', location.origin, locat
ion.origin); |
| 18 | 18 |
| 19 var script = 'resources/instrumentation-service-worker.js'; | 19 var script = 'resources/instrumentation-service-worker.js'; |
| 20 var scope = 'resources/scope/' + location.pathname; | 20 var scope = 'resources/scope/' + location.pathname; |
| 21 var port; | 21 var port; |
| 22 var registration; | 22 var registration; |
| 23 var previousSubscriptionId; | 23 var previousEndpoint; |
| 24 | 24 |
| 25 getActiveServiceWorkerWithMessagePort(test, script, scope) | 25 getActiveServiceWorkerWithMessagePort(test, script, scope) |
| 26 .then(function(workerInfo) { | 26 .then(function(workerInfo) { |
| 27 port = workerInfo.port; | 27 port = workerInfo.port; |
| 28 registration = workerInfo.registration; | 28 registration = workerInfo.registration; |
| 29 return subscribeAndUnsubscribePush(registration); | 29 return subscribeAndUnsubscribePush(registration); |
| 30 }) | 30 }) |
| 31 .then(function() { | 31 .then(function() { |
| 32 return runCommandInServiceWorker(port, 'getSubscription'); | 32 return runCommandInServiceWorker(port, 'getSubscription'); |
| 33 }) | 33 }) |
| 34 .then(function(data) { | 34 .then(function(data) { |
| 35 assert_equals(data.subscriptionId, null, | 35 assert_equals(data.endpoint, null, |
| 36 'There must be no subscription after unsubscribing in the document.'
); | 36 'There must be no subscription after unsubscribing in the document.'
); |
| 37 return runCommandInServiceWorker(port, 'subscribe'); | 37 return runCommandInServiceWorker(port, 'subscribe'); |
| 38 }) | 38 }) |
| 39 .then(function(data) { | 39 .then(function(data) { |
| 40 previousSubscriptionId = data.subscriptionId; | 40 previousEndpoint = data.endpoint; |
| 41 return runCommandInServiceWorker(port, 'getSubscription'); | 41 return runCommandInServiceWorker(port, 'getSubscription'); |
| 42 }) | 42 }) |
| 43 .then(function(data) { | 43 .then(function(data) { |
| 44 assert_equals(data.subscriptionId, previousSubscriptionId, | 44 assert_equals(data.endpoint, previousEndpoint, |
| 45 'Both PushSubscription instances should have the same id.'); | 45 'Both PushSubscription instances should have the same endpoint.'); |
| 46 return registration.pushManager.getSubscription(); | 46 return registration.pushManager.getSubscription(); |
| 47 }) | 47 }) |
| 48 .then(function(subscription) { | 48 .then(function(subscription) { |
| 49 assert_equals(subscription.subscriptionId, previousSubscriptionId, | 49 assert_equals(subscription.endpoint, previousEndpoint, |
| 50 'The ids for the PushSubscription instances from document and worker
must match.'); | 50 'The endpoints for the PushSubscription instances from document and
worker must match.'); |
| 51 return runCommandInServiceWorker(port, 'unsubscribe'); | 51 return runCommandInServiceWorker(port, 'unsubscribe'); |
| 52 }) | 52 }) |
| 53 .then(function(data) { | 53 .then(function(data) { |
| 54 assert_true(data.unsubscribeResult, | 54 assert_true(data.unsubscribeResult, |
| 55 'Calling unsubscribe on an active subscription must resolve with tru
e.'); | 55 'Calling unsubscribe on an active subscription must resolve with tru
e.'); |
| 56 return runCommandInServiceWorker(port, 'getSubscription'); | 56 return runCommandInServiceWorker(port, 'getSubscription'); |
| 57 }) | 57 }) |
| 58 .then(function(data) { | 58 .then(function(data) { |
| 59 assert_equals(data.subscriptionId, null, | 59 assert_equals(data.endpoint, null, |
| 60 'There must be no subscription after unsubscribing in the service wo
rker.'); | 60 'There must be no subscription after unsubscribing in the service wo
rker.'); |
| 61 return runCommandInServiceWorker(port, 'subscribe'); | 61 return runCommandInServiceWorker(port, 'subscribe'); |
| 62 }) | 62 }) |
| 63 .then(function(data) { | 63 .then(function(data) { |
| 64 assert_equals(typeof data.subscriptionId, 'string', | 64 assert_equals(typeof data.endpoint, 'string', 'Subscribing again should
succeed.'); |
| 65 'Subscribing again should succeed.'); | |
| 66 return registration.unregister(); | 65 return registration.unregister(); |
| 67 }) | 66 }) |
| 68 .then(function(unregisterResult) { | 67 .then(function(unregisterResult) { |
| 69 assert_true(unregisterResult, | 68 assert_true(unregisterResult, |
| 70 'Calling unregister on an active registration must resolve with true
.'); | 69 'Calling unregister on an active registration must resolve with true
.'); |
| 71 return registration.pushManager.getSubscription(); | 70 return registration.pushManager.getSubscription(); |
| 72 }) | 71 }) |
| 73 .then(function(subscription) { | 72 .then(function(subscription) { |
| 74 assert_equals(subscription, null, | 73 assert_equals(subscription, null, |
| 75 'Unregistering the service worker should clear the push subscription
.'); | 74 'Unregistering the service worker should clear the push subscription
.'); |
| 76 test.done(); | 75 test.done(); |
| 77 }) | 76 }) |
| 78 .catch(unreached_rejection(test)); | 77 .catch(unreached_rejection(test)); |
| 79 }, 'getSubscription must return the details of the active subscription if there
is one'); | 78 }, 'getSubscription must return the details of the active subscription if there
is one'); |
| 80 </script> | 79 </script> |
| 81 </body> | 80 </body> |
| 82 </html> | 81 </html> |
| OLD | NEW |