summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/browser/browser_message_onFormSubmit.js
blob: 5e611a73849bca8634eb6a6d8aad372c5d1eb86b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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");
    }
  );
});