mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
55b948dec0
--HG-- extra : rebase_source : f486f39feac1fb743edc920618bec29884d515f1
146 lines
5.6 KiB
JavaScript
146 lines
5.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
function test() {
|
|
waitForExplicitFinish();
|
|
// Allow all cookies, then actually set up the test
|
|
SpecialPowers.pushPrefEnv({"set": [["network.cookie.cookieBehavior", 0]]}, initTest);
|
|
}
|
|
|
|
function initTest() {
|
|
const searchTerm = "example";
|
|
const dummyTerm = "elpmaxe";
|
|
|
|
var cm = Components.classes["@mozilla.org/cookiemanager;1"]
|
|
.getService(Components.interfaces.nsICookieManager);
|
|
|
|
// delete all cookies (might be left over from other tests)
|
|
cm.removeAll();
|
|
|
|
// data for cookies
|
|
var vals = [[searchTerm+".com", dummyTerm, dummyTerm], // match
|
|
[searchTerm+".org", dummyTerm, dummyTerm], // match
|
|
[dummyTerm+".com", searchTerm, dummyTerm], // match
|
|
[dummyTerm+".edu", searchTerm+dummyTerm, dummyTerm],// match
|
|
[dummyTerm+".net", dummyTerm, searchTerm], // match
|
|
[dummyTerm+".org", dummyTerm, searchTerm+dummyTerm],// match
|
|
[dummyTerm+".int", dummyTerm, dummyTerm]]; // no match
|
|
|
|
// matches must correspond to above data
|
|
const matches = 6;
|
|
|
|
var ios = Components.classes["@mozilla.org/network/io-service;1"]
|
|
.getService(Components.interfaces.nsIIOService);
|
|
var cookieSvc = Components.classes["@mozilla.org/cookieService;1"]
|
|
.getService(Components.interfaces.nsICookieService);
|
|
var v;
|
|
// inject cookies
|
|
for (v in vals) {
|
|
let [host, name, value] = vals[v];
|
|
var cookieUri = ios.newURI("http://"+host, null, null);
|
|
cookieSvc.setCookieString(cookieUri, null, name+"="+value+";", null);
|
|
}
|
|
|
|
// open cookie manager
|
|
var cmd = window.openDialog("chrome://browser/content/preferences/cookies.xul",
|
|
"Browser:Cookies", "", {});
|
|
|
|
// when it has loaded, run actual tests
|
|
cmd.addEventListener("load", function() {executeSoon(function() {runTest(cmd, searchTerm, vals.length, matches);});}, false);
|
|
}
|
|
|
|
function isDisabled(win, expectation) {
|
|
var disabled = win.document.getElementById("removeAllCookies").disabled;
|
|
is(disabled, expectation, "Remove all cookies button has correct state: "+(expectation?"disabled":"enabled"));
|
|
}
|
|
|
|
function runTest(win, searchTerm, cookies, matches) {
|
|
var cm = Components.classes["@mozilla.org/cookiemanager;1"]
|
|
.getService(Components.interfaces.nsICookieManager);
|
|
|
|
|
|
// number of cookies should match injected cookies
|
|
var cnt = 0,
|
|
enumerator = cm.enumerator;
|
|
while (enumerator.hasMoreElements()) {
|
|
cnt++;
|
|
enumerator.getNext();
|
|
}
|
|
is(cnt, cookies, "Number of cookies match injected cookies");
|
|
|
|
// "delete all cookies" should be enabled
|
|
isDisabled(win, false);
|
|
|
|
// filter cookies and count matches
|
|
win.gCookiesWindow.setFilter(searchTerm);
|
|
is(win.gCookiesWindow._view.rowCount, matches, "Correct number of cookies shown after filter is applied");
|
|
|
|
// "delete all cookies" should be enabled
|
|
isDisabled(win, false);
|
|
|
|
|
|
// select first cookie and delete
|
|
var tree = win.document.getElementById("cookiesList");
|
|
var deleteButton = win.document.getElementById("removeCookie");
|
|
var x = {}, y = {}, width = {}, height = {};
|
|
tree.treeBoxObject.getCoordsForCellItem(0, tree.columns[0], "cell", x, y, width, height);
|
|
EventUtils.synthesizeMouse(tree.body, x.value + width.value / 2, y.value + height.value / 2, {}, win);
|
|
EventUtils.synthesizeMouseAtCenter(deleteButton, {}, win);
|
|
|
|
// count cookies should be matches-1
|
|
is(win.gCookiesWindow._view.rowCount, matches-1, "Deleted selected cookie");
|
|
|
|
// select two adjacent cells and delete
|
|
EventUtils.synthesizeMouse(tree.body, x.value + width.value / 2, y.value + height.value / 2, {}, win);
|
|
deleteButton = win.document.getElementById("removeCookies");
|
|
var eventObj = {};
|
|
if (navigator.platform.indexOf("Mac") >= 0)
|
|
eventObj.metaKey = true;
|
|
else
|
|
eventObj.ctrlKey = true;
|
|
tree.treeBoxObject.getCoordsForCellItem(1, tree.columns[0], "cell", x, y, width, height);
|
|
EventUtils.synthesizeMouse(tree.body, x.value + width.value / 2, y.value + height.value / 2, eventObj, win);
|
|
EventUtils.synthesizeMouseAtCenter(deleteButton, {}, win);
|
|
|
|
// count cookies should be matches-3
|
|
is(win.gCookiesWindow._view.rowCount, matches-3, "Deleted selected two adjacent cookies");
|
|
|
|
// "delete all cookies" should be enabled
|
|
isDisabled(win, false);
|
|
|
|
// delete all cookies and count
|
|
var deleteAllButton = win.document.getElementById("removeAllCookies");
|
|
EventUtils.synthesizeMouseAtCenter(deleteAllButton, {}, win);
|
|
is(win.gCookiesWindow._view.rowCount, 0, "Deleted all matching cookies");
|
|
|
|
// "delete all cookies" should be disabled
|
|
isDisabled(win, true);
|
|
|
|
// clear filter and count should be cookies-matches
|
|
win.gCookiesWindow.setFilter("");
|
|
is(win.gCookiesWindow._view.rowCount, cookies-matches, "Unmatched cookies remain");
|
|
|
|
// "delete all cookies" should be enabled
|
|
isDisabled(win, false);
|
|
|
|
// delete all cookies and count should be 0
|
|
EventUtils.synthesizeMouseAtCenter(deleteAllButton, {}, win);
|
|
is(win.gCookiesWindow._view.rowCount, 0, "Deleted all cookies");
|
|
|
|
// check that datastore is also at 0
|
|
var cnt = 0,
|
|
enumerator = cm.enumerator;
|
|
while (enumerator.hasMoreElements()) {
|
|
cnt++;
|
|
enumerator.getNext();
|
|
}
|
|
is(cnt, 0, "Zero cookies remain");
|
|
|
|
// "delete all cookies" should be disabled
|
|
isDisabled(win, true);
|
|
|
|
// clean up
|
|
win.close();
|
|
finish();
|
|
}
|