// load the HTTPS Everywhere component var HTTPSEverywhere = null; try { HTTPSEverywhere = Components.classes["@eff.org/https-everywhere;1"] .getService(Components.interfaces.nsISupports) .wrappedJSObject; } catch(e) { // HTTPS Everywhere doesn't seem to be installed } // attach testRunner to the HTTPS Everywhere component so that status.js can run it if(HTTPSEverywhere) { HTTPSEverywhere.httpseRulesetTests = { testRunner: testRunner }; } function openStatus() { // make sure mixed content blocking preferences are correct Services.prefs.setBoolPref("security.mixed_content.block_display_content", false); Services.prefs.setBoolPref("security.mixed_content.block_active_content", true); // open the status tab var statusTab = gBrowser.addTab('chrome://https-everywhere/content/ruleset-tests-status.xul'); gBrowser.selectedTab = statusTab; } // FIXME use a class rather than global state var left_star = new RegExp(/^\*\./); // *.example.com var accepted_test_targets = {} function addTestTarget(urls, target, ruleset_ids) { // Add one target and associated metadata to the list of // URLs to be tested, performing housekeeping along the way var active_ids = []; if (target in accepted_test_targets) return; for (var n = 0; n < ruleset_ids.length; n++) { var rs_id = ruleset_ids[n]; var rs = HTTPSEverywhere.https_rules.rulesetsByID[rs_id]; if (rs.active) { active_ids.push(rs_id) }; } // Some rulesets that might rewrite this target, let's test them if (active_ids.length > 0) { urls.push({ url: 'http://'+target, target: target, ruleset_ids: active_ids }); } } function testRunner() { Components.utils.import("resource://gre/modules/PopupNotifications.jsm"); const numTabs = 6; var finished = false; var output = []; var urls = []; var num = 0; var targets_to_ids = HTTPSEverywhere.https_rules.targets; var ruleset_ids; accepted_test_targets = {}; // reset each time // we need every ruleset loaded from DB to check if it's active HTTPSEverywhere.https_rules.loadAllRulesets(); for(var target in targets_to_ids) { ruleset_ids = targets_to_ids[target]; if(target.indexOf("*") == -1) { addTestTarget(urls, target, ruleset_ids); } else { // target is like *.example.wildcard.com, or www.example.* // let's see what we can do... var t = target.replace(left_star, "www."); if (t.indexOf("*") == -1) { addTestTarget(urls, t, ruleset_ids); } } } function test() { var i; HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); // start loading all the tabs window.focus for(i=0; i