149 lines
4.3 KiB
JavaScript
149 lines
4.3 KiB
JavaScript
/* 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();
|
|
});
|