summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/siteData/browser_siteData_multi_select.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/siteData/browser_siteData_multi_select.js')
-rw-r--r--browser/components/preferences/tests/siteData/browser_siteData_multi_select.js119
1 files changed, 119 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/siteData/browser_siteData_multi_select.js b/browser/components/preferences/tests/siteData/browser_siteData_multi_select.js
new file mode 100644
index 0000000000..5ce9d7e1e1
--- /dev/null
+++ b/browser/components/preferences/tests/siteData/browser_siteData_multi_select.js
@@ -0,0 +1,119 @@
+"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);
+});