blob: e0a9e4e209f64ccd2f4c4782ee5cdcb17f731532 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>subscribe() succeeds when permission is granted and resolves with a valid subscription</title>
<link rel="manifest" href="resources/push_manifest.json">
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../serviceworker/resources/test-helpers.js"></script>
</head>
<body>
<script>
async_test(function(test) {
var workerUrl = 'resources/empty_worker.js';
var workerScope = 'resources/scope/' + location.pathname;
var swRegistration;
service_worker_unregister_and_register(test, workerUrl, workerScope)
.then(function(serviceWorkerRegistration) {
swRegistration = serviceWorkerRegistration;
return wait_for_state(test, swRegistration.installing, 'activated');
})
.then(function() {
// If running manually, grant permission when prompted.
if (window.testRunner)
testRunner.setPermission('push-messaging', 'granted', location.origin, location.origin);
return swRegistration.pushManager.subscribe();
})
.then(function(pushSubscription) {
assert_idl_attribute(pushSubscription, 'endpoint');
assert_equals(typeof pushSubscription.endpoint, 'string');
assert_idl_attribute(pushSubscription, 'expirationTime');
assert_equals(pushSubscription.expirationTime, null);
try {
var endpointUrl = new URL(pushSubscription.endpoint);
} catch(e) {
assert_unreached('Constructing a URL from the endpoint should not throw.');
}
return service_worker_unregister_and_done(test, workerScope);
})
.catch(unreached_rejection(test));
}, 'subscribe() succeeds when permission is granted and resolves with a valid subscription');
</script>
</body>
</html>