mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
152 lines
4.7 KiB
JavaScript
152 lines
4.7 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
Components.utils.import("resource://gre/modules/PlacesUtils.jsm");
|
||
|
Components.utils.import("resource://gre/modules/NetUtil.jsm");
|
||
|
|
||
|
const ABOUT_PERMISSIONS_SPEC = "about:permissions";
|
||
|
|
||
|
const TEST_URI_1 = NetUtil.newURI("http://mozilla.com/");
|
||
|
const TEST_URI_2 = NetUtil.newURI("http://mozilla.org/");
|
||
|
const TEST_URI_3 = NetUtil.newURI("http://wikipedia.org/");
|
||
|
|
||
|
// values from DefaultPermissions object
|
||
|
const PERM_UNKNOWN = 0;
|
||
|
const PERM_ALLOW = 1;
|
||
|
const PERM_DENY = 2;
|
||
|
const PERM_SESION = 8;
|
||
|
|
||
|
// used to set permissions on test sites
|
||
|
const TEST_PERMS = {
|
||
|
"password": PERM_ALLOW,
|
||
|
"cookie": PERM_ALLOW,
|
||
|
"geo": PERM_UNKNOWN,
|
||
|
"indexedDB": PERM_UNKNOWN,
|
||
|
"popup": PERM_DENY
|
||
|
};
|
||
|
|
||
|
function test() {
|
||
|
waitForExplicitFinish();
|
||
|
registerCleanupFunction(cleanUp);
|
||
|
setup();
|
||
|
runNextTest();
|
||
|
}
|
||
|
|
||
|
function setup() {
|
||
|
// add test history visit
|
||
|
PlacesUtils.history.addVisit(TEST_URI_1, Date.now() * 1000, null,
|
||
|
Ci.nsINavHistoryService.TRANSITION_LINK, false, 0);
|
||
|
|
||
|
// set permissions ourselves to avoid problems with different defaults
|
||
|
// from test harness configuration
|
||
|
for (let type in TEST_PERMS) {
|
||
|
if (type == "password") {
|
||
|
Services.logins.setLoginSavingEnabled(TEST_URI_2.prePath, true);
|
||
|
} else {
|
||
|
// set permissions on a site without history visits to test enumerateServices
|
||
|
Services.perms.add(TEST_URI_2, type, TEST_PERMS[type]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Services.perms.add(TEST_URI_3, "popup", TEST_PERMS["popup"]);
|
||
|
}
|
||
|
|
||
|
function cleanUp() {
|
||
|
for (let type in TEST_PERMS) {
|
||
|
if (type != "password") {
|
||
|
Services.perms.remove(TEST_URI_1.host, type);
|
||
|
Services.perms.remove(TEST_URI_2.host, type);
|
||
|
Services.perms.remove(TEST_URI_3.host, type);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function runNextTest() {
|
||
|
if (gTestIndex == tests.length) {
|
||
|
waitForClearHistory(finish);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
let nextTest = tests[gTestIndex++];
|
||
|
info(nextTest.desc);
|
||
|
|
||
|
function preinit_observer() {
|
||
|
Services.obs.removeObserver(preinit_observer, "browser-permissions-preinit", false);
|
||
|
nextTest.preInit();
|
||
|
}
|
||
|
Services.obs.addObserver(preinit_observer, "browser-permissions-preinit", false);
|
||
|
|
||
|
function init_observer() {
|
||
|
Services.obs.removeObserver(init_observer, "browser-permissions-initialized", false);
|
||
|
nextTest.run();
|
||
|
}
|
||
|
Services.obs.addObserver(init_observer, "browser-permissions-initialized", false);
|
||
|
|
||
|
// open about:permissions
|
||
|
let tab = gBrowser.selectedTab = gBrowser.addTab("about:permissions");
|
||
|
registerCleanupFunction(function() {
|
||
|
gBrowser.removeTab(tab);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
var gSitesList;
|
||
|
|
||
|
var gTestIndex = 0;
|
||
|
var tests = [
|
||
|
// 'preInit' occurs after opening about:permissions, before sites-list is populated
|
||
|
// 'run' occurs after sites-list is populated
|
||
|
{
|
||
|
desc: "test filtering before sites-list is fully constructed.",
|
||
|
preInit: function() {
|
||
|
let sitesFilter = gBrowser.contentDocument.getElementById("sites-filter");
|
||
|
sitesFilter.value = TEST_URI_2.host;
|
||
|
sitesFilter.doCommand();
|
||
|
},
|
||
|
run: function() {
|
||
|
let testSite1 = getSiteItem(TEST_URI_1.host);
|
||
|
ok(testSite1.collapsed, "test site 1 is collapsed after early filtering");
|
||
|
let testSite2 = getSiteItem(TEST_URI_2.host);
|
||
|
ok(!testSite2.collapsed, "test site 2 is not collapsed after early filtering");
|
||
|
let testSite3 = getSiteItem(TEST_URI_3.host);
|
||
|
ok(testSite3.collapsed, "test site 3 is collapsed after early filtering");
|
||
|
|
||
|
runNextTest();
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
desc: "test removing from sites-list before it is fully constructed.",
|
||
|
preInit: function() {
|
||
|
let pb = Cc["@mozilla.org/privatebrowsing;1"].
|
||
|
getService(Ci.nsIPrivateBrowsingService);
|
||
|
pb.removeDataFromDomain(TEST_URI_2.host);
|
||
|
},
|
||
|
run: function() {
|
||
|
let testSite1 = getSiteItem(TEST_URI_1.host);
|
||
|
ok(!testSite2, "test site 1 was not removed from sites list");
|
||
|
let testSite2 = getSiteItem(TEST_URI_2.host);
|
||
|
ok(!testSite2, "test site 2 was pre-removed from sites list");
|
||
|
let testSite3 = getSiteItem(TEST_URI_3.host);
|
||
|
ok(!testSite2, "test site 3 was not removed from sites list");
|
||
|
|
||
|
runNextTest();
|
||
|
}
|
||
|
}
|
||
|
];
|
||
|
|
||
|
function getSiteItem(aHost) {
|
||
|
return gBrowser.contentDocument.
|
||
|
querySelector(".site[value='" + aHost + "']");
|
||
|
}
|
||
|
|
||
|
// copied from toolkit/components/places/tests/head_common.js
|
||
|
function waitForClearHistory(aCallback) {
|
||
|
let observer = {
|
||
|
observe: function(aSubject, aTopic, aData) {
|
||
|
Services.obs.removeObserver(this, PlacesUtils.TOPIC_EXPIRATION_FINISHED);
|
||
|
aCallback();
|
||
|
}
|
||
|
};
|
||
|
Services.obs.addObserver(observer, PlacesUtils.TOPIC_EXPIRATION_FINISHED, false);
|
||
|
PlacesUtils.bhistory.removeAllPages();
|
||
|
}
|