forked from mirrors/gecko-dev
119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
"use strict";
|
|
|
|
// Test selecting and removing partial sites
|
|
add_task(async function () {
|
|
await SiteDataTestUtils.clear();
|
|
|
|
let hosts = await addTestData([
|
|
{
|
|
usage: 1024,
|
|
origin: "https://127.0.0.1",
|
|
persisted: false,
|
|
},
|
|
{
|
|
usage: 1024 * 4,
|
|
origin: "http://cinema.bar.com",
|
|
persisted: true,
|
|
},
|
|
{
|
|
usage: 1024 * 3,
|
|
origin: "http://email.bar.com",
|
|
persisted: false,
|
|
},
|
|
{
|
|
usage: 1024 * 2,
|
|
origin: "https://s3-us-west-2.amazonaws.com",
|
|
persisted: true,
|
|
},
|
|
{
|
|
usage: 1024 * 6,
|
|
origin: "https://account.xyz.com",
|
|
persisted: true,
|
|
},
|
|
{
|
|
usage: 1024 * 5,
|
|
origin: "https://shopping.xyz.com",
|
|
persisted: false,
|
|
},
|
|
{
|
|
usage: 1024 * 5,
|
|
origin: "https://example.com",
|
|
persisted: false,
|
|
},
|
|
{
|
|
usage: 1024 * 5,
|
|
origin: "https://example.net",
|
|
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);
|
|
});
|