summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js')
-rw-r--r--toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js b/toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js
new file mode 100644
index 0000000000..5e611a7384
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js
@@ -0,0 +1,82 @@
+/**
+ * Test "passwordmgr-form-submission-detected" should be notified
+ * regardless of whehter the password saving is enabled.
+ */
+
+async function waitForFormSubmissionDetected() {
+ return new Promise(resolve => {
+ Services.obs.addObserver(function observer(subject, topic) {
+ Services.obs.removeObserver(
+ observer,
+ "passwordmgr-form-submission-detected"
+ );
+ resolve();
+ }, "passwordmgr-form-submission-detected");
+ });
+}
+
+add_task(async function test_login_save_disable() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["signon.rememberSignons", false]],
+ });
+
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url:
+ "https://example.com/browser/toolkit/components/" +
+ "passwordmgr/test/browser/form_basic.html",
+ },
+ async function (browser) {
+ await SimpleTest.promiseFocus(browser.ownerGlobal);
+ await changeContentFormValues(browser, {
+ "#form-basic-username": "username",
+ "#form-basic-password": "password",
+ });
+
+ let promise = waitForFormSubmissionDetected();
+ await SpecialPowers.spawn(browser, [], async function () {
+ let doc = this.content.document;
+ doc.getElementById("form-basic").submit();
+ });
+
+ await promise;
+ Assert.ok(true, "Test completed");
+ }
+ );
+});
+
+add_task(async function test_login_save_enable() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["signon.rememberSignons", true]],
+ });
+
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url:
+ "https://example.com/browser/toolkit/components/" +
+ "passwordmgr/test/browser/form_basic.html",
+ },
+ async function (browser) {
+ await SimpleTest.promiseFocus(browser.ownerGlobal);
+
+ await changeContentFormValues(browser, {
+ "#form-basic-username": "username",
+ "#form-basic-password": "password",
+ });
+
+ // When login saving is enabled, we should receive both FormSubmit
+ // event and "passwordmgr-form-submission-detected" event
+ let p1 = waitForFormSubmissionDetected();
+ let p2 = listenForTestNotification("ShowDoorhanger");
+ await SpecialPowers.spawn(browser, [], async function () {
+ let doc = this.content.document;
+ doc.getElementById("form-basic").submit();
+ });
+
+ await Promise.all([p1, p2]);
+ Assert.ok(true, "Test completed");
+ }
+ );
+});