gecko-dev/dom/push/test/test_multiple_register_different_scope.html
Brian Grinstead 0d460e3432 Bug 1544322 - Part 2.2 - Remove the [type] attribute for one-liner <script> tags loading files in /tests/SimpleTest/ in dom/ r=bzbarsky
This is split from the previous changeset since if we include dom/ the file size is too
large for phabricator to handle.

This is an autogenerated commit to handle scripts loading mochitest harness files, in
the simple case where the script src is on the same line as the tag.

This was generated with https://bug1544322.bmoattachments.org/attachment.cgi?id=9058170
using the `--part 2` argument.

Differential Revision: https://phabricator.services.mozilla.com/D27457

--HG--
extra : moz-landing-system : lando
2019-04-16 03:53:28 +00:00

125 lines
3.5 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
Bug 1150812: Test registering for two different scopes.
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/licenses/publicdomain/
-->
<head>
<title>Test for Bug 1150812</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/dom/push/test/test_utils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
</head>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1150812">Mozilla Bug 1150812</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
<script class="testbody" type="text/javascript">
/* import-globals-from ./test_utils.js */
var scopeA = "./a/";
var scopeB = "./b/";
function debug(str) {
// console.log(str + "\n");
}
function registerServiceWorker(scope) {
return navigator.serviceWorker.register("worker.js?" + (Math.random()), {scope})
.then(swr => waitForActive(swr));
}
function unregister(swr) {
return swr.unregister()
.then(result => {
ok(result, "Unregister should return true.");
}, err => {
ok(false, "Unregistering the SW failed with " + err + "\n");
throw err;
});
}
function subscribe(swr) {
return swr.pushManager.subscribe()
.then(sub => {
ok(true, "successful registered for push notification");
return sub;
}, err => {
ok(false, "could not register for push notification");
throw err;
});
}
function setupMultipleSubscriptions(swr1, swr2) {
return Promise.all([
subscribe(swr1),
subscribe(swr2),
]).then(a => {
ok(a[0].endpoint != a[1].endpoint, "setupMultipleSubscriptions - Got different endpoints.");
return a;
});
}
function getEndpointExpectNull(swr) {
return swr.pushManager.getSubscription()
.then(pushSubscription => {
ok(pushSubscription == null, "getEndpoint should return null when app not subscribed.");
}, err => {
ok(false, "could not register for push notification");
throw err;
});
}
function getEndpoint(swr, results) {
return swr.pushManager.getSubscription()
.then(sub => {
ok((results[0].endpoint == sub.endpoint) ||
(results[1].endpoint == sub.endpoint), "getEndpoint - Got the same endpoint back.");
return results;
}, err => {
ok(false, "could not register for push notification");
throw err;
});
}
function unsubscribe(result) {
return result[0].unsubscribe()
.then(_ => result[1].unsubscribe());
}
function runTest() {
registerServiceWorker(scopeA)
.then(swrA =>
registerServiceWorker(scopeB)
.then(swrB =>
getEndpointExpectNull(swrA)
.then(_ => getEndpointExpectNull(swrB))
.then(_ => setupMultipleSubscriptions(swrA, swrB))
.then(results => getEndpoint(swrA, results))
.then(results => getEndpoint(swrB, results))
.then(results => unsubscribe(results))
.then(_ => unregister(swrA))
.then(_ => unregister(swrB))
)
)
.catch(err => {
ok(false, "Some test failed with error " + err);
}).then(SimpleTest.finish);
}
setupPrefsAndMockSocket(new MockWebSocket()).then(_ => runTest());
SpecialPowers.addPermission("desktop-notification", true, document);
SimpleTest.waitForExplicitFinish();
</script>
</body>
</html>