Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
add_setup(async function () {
await BrowserTestUtils.openNewForegroundTab({
gBrowser,
url: "about:logins",
});
registerCleanupFunction(() => {
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
});
add_task(async function test_login_added() {
let login = {
guid: "70",
username: "jared",
password: "deraj",
};
let browser = gBrowser.selectedBrowser;
browser.browsingContext.currentWindowGlobal
.getActor("AboutLogins")
.sendAsyncMessage("AboutLogins:LoginAdded", login);
await SpecialPowers.spawn(browser, [login], async addedLogin => {
let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
let loginFound = await ContentTaskUtils.waitForCondition(() => {
return (
loginList._loginGuidsSortedOrder.length == 1 &&
loginList._loginGuidsSortedOrder[0] == addedLogin.guid
);
}, "Waiting for login to be added");
Assert.ok(loginFound, "Newly added logins should be added to the page");
});
});
add_task(async function test_login_modified() {
let login = {
guid: "70",
username: "jared@example.com",
password: "deraj",
};
let browser = gBrowser.selectedBrowser;
browser.browsingContext.currentWindowGlobal
.getActor("AboutLogins")
.sendAsyncMessage("AboutLogins:LoginModified", login);
await SpecialPowers.spawn(browser, [login], async modifiedLogin => {
let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
let loginFound = await ContentTaskUtils.waitForCondition(() => {
return (
loginList._loginGuidsSortedOrder.length == 1 &&
loginList._loginGuidsSortedOrder[0] == modifiedLogin.guid &&
loginList._logins[loginList._loginGuidsSortedOrder[0]].login.username ==
modifiedLogin.username
);
}, "Waiting for username to get updated");
Assert.ok(loginFound, "The login should get updated on the page");
});
});
add_task(async function test_login_removed() {
let login = {
guid: "70",
username: "jared@example.com",
password: "deraj",
};
let browser = gBrowser.selectedBrowser;
browser.browsingContext.currentWindowGlobal
.getActor("AboutLogins")
.sendAsyncMessage("AboutLogins:LoginRemoved", login);
await SpecialPowers.spawn(browser, [], async () => {
let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
let loginRemoved = await ContentTaskUtils.waitForCondition(() => {
return !loginList._loginGuidsSortedOrder.length;
}, "Waiting for login to get removed");
Assert.ok(loginRemoved, "The login should be removed from the page");
});
});
add_task(async function test_all_logins_removed() {
// Setup the test with 2 logins.
let logins = [
{
guid: "70",
username: "jared",
password: "deraj",
},
{
guid: "71",
username: "ntim",
password: "verysecurepassword",
},
];
let browser = gBrowser.selectedBrowser;
browser.browsingContext.currentWindowGlobal
.getActor("AboutLogins")
.sendAsyncMessage("AboutLogins:AllLogins", logins);
await SpecialPowers.spawn(browser, [logins], async addedLogins => {
let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
let loginFound = await ContentTaskUtils.waitForCondition(() => {
return (
loginList._loginGuidsSortedOrder.length == 2 &&
loginList._loginGuidsSortedOrder[0] == addedLogins[0].guid &&
loginList._loginGuidsSortedOrder[1] == addedLogins[1].guid
);
}, "Waiting for login to be added");
Assert.ok(loginFound, "Newly added logins should be added to the page");
Assert.ok(
!content.document.documentElement.classList.contains("no-logins"),
"Should not be in no logins view after adding logins"
);
Assert.ok(
!loginList.classList.contains("no-logins"),
"login-list should not be in no logins view after adding logins"
);
});
Services.logins.removeAllUserFacingLogins();
await SpecialPowers.spawn(browser, [], async () => {
let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
let loginFound = await ContentTaskUtils.waitForCondition(() => {
return !loginList._loginGuidsSortedOrder.length;
}, "Waiting for logins to be cleared");
Assert.ok(loginFound, "Logins should be cleared");
Assert.ok(
content.document.documentElement.classList.contains("no-logins"),
"Should be in no logins view after clearing"
);
Assert.ok(
loginList.classList.contains("no-logins"),
"login-list should be in no logins view after clearing"
);
});
});