diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/pages/switch-planner/ux.js')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/pages/switch-planner/ux.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/data/extensions/https-everywhere@eff.org/pages/switch-planner/ux.js b/data/extensions/https-everywhere@eff.org/pages/switch-planner/ux.js new file mode 100644 index 0000000..1562f8f --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/pages/switch-planner/ux.js @@ -0,0 +1,88 @@ +"use strict"; + +document.addEventListener("DOMContentLoaded", () => { + const background = chrome.extension.getBackgroundPage().require('./background'); + var tab = document.location.search.match(/tab=([^&]*)/)[1]; + var content = document.getElementById("content"); + + var nrw_text_div = document.createElement("div"); + nrw_text_div.innerText = "Unrewritten HTTP resources loaded from this tab (enable HTTPS on these domains and add them to HTTPS Everywhere):" + var nrw_div = switchPlannerDetailsHtmlSection( + background.sortSwitchPlanner(tab, "nrw"), + background.switchPlannerInfo[tab]["nrw"] + ); + var rw_text_div = document.createElement("div"); + rw_text_div.style.marginTop = "20px"; + rw_text_div.innerText = "Resources rewritten successfully from this tab (update these in your source code):" + var rw_div = switchPlannerDetailsHtmlSection( + background.sortSwitchPlanner(tab, "rw"), + background.switchPlannerInfo[tab]["rw"] + ); + + content.appendChild(nrw_text_div); + content.appendChild(nrw_div); + content.appendChild(rw_text_div); + content.appendChild(rw_div); +}); + +/** + * Generate the detailed html fot the switch planner, by section + * */ +function switchPlannerDetailsHtmlSection(asset_host_list, link_keys) { + var wrapper_div = document.createElement("div"); + if (asset_host_list.length == 0) { + wrapper_div.style.fontWeight = "bold"; + wrapper_div.innerText = "none"; + return wrapper_div; + } + + for (var i = asset_host_list.length - 1; i >= 0; i--) { + var host = asset_host_list[i][3]; + var activeCount = asset_host_list[i][1]; + var passiveCount = asset_host_list[i][2]; + + var div = document.createElement("div"); + div.style.marginTop = "20px"; + var b = document.createElement("b"); + b.innerText = host; + div.appendChild(b); + + if (activeCount > 0) { + var active_div = document.createElement("div"); + active_div.appendChild(document.createTextNode(activeCount + " active")); + for (const link of linksFromKeys(link_keys[host][1])) { + active_div.appendChild(link); + } + div.appendChild(active_div); + } + if (passiveCount > 0) { + var passive_div = document.createElement("div"); + passive_div.appendChild(document.createTextNode(passiveCount + " passive")); + for (const link of linksFromKeys(link_keys[host][0])) { + passive_div.appendChild(link); + } + div.appendChild(passive_div); + } + wrapper_div.appendChild(div); + } + return wrapper_div; +} + +/** + * Generate a HTML link from urls in map + * map: the map containing the urls + * */ +function linksFromKeys(map) { + if (typeof map == 'undefined') return ""; + var links = []; + for (var key in map) { + if (map.hasOwnProperty(key)) { + var link = document.createElement("a"); + link.style.display = "block"; + link.href = key; + link.innerText = key; + links.push(link); + } + } + return links; +} |