diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js b/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js deleted file mode 100644 index f4eda10..0000000 --- a/data/extensions/https-everywhere@eff.org/chrome/content/ruleset-tests.js +++ /dev/null @@ -1,189 +0,0 @@ -// 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<numTabs; i++) { - newTab(num); - } - } - - function newTab(number) { - num +=1; - // start a test in this tab - if(urls.length) { - - // open a new tab - var tab = gBrowser.addTab(urls[number].url); - - // wait for the page to load - var intervalId = window.setTimeout(function(){ - - // detect mixed content blocker - if(PopupNotifications.getNotification("mixed-content-blocked", gBrowser.getBrowserForTab(tab))) { - // build output to log - ruleset_xmls = ''; - for(let i=0; i < urls[number].ruleset_ids.length; i++) { - ruleset_xmls += urls[number].ruleset_ids[i].xmlName + ', '; - } - if(ruleset_xmls != '') - ruleset_xmls = ruleset_xmls.substring(ruleset_xmls.length-2, 2); - var output = 'MCB triggered: '+urls[number].url+' ('+ruleset_xmls+')'; - - HTTPSEverywhere.httpseRulesetTests.updateLog(output); - } - - // close this tab, and open another - closeTab(tab); - - }, 10000); - - } else { - - //to run if urls is empty - if (!finished) { - finished = true; - window.setTimeout(function(){ - gBrowser.removeCurrentTab(); - }, 10000); - } - } - } - - //closes tab - function closeTab(tab) { - HTTPSEverywhere.httpseRulesetTests.updateStatusBar(num, urls.length); - - gBrowser.selectedTab = tab; - gBrowser.removeCurrentTab(); - - // open a new tab, if the tests haven't been canceled - if(!HTTPSEverywhere.httpseRulesetTests.cancel) { - newTab(num); - } - } - - //manages write out of output mochilog.txt, which contains sites that trigger mcb - function writeout(weburl) { - - //initialize file - var file = Components.classes["@mozilla.org/file/directory_service;1"]. - getService(Components.interfaces.nsIProperties). - get("Home", Components.interfaces.nsIFile); - writeoutfile = "mochilog.txt"; - file.append(writeoutfile); - - //create file if it does not already exist - if(!file.exists()) { - file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420); - } - - //initialize output stream - var stream = Components.classes["@mozilla.org/network/file-output-stream;1"] - .createInstance(Components.interfaces.nsIFileOutputStream); - - //permissions are set to append (will not delete existing contents) - stream.init(file, 0x02 | 0x08 | 0x10, 0666, 0); - - var content = weburl + "\n"; - - //Deal with ascii text and write out - var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. - createInstance(Components.interfaces.nsIConverterOutputStream); - converter.init(stream, "UTF-8", 0, 0); - converter.writeString(content); - converter.close(); - - //alternative write out if ascii is not a concern - //stream.write(content,content.length); - //stream.close(); - - } - test(); -} - - - |