summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js')
-rw-r--r--browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js149
1 files changed, 149 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js b/browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js
new file mode 100644
index 0000000000..c56c32222d
--- /dev/null
+++ b/browser/components/preferences/tests/browser_permissions_checkPermissionsWereAdded.js
@@ -0,0 +1,149 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const PERMISSIONS_URL =
+ "chrome://browser/content/preferences/dialogs/permissions.xhtml";
+
+const _checkAndOpenCookiesDialog = async doc => {
+ let cookieExceptionsButton = doc.getElementById("cookieExceptions");
+ ok(cookieExceptionsButton, "cookieExceptionsButton found");
+ let dialogPromise = promiseLoadSubDialog(PERMISSIONS_URL);
+ cookieExceptionsButton.click();
+ let dialog = await dialogPromise;
+ return dialog;
+};
+
+const _checkCookiesDialog = (dialog, buttonIds) => {
+ ok(dialog, "dialog loaded");
+ let urlLabel = dialog.document.getElementById("urlLabel");
+ ok(!urlLabel.hidden, "urlLabel should be visible");
+ let url = dialog.document.getElementById("url");
+ ok(!url.hidden, "url should be visible");
+ for (let buttonId of buttonIds) {
+ let buttonDialog = dialog.document.getElementById(buttonId);
+ ok(buttonDialog, "blockButtonDialog found");
+ is(
+ buttonDialog.hasAttribute("disabled"),
+ true,
+ "If the user hasn't added an url the button shouldn't be clickable"
+ );
+ }
+ return dialog;
+};
+
+const _addWebsiteAddressToPermissionBox = (
+ websiteAddress,
+ dialog,
+ buttonId,
+ expectError
+) => {
+ let url = dialog.document.getElementById("url");
+ let buttonDialog = dialog.document.getElementById(buttonId);
+ url.value = websiteAddress;
+ url.dispatchEvent(new Event("input", { bubbles: true }));
+ is(
+ buttonDialog.hasAttribute("disabled"),
+ false,
+ "When the user add an url the button should be clickable"
+ );
+ buttonDialog.click();
+ let permissionsBox = dialog.document.getElementById("permissionsBox");
+ let children = permissionsBox.getElementsByAttribute("origin", "*");
+ is(
+ !!children.length,
+ !expectError,
+ "Website added in url should be in the list"
+ );
+};
+
+const _checkIfPermissionsWereAdded = (dialog, expectedResult) => {
+ let permissionsBox = dialog.document.getElementById("permissionsBox");
+ for (let website of expectedResult) {
+ let elements = permissionsBox.getElementsByAttribute("origin", website);
+ is(elements.length, 1, "It should find only one coincidence");
+ }
+};
+
+const _removesAllSitesInPermissionBox = (dialog, shouldBePossible) => {
+ let removeAllWebsitesButton = dialog.document.getElementById(
+ "removeAllPermissions"
+ );
+ ok(removeAllWebsitesButton, "removeAllWebsitesButton found");
+ const isDisabled = removeAllWebsitesButton.hasAttribute("disabled");
+ is(
+ !removeAllWebsitesButton.hasAttribute("disabled"),
+ shouldBePossible,
+ "There should be websites in the list"
+ );
+ if (!isDisabled) {
+ removeAllWebsitesButton.click();
+ }
+};
+
+add_task(async function checkCookiePermissions() {
+ await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
+ leaveOpen: true,
+ });
+ let win = gBrowser.selectedBrowser.contentWindow;
+ let doc = win.document;
+ let buttonIds = ["btnBlock", "btnCookieSession", "btnAllow"];
+
+ let dialog = await _checkAndOpenCookiesDialog(doc);
+ _checkCookiesDialog(dialog, buttonIds);
+
+ let tests = [
+ {
+ inputWebsite: "google.com",
+ expectedResult: ["http://google.com", "https://google.com"],
+ },
+ {
+ inputWebsite: "https://google.com",
+ expectedResult: ["https://google.com"],
+ },
+ {
+ inputWebsite: "s3.eu-central-1.amazonaws.com",
+ expectedResult: [
+ "http://s3.eu-central-1.amazonaws.com",
+ "https://s3.eu-central-1.amazonaws.com",
+ ],
+ },
+ {
+ inputWebsite: "file://",
+ expectedResult: ["file:///"],
+ },
+ {
+ inputWebsite: "about:config",
+ expectedResult: ["about:config"],
+ },
+ // Invalid inputs, expected to not be added
+ {
+ inputWebsite: "http://",
+ expectedResult: [],
+ },
+ {
+ inputWebsite: "*.example.com",
+ expectedResult: [],
+ },
+ {
+ inputWebsite: "http://*.example.com",
+ expectedResult: [],
+ },
+ ];
+
+ for (let buttonId of buttonIds) {
+ for (let test of tests) {
+ _addWebsiteAddressToPermissionBox(
+ test.inputWebsite,
+ dialog,
+ buttonId,
+ test.expectedResult.length === 0
+ );
+ _checkIfPermissionsWereAdded(dialog, test.expectedResult);
+ _removesAllSitesInPermissionBox(dialog, !!test.expectedResult.length);
+ }
+ }
+
+ gBrowser.removeCurrentTab();
+});