fune/browser/base/content/test/pageinfo/browser_pageinfo_security.js
Johann Hofmann 4a0b3d1219 Bug 1348223 - Part 4 - Add and update tests for removing site data and cookies in the page info window. r=florian
MozReview-Commit-ID: gAaComSklW

--HG--
extra : rebase_source : 8bc84de30f2168bd29def812f5a2550fb9c0e1a6
2018-03-22 17:29:51 +01:00

93 lines
3.8 KiB
JavaScript

ChromeUtils.import("resource:///modules/SitePermissions.jsm");
ChromeUtils.defineModuleGetter(this, "SiteDataTestUtils",
"resource://testing-common/SiteDataTestUtils.jsm");
ChromeUtils.defineModuleGetter(this, "DownloadUtils",
"resource://gre/modules/DownloadUtils.jsm");
const TEST_ORIGIN = "https://example.com";
const TEST_SUB_ORIGIN = "https://test1.example.com";
const REMOVE_DIALOG_URL = "chrome://browser/content/preferences/siteDataRemoveSelected.xul";
// Test displaying and removing quota managed data.
add_task(async function test_SiteData() {
await SiteDataTestUtils.addToIndexedDB(TEST_ORIGIN);
await BrowserTestUtils.withNewTab(TEST_ORIGIN, async function(browser) {
let totalUsage = await SiteDataTestUtils.getQuotaUsage(TEST_ORIGIN);
Assert.greater(totalUsage, 0, "The total usage should not be 0");
let pageInfo = BrowserPageInfo(TEST_ORIGIN, "securityTab");
await BrowserTestUtils.waitForEvent(pageInfo, "load");
let label = pageInfo.document.getElementById("security-privacy-sitedata-value");
let clearButton = pageInfo.document.getElementById("security-clear-sitedata");
let size = DownloadUtils.convertByteUnits(totalUsage);
// The usage details are filled asynchronously, so we assert that they're present by
// waiting for them to be filled in.
// We only wait for the right unit to appear, since this number is intermittently
// varying by slight amounts on infra machines.
await BrowserTestUtils.waitForCondition(() => label.textContent.includes(size[1]),
"Should show site data usage in the security section.");
let siteDataUpdated = TestUtils.topicObserved("sitedatamanager:sites-updated");
let removeDialogPromise = BrowserTestUtils.promiseAlertDialogOpen("accept", REMOVE_DIALOG_URL);
clearButton.click();
await removeDialogPromise;
await siteDataUpdated;
totalUsage = await SiteDataTestUtils.getQuotaUsage(TEST_ORIGIN);
is(totalUsage, 0, "The total usage should be 0");
await BrowserTestUtils.waitForCondition(() => label.textContent == "No",
"Should show no site data usage in the security section.");
pageInfo.close();
});
});
// Test displaying and removing cookies.
add_task(async function test_Cookies() {
// Add some test cookies.
SiteDataTestUtils.addToCookies(TEST_ORIGIN, "test1", "1");
SiteDataTestUtils.addToCookies(TEST_ORIGIN, "test2", "2");
SiteDataTestUtils.addToCookies(TEST_SUB_ORIGIN, "test1", "1");
await BrowserTestUtils.withNewTab(TEST_ORIGIN, async function(browser) {
let pageInfo = BrowserPageInfo(TEST_ORIGIN, "securityTab");
await BrowserTestUtils.waitForEvent(pageInfo, "load");
let label = pageInfo.document.getElementById("security-privacy-sitedata-value");
let clearButton = pageInfo.document.getElementById("security-clear-sitedata");
// The usage details are filled asynchronously, so we assert that they're present by
// waiting for them to be filled in.
await BrowserTestUtils.waitForCondition(() => label.textContent.includes("cookies"),
"Should show cookies in the security section.");
let cookiesCleared = TestUtils.topicObserved("cookie-changed", (subj, data) => data == "deleted");
let removeDialogPromise = BrowserTestUtils.promiseAlertDialogOpen("accept", REMOVE_DIALOG_URL);
clearButton.click();
await removeDialogPromise;
await cookiesCleared;
let uri = Services.io.newURI(TEST_ORIGIN);
is(Services.cookies.countCookiesFromHost(uri.host), 0, "Cookies from the base domain should be cleared");
await BrowserTestUtils.waitForCondition(() => label.textContent == "No",
"Should show no cookies in the security section.");
pageInfo.close();
});
});
// Clean up in case we missed anything...
add_task(async function cleanup() {
await SiteDataTestUtils.clear();
});