summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js')
-rw-r--r--browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js185
1 files changed, 185 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js b/browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js
new file mode 100644
index 0000000000..c24c13e9e8
--- /dev/null
+++ b/browser/components/preferences/tests/browser_dns_over_https_exceptions_subdialog.js
@@ -0,0 +1,185 @@
+async function dohExceptionsSubdialogOpened(dialogOverlay) {
+ const promiseSubDialogLoaded = promiseLoadSubDialog(
+ "chrome://browser/content/preferences/dialogs/dohExceptions.xhtml"
+ );
+ const contentDocument = gBrowser.contentDocument;
+ contentDocument.getElementById("dohExceptionsButton").click();
+ const win = await promiseSubDialogLoaded;
+ dialogOverlay = content.gSubDialog._topDialog._overlay;
+ ok(!BrowserTestUtils.isHidden(dialogOverlay), "The dialog is visible.");
+ return win;
+}
+
+function acceptDoHExceptionsSubdialog(win) {
+ const button = win.document.querySelector("dialog").getButton("accept");
+ button.doCommand();
+}
+
+function cancelDoHExceptionsSubdialog(win) {
+ const button = win.document.querySelector("dialog").getButton("cancel");
+ button.doCommand();
+}
+
+function addNewException(domain, dialog) {
+ let url = dialog.document.getElementById("url");
+ let addButton = dialog.document.getElementById("btnAddException");
+
+ ok(
+ addButton.disabled,
+ "The Add button is disabled when domain's input box is empty"
+ );
+
+ url.focus();
+ EventUtils.sendString(domain);
+
+ ok(
+ !addButton.disabled,
+ "The Add button is enabled when some text is on domain's input box"
+ );
+
+ addButton.click();
+
+ is(
+ url.value,
+ "",
+ "Domain input box is empty after adding a new domain to the list"
+ );
+ ok(
+ addButton.disabled,
+ "The Add button is disabled after exception has been added to the list"
+ );
+}
+
+add_task(async function () {
+ Services.prefs.lockPref("network.trr.excluded-domains");
+
+ await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
+ leaveOpen: true,
+ });
+ let dialogOverlay = content.gSubDialog._preloadDialog._overlay;
+ let win = await dohExceptionsSubdialogOpened(dialogOverlay);
+
+ ok(
+ win.document.getElementById("btnAddException").disabled,
+ "The Add button is disabled when preference is locked"
+ );
+ ok(
+ win.document.getElementById("url").disabled,
+ "The url input box is disabled when preference is locked"
+ );
+
+ cancelDoHExceptionsSubdialog(win);
+ Services.prefs.unlockPref("network.trr.excluded-domains");
+ win = await dohExceptionsSubdialogOpened(dialogOverlay);
+
+ ok(
+ win.document.getElementById("btnAddException").disabled,
+ "The Add button is disabled when preference is not locked"
+ );
+ ok(
+ !win.document.getElementById("url").disabled,
+ "The url input box is enabled when preference is not locked"
+ );
+
+ cancelDoHExceptionsSubdialog(win);
+ gBrowser.removeCurrentTab();
+});
+
+add_task(async function () {
+ await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
+ leaveOpen: true,
+ });
+ let dialogOverlay = content.gSubDialog._preloadDialog._overlay;
+
+ ok(BrowserTestUtils.isHidden(dialogOverlay), "The dialog is invisible.");
+ let win = await dohExceptionsSubdialogOpened(dialogOverlay);
+ acceptDoHExceptionsSubdialog(win);
+ ok(BrowserTestUtils.isHidden(dialogOverlay), "The dialog is invisible.");
+
+ win = await dohExceptionsSubdialogOpened(dialogOverlay);
+ Assert.equal(
+ win.document.getElementById("permissionsBox").itemCount,
+ 0,
+ "There are no exceptions set."
+ );
+ ok(
+ win.document.getElementById("removeException").disabled,
+ "The Remove button is disabled when there are no exceptions on the list"
+ );
+ ok(
+ win.document.getElementById("removeAllExceptions").disabled,
+ "The Remove All button is disabled when there are no exceptions on the list"
+ );
+ ok(
+ win.document.getElementById("btnAddException").disabled,
+ "The Add button is disabled when dialog box has just been opened"
+ );
+
+ addNewException("test1.com", win);
+ Assert.equal(
+ win.document.getElementById("permissionsBox").itemCount,
+ 1,
+ "List shows 1 new item"
+ );
+ let activeExceptions = win.document.getElementById("permissionsBox").children;
+ is(
+ activeExceptions[0].getAttribute("domain"),
+ "test1.com",
+ "test1.com added to the list"
+ );
+ ok(
+ !win.document.getElementById("removeAllExceptions").disabled,
+ "The Remove All button is enabled when there is one exception on the list"
+ );
+ addNewException("test2.com", win);
+ addNewException("test3.com", win);
+ Assert.equal(
+ win.document.getElementById("permissionsBox").itemCount,
+ 3,
+ "List shows 3 domain items"
+ );
+ ok(
+ win.document.getElementById("removeException").disabled,
+ "The Remove button is disabled when no exception has been selected"
+ );
+ win.document.getElementById("permissionsBox").selectedIndex = 1;
+ ok(
+ !win.document.getElementById("removeException").disabled,
+ "The Remove button is enabled when an exception has been selected"
+ );
+ win.document.getElementById("removeException").doCommand();
+ Assert.equal(
+ win.document.getElementById("permissionsBox").itemCount,
+ 2,
+ "List shows 2 domain items after removing one of the three"
+ );
+ activeExceptions = win.document.getElementById("permissionsBox").children;
+ ok(
+ win.document.getElementById("permissionsBox").itemCount == 2 &&
+ activeExceptions[0].getAttribute("domain") == "test1.com" &&
+ activeExceptions[1].getAttribute("domain") == "test3.com",
+ "test1.com and test3.com are the only items left on the list"
+ );
+ is(
+ win.document.getElementById("permissionsBox").selectedIndex,
+ -1,
+ "There is no selected item after removal"
+ );
+ addNewException("test2.com", win);
+ activeExceptions = win.document.getElementById("permissionsBox").children;
+ ok(
+ win.document.getElementById("permissionsBox").itemCount == 3 &&
+ activeExceptions[1].getAttribute("domain") == "test2.com",
+ "test2.com has been added as the second item"
+ );
+ win.document.getElementById("removeAllExceptions").doCommand();
+ is(
+ win.document.getElementById("permissionsBox").itemCount,
+ 0,
+ "There are no elements on the list after clicking Remove All"
+ );
+
+ acceptDoHExceptionsSubdialog(win);
+
+ gBrowser.removeCurrentTab();
+});