gecko/toolkit/mozapps/extensions/test/browser/head.js

107 lines
2.8 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
const MANAGER_URI = "about:addons";
const PREF_LOGGING_ENABLED = "extensions.logging.enabled";
var gPendingTests = [];
var gTestsRun = 0;
function add_test(test) {
gPendingTests.push(test);
}
function run_next_test() {
if (gPendingTests.length == 0) {
end_test();
return;
}
gTestsRun++;
info("Running test " + gTestsRun);
gPendingTests.shift()();
}
function wait_for_view_load(aManagerWindow, aCallback) {
if (!aManagerWindow.gViewController.currentViewObj.node.hasAttribute("loading")) {
aCallback(aManagerWindow);
return;
}
aManagerWindow.document.addEventListener("ViewChanged", function() {
aManagerWindow.document.removeEventListener("ViewChanged", arguments.callee, false);
aCallback(aManagerWindow);
}, false);
}
function open_manager(aView, aCallback) {
function setup_manager(aManagerWindow) {
if (aView)
aManagerWindow.loadView(aView);
ok(aManagerWindow != null, "Should have an add-ons manager window");
is(aManagerWindow.location, MANAGER_URI, "Should be displaying the correct UI");
wait_for_view_load(aManagerWindow, aCallback);
}
if ("switchToTabHavingURI" in window) {
switchToTabHavingURI(MANAGER_URI, true, function(aBrowser) {
setup_manager(aBrowser.contentWindow.wrappedJSObject);
});
return;
}
openDialog("about:addons").addEventListener("load", function() {
this.removeEventListener("load", arguments.callee, false);
setup_manager(this);
}, false);
}
function CertOverrideListener(host, bits) {
this.host = host;
this.bits = bits;
}
CertOverrideListener.prototype = {
host: null,
bits: null,
getInterface: function (aIID) {
return this.QueryInterface(aIID);
},
QueryInterface: function(aIID) {
if (aIID.equals(Ci.nsIBadCertListener2) ||
aIID.equals(Ci.nsIInterfaceRequestor) ||
aIID.equals(Ci.nsISupports))
return this;
throw Components.results.NS_ERROR_NO_INTERFACE;
},
notifyCertProblem: function (socketInfo, sslStatus, targetHost) {
cert = sslStatus.QueryInterface(Components.interfaces.nsISSLStatus)
.serverCert;
var cos = Cc["@mozilla.org/security/certoverride;1"].
getService(Ci.nsICertOverrideService);
cos.rememberValidityOverride(this.host, -1, cert, this.bits, false);
return true;
}
}
// Add overrides for the bad certificates
function addCertOverride(host, bits) {
var req = new XMLHttpRequest();
try {
req.open("GET", "https://" + host + "/", false);
req.channel.notificationCallbacks = new CertOverrideListener(host, bits);
req.send(null);
}
catch (e) {
// This request will fail since the SSL server is not trusted yet
}
}