From 02da35db344679e666459b1e84946c7c9e5ba464 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Sat, 10 Oct 2015 11:25:26 -0500 Subject: HTTPS-Everywhere updated to 5.1.1 --- .../chrome/content/ruleset-tests.js | 189 +++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 data/extensions/https-everywhere-eff@eff.org/chrome/content/ruleset-tests.js (limited to 'data/extensions/https-everywhere-eff@eff.org/chrome/content/ruleset-tests.js') diff --git a/data/extensions/https-everywhere-eff@eff.org/chrome/content/ruleset-tests.js b/data/extensions/https-everywhere-eff@eff.org/chrome/content/ruleset-tests.js new file mode 100644 index 0000000..f4eda10 --- /dev/null +++ b/data/extensions/https-everywhere-eff@eff.org/chrome/content/ruleset-tests.js @@ -0,0 +1,189 @@ +// 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