summaryrefslogtreecommitdiffstats
path: root/browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js')
-rw-r--r--browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js128
1 files changed, 128 insertions, 0 deletions
diff --git a/browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js b/browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js
new file mode 100644
index 0000000000..52c288c780
--- /dev/null
+++ b/browser/components/aboutlogins/tests/browser/browser_confirmDeleteDialog.js
@@ -0,0 +1,128 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+add_setup(async function () {
+ await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ url: "about:logins",
+ });
+ registerCleanupFunction(() => {
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+ });
+});
+
+add_task(async function test() {
+ let browser = gBrowser.selectedBrowser;
+
+ await SpecialPowers.spawn(browser, [], async () => {
+ let loginItem = Cu.waiveXrays(content.document.querySelector("login-item"));
+
+ let showPromise = loginItem.showConfirmationDialog("delete");
+
+ let dialog = Cu.waiveXrays(
+ content.document.querySelector("confirmation-dialog")
+ );
+ let cancelButton = dialog.shadowRoot.querySelector(".cancel-button");
+ let confirmDeleteButton =
+ dialog.shadowRoot.querySelector(".confirm-button");
+ let dismissButton = dialog.shadowRoot.querySelector(".dismiss-button");
+ let message = dialog.shadowRoot.querySelector(".message");
+ let title = dialog.shadowRoot.querySelector(".title");
+
+ await content.document.l10n.translateElements([
+ title,
+ message,
+ cancelButton,
+ confirmDeleteButton,
+ ]);
+
+ Assert.equal(
+ title.textContent,
+ "Remove this login?",
+ "Title contents should match l10n attribute set on outer element"
+ );
+ Assert.equal(
+ message.textContent,
+ "This action cannot be undone.",
+ "Message contents should match l10n attribute set on outer element"
+ );
+ Assert.equal(
+ cancelButton.textContent,
+ "Cancel",
+ "Cancel button contents should match l10n attribute set on outer element"
+ );
+ Assert.equal(
+ confirmDeleteButton.textContent,
+ "Remove",
+ "Remove button contents should match l10n attribute set on outer element"
+ );
+
+ cancelButton.click();
+ try {
+ await showPromise;
+ Assert.ok(
+ false,
+ "Promise returned by show() should not resolve after clicking cancel button"
+ );
+ } catch (ex) {
+ Assert.ok(
+ true,
+ "Promise returned by show() should reject after clicking cancel button"
+ );
+ }
+ await ContentTaskUtils.waitForCondition(
+ () => dialog.hidden,
+ "Waiting for the dialog to be hidden"
+ );
+ Assert.ok(
+ dialog.hidden,
+ "Dialog should be hidden after clicking cancel button"
+ );
+
+ showPromise = loginItem.showConfirmationDialog("delete");
+ dismissButton.click();
+ try {
+ await showPromise;
+ Assert.ok(
+ false,
+ "Promise returned by show() should not resolve after clicking dismiss button"
+ );
+ } catch (ex) {
+ Assert.ok(
+ true,
+ "Promise returned by show() should reject after clicking dismiss button"
+ );
+ }
+ await ContentTaskUtils.waitForCondition(
+ () => dialog.hidden,
+ "Waiting for the dialog to be hidden"
+ );
+ Assert.ok(
+ dialog.hidden,
+ "Dialog should be hidden after clicking dismiss button"
+ );
+
+ showPromise = loginItem.showConfirmationDialog("delete");
+ confirmDeleteButton.click();
+ try {
+ await showPromise;
+ Assert.ok(
+ true,
+ "Promise returned by show() should resolve after clicking confirm button"
+ );
+ } catch (ex) {
+ Assert.ok(
+ false,
+ "Promise returned by show() should not reject after clicking confirm button"
+ );
+ }
+ await ContentTaskUtils.waitForCondition(
+ () => dialog.hidden,
+ "Waiting for the dialog to be hidden"
+ );
+ Assert.ok(
+ dialog.hidden,
+ "Dialog should be hidden after clicking confirm button"
+ );
+ });
+});