summaryrefslogtreecommitdiffstats
path: root/browser/components/originattributes/test/mochitest/test_permissions_api.html
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/originattributes/test/mochitest/test_permissions_api.html')
-rw-r--r--browser/components/originattributes/test/mochitest/test_permissions_api.html207
1 files changed, 0 insertions, 207 deletions
diff --git a/browser/components/originattributes/test/mochitest/test_permissions_api.html b/browser/components/originattributes/test/mochitest/test_permissions_api.html
deleted file mode 100644
index 63c74d1fe..000000000
--- a/browser/components/originattributes/test/mochitest/test_permissions_api.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<!DOCTYPE HTML>
-<html>
-
-<head>
- <meta charset="utf-8">
- <title>Test for Permissions API</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" href="/tests/SimpleTest/test.css">
-</head>
-
-<body>
- <pre id="test"></pre>
- <script type="application/javascript;version=1.8">
- /*globals SpecialPowers, SimpleTest, is, ok, */
- 'use strict';
-
- const {
- UNKNOWN_ACTION,
- PROMPT_ACTION,
- ALLOW_ACTION,
- DENY_ACTION
- } = SpecialPowers.Ci.nsIPermissionManager;
-
- SimpleTest.waitForExplicitFinish();
-
- const PERMISSIONS = [{
- name: 'geolocation',
- type: 'geo'
- }, {
- name: 'notifications',
- type: 'desktop-notification'
- }, {
- name: 'push',
- type: 'desktop-notification'
- }, ];
-
- const UNSUPPORTED_PERMISSIONS = [
- 'foobarbaz', // Not in spec, for testing only.
- 'midi',
- ];
-
- // Create a closure, so that tests are run on the correct window object.
- function createPermissionTester(aWindow) {
- return {
- setPermissions(allow) {
- const permissions = PERMISSIONS.map(({ type }) => {
- return {
- type,
- allow,
- 'context': aWindow.document
- };
- });
- return new Promise((resolve) => {
- SpecialPowers.popPermissions(() => {
- SpecialPowers.pushPermissions(permissions, resolve);
- });
- });
- },
- revokePermissions() {
- const promisesToRevoke = PERMISSIONS.map(({ name }) => {
- return aWindow.navigator.permissions
- .revoke({ name })
- .then(
- ({ state }) => is(state, 'prompt', `correct state for '${name}'`),
- () => ok(false, `revoke should not have rejected for '${name}'`)
- );
- });
- return Promise.all(promisesToRevoke);
- },
- revokeUnsupportedPermissions() {
- const promisesToRevoke = UNSUPPORTED_PERMISSIONS.map(({ name }) => {
- return aWindow.navigator.permissions
- .revoke({ name })
- .then(
- () => ok(false, `revoke should not have resolved for '${name}'`),
- error => is(error.name, 'TypeError', `revoke should have thrown TypeError for '${name}'`)
- );
- });
- return Promise.all(promisesToRevoke);
- },
- checkPermissions(state) {
- const promisesToQuery = PERMISSIONS.map(({ name }) => {
- return aWindow.navigator.permissions
- .query({ name })
- .then(
- () => is(state, state, `correct state for '${name}'`),
- () => ok(false, `query should not have rejected for '${name}'`)
- );
- });
- return Promise.all(promisesToQuery);
- },
- checkUnsupportedPermissions() {
- const promisesToQuery = UNSUPPORTED_PERMISSIONS.map(({ name }) => {
- return aWindow.navigator.permissions
- .query({ name })
- .then(
- () => ok(false, `query should not have resolved for '${name}'`),
- error => {
- is(error.name, 'TypeError',
- `query should have thrown TypeError for '${name}'`);
- }
- );
- });
- return Promise.all(promisesToQuery);
- },
- promiseStateChanged(name, state) {
- return aWindow.navigator.permissions
- .query({ name })
- .then(status => {
- return new Promise( resolve => {
- status.onchange = () => {
- status.onchange = null;
- is(status.state, state, `state changed for '${name}'`);
- resolve();
- };
- });
- },
- () => ok(false, `query should not have rejected for '${name}'`));
- },
- testStatusOnChange() {
- return new Promise((resolve) => {
- SpecialPowers.popPermissions(() => {
- const permission = 'geolocation';
- const promiseGranted = this.promiseStateChanged(permission, 'granted');
- this.setPermissions(ALLOW_ACTION);
- promiseGranted.then(() => {
- const promisePrompt = this.promiseStateChanged(permission, 'prompt');
- SpecialPowers.popPermissions();
- return promisePrompt;
- }).then(resolve);
- });
- });
- },
- testInvalidQuery() {
- return aWindow.navigator.permissions
- .query({ name: 'invalid' })
- .then(
- () => ok(false, 'invalid query should not have resolved'),
- () => ok(true, 'invalid query should have rejected')
- );
- },
- testInvalidRevoke() {
- return aWindow.navigator.permissions
- .revoke({ name: 'invalid' })
- .then(
- () => ok(false, 'invalid revoke should not have resolved'),
- () => ok(true, 'invalid revoke should have rejected')
- );
- },
- };
- }
-
- function enablePrefs() {
- const ops = {
- 'set': [
- ['dom.permissions.revoke.enable', true],
- ['privacy.firstparty.isolate', true],
- ],
- };
- return SpecialPowers.pushPrefEnv(ops);
- }
-
- function createIframe() {
- return new Promise((resolve) => {
- const iframe = document.createElement('iframe');
- iframe.src = 'file_empty.html';
- iframe.onload = () => resolve(iframe.contentWindow);
- document.body.appendChild(iframe);
- });
- }
- debugger;
- window.onload = () => {
- enablePrefs()
- .then(createIframe)
- .then(createPermissionTester)
- .then((tester) => {
- return tester
- .checkUnsupportedPermissions()
- .then(() => tester.setPermissions(UNKNOWN_ACTION))
- .then(() => tester.checkPermissions('prompt'))
- .then(() => tester.setPermissions(PROMPT_ACTION))
- .then(() => tester.checkPermissions('prompt'))
- .then(() => tester.setPermissions(ALLOW_ACTION))
- .then(() => tester.checkPermissions('granted'))
- .then(() => tester.setPermissions(DENY_ACTION))
- .then(() => tester.checkPermissions('denied'))
- .then(() => tester.testStatusOnChange())
- .then(() => tester.testInvalidQuery())
- .then(() => tester.revokeUnsupportedPermissions())
- .then(() => tester.revokePermissions())
- .then(() => tester.checkPermissions('prompt'))
- .then(() => tester.testInvalidRevoke());
- })
- .then(SimpleTest.finish)
- .catch((e) => {
- ok(false, `Unexpected error ${e}`);
- SimpleTest.finish();
- });
- };
- </script>
-</body>
-
-</html>