diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 20:39:48 -0400 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-09-13 21:02:13 -0400 |
commit | d26b319fd6f98517cc3421f10bf18698b953e4d2 (patch) | |
tree | bc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/https-everywhere@eff.org/popup.js | |
parent | c3b304c51a3386ea09527a479a883253ea35243a (diff) |
Updated extensions list for v60
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/popup.js')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/popup.js | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/data/extensions/https-everywhere@eff.org/popup.js b/data/extensions/https-everywhere@eff.org/popup.js deleted file mode 100644 index d9276cc..0000000 --- a/data/extensions/https-everywhere@eff.org/popup.js +++ /dev/null @@ -1,253 +0,0 @@ -/* global sendMessage */ - -"use strict"; - -var stableRules = null; -var unstableRules = null; - -function e(id) { - return document.getElementById(id); -} - -/** - * Handles rule (de)activation in the popup - * @param checkbox checkbox being clicked - * @param ruleset the ruleset tied tot he checkbox - */ -function toggleRuleLine(checkbox, ruleset, tab_id) { - var ruleset_active = checkbox.checked; - var set_ruleset = { - active: ruleset_active, - name: ruleset.name, - tab_id: tab_id - }; - - sendMessage("set_ruleset_active_status", set_ruleset, function(){ - - if (ruleset_active == ruleset.default_state) { - // purge the name from the cache so that this unchecking is persistent. - sendMessage("delete_from_ruleset_cache", ruleset.name); - } - - // Now reload the selected tab of the current window. - chrome.tabs.reload(); - }); -} - -/** - * Creates a rule line (including checkbox and icon) for the popup - * @param ruleset the ruleset to build the line for - * @returns {*} - */ -function appendRuleLineToListDiv(ruleset, list_div, tab_id) { - - // parent block for line - var line = document.createElement("div"); - line.className = "rule checkbox"; - - // label "container" - var label = document.createElement("label"); - - // checkbox - var checkbox = document.createElement("input"); - checkbox.type = "checkbox"; - checkbox.checked = ruleset.active; - checkbox.onchange = function() { - toggleRuleLine(checkbox, ruleset, tab_id); - }; - label.appendChild(checkbox); - - // label text - var text = document.createElement("span"); - text.innerText = ruleset.name; - if (ruleset.note.length) { - text.title = ruleset.note; - } - - if(ruleset.note == "user rule") { - var remove = document.createElement("img"); - remove.src = chrome.extension.getURL("remove.png"); - remove.className = "remove"; - line.appendChild(remove); - - remove.addEventListener("click", function(){ - sendMessage("remove_rule", ruleset); - list_div.removeChild(line); - }); - } - - label.appendChild(text); - - line.appendChild(label); - - list_div.appendChild(line); -} - -function showHttpNowhereUI() { - // Set up checkbox for HTTP nowhere mode - getOption_('httpNowhere', false, function(item) { - if (item.httpNowhere) { - e('http-nowhere-checkbox').checked = true; - } - e('HttpNowhere').style.visibility = "visible"; - }); -}; - -// Change the UI to reflect extension enabled/disabled -function updateEnabledDisabledUI() { - getOption_('globalEnabled', true, function(item) { - document.getElementById('onoffswitch').checked = item.globalEnabled; - e('disableButton').style.visibility = "visible"; - // Hide or show the rules sections - if (item.globalEnabled) { - document.body.className = "" - showHttpNowhereUI() - } else { - document.body.className = "disabled" - } - }); -} - -// Toggle extension enabled/disabled status -function toggleEnabledDisabled() { - var extension_toggle_effect = function(){ - updateEnabledDisabledUI(); - // The extension state changed, so reload this tab. - chrome.tabs.reload(); - window.close(); - } - - getOption_('globalEnabled', true, function(item) { - setOption_('globalEnabled', !item.globalEnabled, extension_toggle_effect); - }); - -} - -/** - * Create the list of rules for a specific tab - * @param tabArray - */ -function gotTab(activeTab) { - sendMessage("get_active_rulesets", activeTab.id, function(rulesets){ - for (var r in rulesets) { - var listDiv = stableRules; - if (!rulesets[r].default_state) { - listDiv = unstableRules; - } - appendRuleLineToListDiv(rulesets[r], listDiv, activeTab.id); - listDiv.style.display = 'block'; - } - // Only show the "Add a rule" link if we're on an HTTPS page - if (/^https:/.test(activeTab.url)) { - show(e("add-rule-link")); - } - }); -} - -/** - * Fill in content into the popup on load - */ -document.addEventListener("DOMContentLoaded", function () { - stableRules = document.getElementById("StableRules"); - unstableRules = document.getElementById("UnstableRules"); - getTab(gotTab); - - // Set up the enabled/disabled switch & hide/show rules - updateEnabledDisabledUI(); - document.getElementById('onoffswitch').addEventListener('click', toggleEnabledDisabled); - e('http-nowhere-checkbox').addEventListener('click', toggleHttpNowhere, false); - - // Print the extension's current version. - var the_manifest = chrome.runtime.getManifest(); - var version_info = document.getElementById('current-version'); - version_info.innerText = the_manifest.version; - - e("aboutTitle").title = chrome.i18n.getMessage("about_title"); - e("add-rule-link").addEventListener("click", addManualRule); -}); - - -var escapeForRegex = function( value ) { - return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); -}; - -function hide(elem) { - elem.style.display = "none"; -} - -function show(elem) { - elem.style.display = "block"; -} - -/** - * Handles the manual addition of rules - */ -function addManualRule() { - getTab(function(tab) { - hide(e("add-rule-link")); - show(e("add-new-rule-div")); - - const url = new URL(tab.url); - - e("new-rule-host").value = url.host; - - const escapedHost = escapeForRegex(url.host); - - e("new-rule-regex").value = `^http://${escapedHost}/`; - e("new-rule-redirect").value = `https://${url.host}/`; - e("new-rule-name").value = "Manual rule for " + url.host; - - e("add-new-rule-button").addEventListener("click", function() { - const params = { - host : e("new-rule-host").value, - redirectTo : e("new-rule-redirect").value, - urlMatcher : e("new-rule-regex").value - }; - sendMessage("add_new_rule", params, function() { - location.reload(); - }); - }); - - e("cancel-new-rule").addEventListener("click", function() { - show(e("add-rule-link")); - hide(e("add-new-rule-div")); - }); - - e("new-rule-show-advanced-link").addEventListener("click", function() { - show(e("new-rule-advanced")); - hide(e("new-rule-regular-text")); - }); - - e("new-rule-hide-advanced-link").addEventListener("click", function() { - hide(e("new-rule-advanced")); - show(e("new-rule-regular-text")); - }); - }); -} - -function toggleHttpNowhere() { - getOption_('httpNowhere', false, function(item) { - setOption_('httpNowhere', !item.httpNowhere); - }); -} - -function getOption_(opt, defaultOpt, callback) { - var details = {}; - details[opt] = defaultOpt; - sendMessage("get_option", details, callback); -} - -function setOption_(opt, value, callback) { - var details = {}; - details[opt] = value; - sendMessage("set_option", details, callback); -} - -function getTab(callback) { - let url = new URL(window.location.href); - if (url.searchParams.has('tabId')) { - let parentId = Number(url.searchParams.get('tabId')); - return chrome.tabs.get(parentId, callback); - } - chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => callback(tabs[0])); -} |