Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: tsan
- Manifest: browser/components/preferences/tests/siteData/browser.toml
"use strict";
// Test selecting and removing partial sites
add_task(async function () {
await SiteDataTestUtils.clear();
let hosts = await addTestData([
{
usage: 1024,
persisted: false,
},
{
usage: 1024 * 4,
persisted: true,
},
{
usage: 1024 * 3,
persisted: false,
},
{
usage: 1024 * 2,
persisted: true,
},
{
usage: 1024 * 6,
persisted: true,
},
{
usage: 1024 * 5,
persisted: false,
},
{
usage: 1024 * 5,
persisted: false,
},
{
usage: 1024 * 5,
persisted: false,
},
]);
// Align the order of test hosts with the order of the site data table.
hosts.sort();
let updatePromise = promiseSiteDataManagerSitesUpdated();
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
await updatePromise;
await openSiteDataSettingsDialog();
let doc = gBrowser.selectedBrowser.contentDocument;
// Test the initial state
assertSitesListed(doc, hosts);
let win = gBrowser.selectedBrowser.contentWindow;
let frameDoc = win.gSubDialog._topDialog._frame.contentDocument;
let removeBtn = frameDoc.getElementById("removeSelected");
is(
removeBtn.disabled,
true,
"Should start with disabled removeSelected button"
);
let hostCol = frameDoc.getElementById("hostCol");
hostCol.click();
let removeDialogOpenPromise = BrowserTestUtils.promiseAlertDialogOpen(
"accept",
REMOVE_DIALOG_URL
);
let settingsDialogClosePromise = promiseSettingsDialogClose();
// Select some sites to remove.
let sitesList = frameDoc.getElementById("sitesList");
hosts.slice(0, 2).forEach(host => {
let site = sitesList.querySelector(`richlistitem[host="${host}"]`);
sitesList.addItemToSelection(site);
});
is(removeBtn.disabled, false, "Should enable the removeSelected button");
removeBtn.doCommand();
is(sitesList.selectedIndex, 0, "Should select next item");
assertSitesListed(doc, hosts.slice(2));
// Select some other sites to remove with Delete.
hosts.slice(2, 4).forEach(host => {
let site = sitesList.querySelector(`richlistitem[host="${host}"]`);
sitesList.addItemToSelection(site);
});
is(removeBtn.disabled, false, "Should enable the removeSelected button");
// Move the focus from the search box to the list
sitesList.focus();
EventUtils.synthesizeKey("VK_DELETE");
is(sitesList.selectedIndex, 0, "Should select next item");
assertSitesListed(doc, hosts.slice(4));
updatePromise = promiseSiteDataManagerSitesUpdated();
let saveBtn = frameDoc.querySelector("dialog").getButton("accept");
saveBtn.doCommand();
await removeDialogOpenPromise;
await settingsDialogClosePromise;
await updatePromise;
await openSiteDataSettingsDialog();
assertSitesListed(doc, hosts.slice(4));
await SiteDataTestUtils.clear();
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});