summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/siteData/browser_siteData3.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/siteData/browser_siteData3.js')
-rw-r--r--browser/components/preferences/tests/siteData/browser_siteData3.js226
1 files changed, 226 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/siteData/browser_siteData3.js b/browser/components/preferences/tests/siteData/browser_siteData3.js
new file mode 100644
index 0000000000..d2a4fe9838
--- /dev/null
+++ b/browser/components/preferences/tests/siteData/browser_siteData3.js
@@ -0,0 +1,226 @@
+"use strict";
+
+// Test not displaying sites which store 0 byte and don't have persistent storage.
+add_task(async function test_exclusions() {
+ let hosts = await addTestData([
+ {
+ usage: 0,
+ origin: "https://account.xyz.com",
+ persisted: true,
+ },
+ {
+ usage: 0,
+ origin: "https://shopping.xyz.com",
+ persisted: false,
+ },
+ {
+ usage: 1024,
+ origin: "http://cinema.bar.com",
+ persisted: true,
+ },
+ {
+ usage: 1024,
+ origin: "http://email.bar.com",
+ persisted: false,
+ },
+ {
+ usage: 0,
+ origin: "http://cookies.bar.com",
+ cookies: 5,
+ persisted: false,
+ },
+ ]);
+
+ let updatePromise = promiseSiteDataManagerSitesUpdated();
+ let doc = gBrowser.selectedBrowser.contentDocument;
+ await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
+ await updatePromise;
+ await openSiteDataSettingsDialog();
+ assertSitesListed(
+ doc,
+ hosts.filter(host => host != "shopping.xyz.com")
+ );
+
+ await SiteDataTestUtils.clear();
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+});
+
+// Test grouping and listing sites across scheme, port and origin attributes by host
+add_task(async function test_grouping() {
+ let quotaUsage = 7000000;
+ await addTestData([
+ {
+ usage: quotaUsage,
+ origin: "https://account.xyz.com^userContextId=1",
+ cookies: 2,
+ persisted: true,
+ },
+ {
+ usage: quotaUsage,
+ origin: "https://account.xyz.com",
+ cookies: 1,
+ persisted: false,
+ },
+ {
+ usage: quotaUsage,
+ origin: "https://account.xyz.com:123",
+ cookies: 1,
+ persisted: false,
+ },
+ {
+ usage: quotaUsage,
+ origin: "http://account.xyz.com",
+ cookies: 1,
+ persisted: false,
+ },
+ ]);
+
+ let updatedPromise = promiseSiteDataManagerSitesUpdated();
+ await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
+ await updatedPromise;
+ await openSiteDataSettingsDialog();
+ let win = gBrowser.selectedBrowser.contentWindow;
+ let dialogFrame = win.gSubDialog._topDialog._frame;
+ let frameDoc = dialogFrame.contentDocument;
+
+ let siteItems = frameDoc.getElementsByTagName("richlistitem");
+ is(
+ siteItems.length,
+ 1,
+ "Should group sites across scheme, port and origin attributes"
+ );
+
+ let columns = siteItems[0].querySelectorAll(".item-box > label");
+
+ let expected = "account.xyz.com";
+ is(columns[0].value, expected, "Should group and list sites by host");
+
+ is(
+ columns[1].value,
+ "5",
+ "Should group cookies across scheme, port and origin attributes"
+ );
+
+ let [value, unit] = DownloadUtils.convertByteUnits(quotaUsage * 4);
+ let l10nAttributes = frameDoc.l10n.getAttributes(columns[2]);
+ is(
+ l10nAttributes.id,
+ "site-storage-persistent",
+ "Should show the site as persistent if one origin is persistent."
+ );
+ // The shown quota can be slightly larger than the raw data we put in (though it should
+ // never be smaller), but that doesn't really matter to us since we only want to test that
+ // the site data dialog accumulates this into a single column.
+ ok(
+ parseFloat(l10nAttributes.args.value) >= parseFloat(value),
+ "Should show the correct accumulated quota size."
+ );
+ is(
+ l10nAttributes.args.unit,
+ unit,
+ "Should show the correct quota size unit."
+ );
+
+ await SiteDataTestUtils.clear();
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+});
+
+// Test sorting
+add_task(async function test_sorting() {
+ let testData = [
+ {
+ baseDomain: "xyz.com",
+ usage: 1024,
+ origin: "https://account.xyz.com",
+ cookies: 6,
+ persisted: true,
+ },
+ {
+ baseDomain: "foo.com",
+ usage: 1024 * 2,
+ origin: "https://books.foo.com",
+ cookies: 0,
+ persisted: false,
+ },
+ {
+ baseDomain: "bar.com",
+ usage: 1024 * 3,
+ origin: "http://cinema.bar.com",
+ cookies: 3,
+ persisted: true,
+ },
+ ];
+
+ await addTestData(testData);
+
+ let updatePromise = promiseSiteDataManagerSitesUpdated();
+
+ await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
+ await updatePromise;
+ await openSiteDataSettingsDialog();
+
+ let dialog = content.gSubDialog._topDialog;
+ let dialogFrame = dialog._frame;
+ let frameDoc = dialogFrame.contentDocument;
+ let hostCol = frameDoc.getElementById("hostCol");
+ let usageCol = frameDoc.getElementById("usageCol");
+ let cookiesCol = frameDoc.getElementById("cookiesCol");
+ let sitesList = frameDoc.getElementById("sitesList");
+
+ function getHostOrder() {
+ let siteItems = sitesList.getElementsByTagName("richlistitem");
+ return Array.from(siteItems).map(item => item.getAttribute("host"));
+ }
+
+ // Test default sorting by usage, descending.
+ Assert.deepEqual(
+ getHostOrder(),
+ ["cinema.bar.com", "books.foo.com", "account.xyz.com"],
+ "Has sorted descending by usage"
+ );
+
+ // Test sorting on the usage column
+ usageCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["account.xyz.com", "books.foo.com", "cinema.bar.com"],
+ "Has sorted ascending by usage"
+ );
+ usageCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["cinema.bar.com", "books.foo.com", "account.xyz.com"],
+ "Has sorted descending by usage"
+ );
+
+ // Test sorting on the host column
+ hostCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["cinema.bar.com", "books.foo.com", "account.xyz.com"],
+ "Has sorted ascending by base domain"
+ );
+ hostCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["account.xyz.com", "books.foo.com", "cinema.bar.com"],
+ "Has sorted descending by base domain"
+ );
+
+ // Test sorting on the cookies column
+ cookiesCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["books.foo.com", "cinema.bar.com", "account.xyz.com"],
+ "Has sorted ascending by cookies"
+ );
+ cookiesCol.click();
+ Assert.deepEqual(
+ getHostOrder(),
+ ["account.xyz.com", "cinema.bar.com", "books.foo.com"],
+ "Has sorted descending by cookies"
+ );
+
+ await SiteDataTestUtils.clear();
+ BrowserTestUtils.removeTab(gBrowser.selectedTab);
+});