mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 14:25:52 +00:00
Bug 1442183 - Allow multiple selection in the site data manager list. r=prathiksha
MozReview-Commit-ID: D1u3963xC6C --HG-- extra : rebase_source : e6e04f7295c7fc354b1c4049d37f943354d6476c
This commit is contained in:
parent
5ccc4a0150
commit
470c2e1592
@ -12,3 +12,4 @@ support-files =
|
||||
skip-if = (os == 'linux' && debug) # Bug 1439332
|
||||
[browser_siteData2.js]
|
||||
[browser_siteData3.js]
|
||||
[browser_siteData_multi_select.js]
|
||||
|
@ -1,19 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
function promiseSettingsDialogClose() {
|
||||
return new Promise(resolve => {
|
||||
let win = gBrowser.selectedBrowser.contentWindow;
|
||||
let dialogOverlay = win.gSubDialog._topDialog._overlay;
|
||||
let dialogWin = win.gSubDialog._topDialog._frame.contentWindow;
|
||||
dialogWin.addEventListener("unload", function unload() {
|
||||
if (dialogWin.document.documentURI === "chrome://browser/content/preferences/siteDataSettings.xul") {
|
||||
isnot(dialogOverlay.style.visibility, "visible", "The Settings dialog should be hidden");
|
||||
resolve();
|
||||
}
|
||||
}, { once: true });
|
||||
});
|
||||
}
|
||||
|
||||
function assertAllSitesNotListed(win) {
|
||||
let frameDoc = win.gSubDialog._topDialog._frame.contentDocument;
|
||||
let removeBtn = frameDoc.getElementById("removeSelected");
|
||||
|
@ -0,0 +1,84 @@
|
||||
"use strict";
|
||||
|
||||
// Test selecting and removing partial sites
|
||||
add_task(async function() {
|
||||
mockSiteDataManager.register(SiteDataManager, [
|
||||
{
|
||||
usage: 1024,
|
||||
origin: "https://account.xyz.com",
|
||||
persisted: true
|
||||
},
|
||||
{
|
||||
usage: 1024,
|
||||
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: 1024,
|
||||
origin: "https://s3-us-west-2.amazonaws.com",
|
||||
persisted: true
|
||||
},
|
||||
{
|
||||
usage: 1024,
|
||||
origin: "https://127.0.0.1",
|
||||
persisted: false
|
||||
},
|
||||
{
|
||||
usage: 1024,
|
||||
origin: "https://[0:0:0:0:0:0:0:1]",
|
||||
persisted: true
|
||||
},
|
||||
]);
|
||||
let fakeHosts = mockSiteDataManager.fakeSites.map(site => site.principal.URI.host);
|
||||
|
||||
let updatePromise = promiseSiteDataManagerSitesUpdated();
|
||||
await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
|
||||
await updatePromise;
|
||||
await openSiteDataSettingsDialog();
|
||||
|
||||
let doc = gBrowser.selectedBrowser.contentDocument;
|
||||
|
||||
// Test the initial state
|
||||
assertSitesListed(doc, fakeHosts);
|
||||
|
||||
let removeDialogOpenPromise = BrowserTestUtils.promiseAlertDialogOpen("accept", REMOVE_DIALOG_URL);
|
||||
let settingsDialogClosePromise = promiseSettingsDialogClose();
|
||||
|
||||
let win = gBrowser.selectedBrowser.contentWindow;
|
||||
let frameDoc = win.gSubDialog._topDialog._frame.contentDocument;
|
||||
|
||||
// Select some sites to remove.
|
||||
let sitesList = frameDoc.getElementById("sitesList");
|
||||
fakeHosts.slice(0, 2).forEach(host => {
|
||||
let site = sitesList.querySelector(`richlistitem[host="${host}"]`);
|
||||
sitesList.addItemToSelection(site);
|
||||
});
|
||||
|
||||
let removeBtn = frameDoc.getElementById("removeSelected");
|
||||
is(removeBtn.disabled, false, "Should enable the removeSelected button");
|
||||
removeBtn.doCommand();
|
||||
is(removeBtn.disabled, true, "Should disable the removeSelected button");
|
||||
|
||||
let saveBtn = frameDoc.getElementById("save");
|
||||
assertSitesListed(doc, fakeHosts.slice(2));
|
||||
saveBtn.doCommand();
|
||||
|
||||
await removeDialogOpenPromise;
|
||||
await settingsDialogClosePromise;
|
||||
await openSiteDataSettingsDialog();
|
||||
|
||||
assertSitesListed(doc, fakeHosts.slice(2));
|
||||
|
||||
await mockSiteDataManager.unregister();
|
||||
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
@ -115,6 +115,20 @@ function openSiteDataSettingsDialog() {
|
||||
return fullyLoadPromise;
|
||||
}
|
||||
|
||||
function promiseSettingsDialogClose() {
|
||||
return new Promise(resolve => {
|
||||
let win = gBrowser.selectedBrowser.contentWindow;
|
||||
let dialogOverlay = win.gSubDialog._topDialog._overlay;
|
||||
let dialogWin = win.gSubDialog._topDialog._frame.contentWindow;
|
||||
dialogWin.addEventListener("unload", function unload() {
|
||||
if (dialogWin.document.documentURI === "chrome://browser/content/preferences/siteDataSettings.xul") {
|
||||
isnot(dialogOverlay.style.visibility, "visible", "The Settings dialog should be hidden");
|
||||
resolve();
|
||||
}
|
||||
}, { once: true });
|
||||
});
|
||||
}
|
||||
|
||||
function assertSitesListed(doc, hosts) {
|
||||
let frameDoc = content.gSubDialog._topDialog._frame.contentDocument;
|
||||
let removeBtn = frameDoc.getElementById("removeSelected");
|
||||
|
@ -259,10 +259,7 @@ let gSiteDataSettings = {
|
||||
},
|
||||
|
||||
onClickRemoveSelected() {
|
||||
let selected = this._list.selectedItem;
|
||||
if (selected) {
|
||||
this._removeSiteItems([selected]);
|
||||
}
|
||||
this._removeSiteItems(this._list.selectedItems);
|
||||
this._list.clearSelection();
|
||||
},
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
</hbox>
|
||||
<separator class="thin"/>
|
||||
|
||||
<richlistbox id="sitesList" orient="vertical" flex="1">
|
||||
<richlistbox seltype="multiple" id="sitesList" orient="vertical" flex="1">
|
||||
<listheader>
|
||||
<treecol flex="4" width="50" label="&hostCol.label;" id="hostCol"/>
|
||||
<treecol flex="1" width="50" label="&cookiesCol.label;" id="cookiesCol"/>
|
||||
|
Loading…
Reference in New Issue
Block a user