summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/browser/browser_localip_frame.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/passwordmgr/test/browser/browser_localip_frame.js')
-rw-r--r--toolkit/components/passwordmgr/test/browser/browser_localip_frame.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/test/browser/browser_localip_frame.js b/toolkit/components/passwordmgr/test/browser/browser_localip_frame.js
new file mode 100644
index 0000000000..33ae0e6c0b
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/browser/browser_localip_frame.js
@@ -0,0 +1,86 @@
+"use strict";
+
+add_setup(async () => {
+ const login1 = LoginTestUtils.testData.formLogin({
+ origin: "http://10.0.0.0",
+ formActionOrigin: "https://example.org",
+ username: "username1",
+ password: "password1",
+ });
+ const login2 = LoginTestUtils.testData.formLogin({
+ origin: "https://example.org",
+ formActionOrigin: "https://example.org",
+ username: "username2",
+ password: "password2",
+ });
+ await Services.logins.addLogins([login1, login2]);
+});
+
+add_task(async function test_warningForLocalIP() {
+ let tests = [
+ /* when the url of top-level and iframe are both ip address, do not show insecure warning */
+ {
+ top: "http://192.168.0.0",
+ iframe: "http://10.0.0.0",
+ expected: `[originaltype="loginWithOrigin"]`,
+ },
+ {
+ top: "http://192.168.0.0",
+ iframe: "https://example.org",
+ expected: `[type="insecureWarning"]`,
+ },
+ {
+ top: "http://example.com",
+ iframe: "http://10.0.0.0",
+ expected: `[type="insecureWarning"]`,
+ },
+ {
+ top: "http://example.com",
+ iframe: "http://example.org",
+ expected: `[type="insecureWarning"]`,
+ },
+ ];
+
+ for (let test of tests) {
+ let urlTop = test.top + DIRECTORY_PATH + "empty.html";
+ let urlIframe =
+ test.iframe + DIRECTORY_PATH + "insecure_test_subframe.html";
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, urlTop);
+ let browser = tab.linkedBrowser;
+
+ await SpecialPowers.spawn(browser, [urlIframe], async url => {
+ await new content.Promise(resolve => {
+ let ifr = content.document.createElement("iframe");
+ ifr.onload = resolve;
+ ifr.src = url;
+ content.document.body.appendChild(ifr);
+ });
+ });
+
+ let popup = document.getElementById("PopupAutoComplete");
+ Assert.ok(popup, "Got popup");
+
+ let ifr = browser.browsingContext.children[0];
+ Assert.ok(ifr, "Got iframe");
+
+ let popupShown = openACPopup(
+ popup,
+ tab.linkedBrowser,
+ "#form-basic-username",
+ ifr
+ );
+ await popupShown;
+
+ let item = popup.querySelector(test.expected);
+ Assert.ok(item, "Got expected richlistitem");
+
+ await BrowserTestUtils.waitForCondition(
+ () => !item.collapsed,
+ "Wait for autocomplete to show"
+ );
+
+ await closePopup(popup);
+ BrowserTestUtils.removeTab(tab);
+ }
+});