From fa5c0b073214191e6996ba0b5bc8e61560ff822c Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Wed, 27 Sep 2023 00:53:30 -0400 Subject: Update the JShelter extension to 0.15.2. --- .../extensions/jsr@javascriptrestrictor/options.js | 104 ++++++++++++--------- 1 file changed, 59 insertions(+), 45 deletions(-) (limited to 'data/extensions/jsr@javascriptrestrictor/options.js') diff --git a/data/extensions/jsr@javascriptrestrictor/options.js b/data/extensions/jsr@javascriptrestrictor/options.js index bac9237..2fe31c7 100644 --- a/data/extensions/jsr@javascriptrestrictor/options.js +++ b/data/extensions/jsr@javascriptrestrictor/options.js @@ -40,32 +40,35 @@ function prepare_level_config(action_descr, params) { var unsupported_apis = wrapping_groups.groups.reduce((acc, group) => group.wrappers.reduce(find_unsupported_apis, acc), ""); if (unsupported_apis !== "") { - unsupported_apis = `

Your browser does not support:

${unsupported_apis}
`; + unsupported_apis = `
${browser.i18n.getMessage("omittedAPIsHeading")} ${unsupported_apis}
`; } var fragment = document.createRange().createContextualFragment(`
-

Note that for fingerprintability prevention, JShelter does not wrap objects that are not defined.

- ${unsupported_apis}

${action_descr}

+

+ ${browser.i18n.getMessage("newLevelsNotRecommended")} +

- +
- +
- + +
+ ${unsupported_apis}
`); configuration_area_el.appendChild(fragment); @@ -98,7 +101,7 @@ function prepare_level_config(action_descr, params) { custom_levels = stored_levels.custom_levels; let ok = false; if (new_level.level_id in custom_levels) { - ok = window.confirm("Custom level " + new_level.level_id + " already exists. It will be overriden."); + ok = window.confirm(browser.i18n.getMessage("customLevelAlreadyExistsItWillBeOverridden", new_level.level_id)); } else { ok = true; @@ -110,20 +113,23 @@ function prepare_level_config(action_descr, params) { location = ""; } catch (err) { - alert("Custom level were not updated, please try again later."); + alert(browser.i18n.getMessage("customLevelWereNotUpdated")); } } } browser.storage.sync.get("custom_levels").then(updateLevels.bind(null, new_level)); } else { - alert("Please provide all required fields: ID, Name, and Decription"); + alert(browser.i18n.getMessage("NewLevelMissingNameOrDescription")); } }); + document.getElementById("cancel").addEventListener("click", function(e) { + document.location = "options.html"; + }); } function edit_level(id) { - prepare_level_config("Edit level " + escape(id), levels[id]); + prepare_level_config(browser.i18n.getMessage("JSSeditLevelHeading", escape(levels[id].level_text)), levels[id]); } function restore_level(id, level_params) { @@ -146,46 +152,23 @@ function show_existing_level(levelsEl, level) { var fragment = document.createRange().createContextualFragment(`
  • - ${escape(create_short_text(levels[level].level_description, 50))} - -

    + +

  • `); levelsEl.appendChild(fragment); var lielem = document.getElementById(`li-${level}`); // Note that FF here requires unescaped ID - if (levels[level].builtin === true) { - var view = document.createElement("button"); - view.id = `show-tweaks-${escape(level)}`; - view.classList.add("help"); - view.appendChild(document.createTextNode("⤵")); - var tweaksEl = document.createElement("div"); - tweaksEl.classList.add("tweakgrid"); - tweaksEl.classList.add("hidden_descr"); - tweaksEl.id = `tweaks-${escape(level)}`; - lielem.getElementsByTagName('button')[0].insertAdjacentElement("afterend", view); - lielem.appendChild(tweaksEl); - let tweaksBusiness = Object.create(tweaks_gui); - tweaksBusiness.get_current_tweaks = function() { - return getTweaksForLevel(level, {}); - }; - tweaksBusiness.create_tweaks_html(tweaksEl); - view.addEventListener("click", function(ev) { - tweaksEl.classList.toggle("hidden_descr"); - ev.preventDefault(); - }); - } - else { + if (levels[level].builtin !== true) { var existPref = document.createElement("span"); existPref.setAttribute("id", `li-exist-group-${escape(level)}`); lielem.appendChild(existPref); var edit = document.createElement("button"); existPref.appendChild(edit); edit.addEventListener("click", edit_level.bind(edit, level)); - edit.appendChild(document.createTextNode("Edit")); + edit.appendChild(document.createTextNode(browser.i18n.getMessage("ButtonEdit"))); var remove = document.createElement("button"); existPref.appendChild(remove); remove.addEventListener("click", remove_level.bind(remove, level)); - remove.appendChild(document.createTextNode("Remove")); + remove.appendChild(document.createTextNode(browser.i18n.getMessage("ButtonRemove"))); var removedPref = document.createElement("span"); removedPref.setAttribute("id", `li-removed-group-${escape(level)}`); removedPref.classList.add("hidden"); @@ -193,10 +176,10 @@ function show_existing_level(levelsEl, level) { var restore = document.createElement("button"); removedPref.appendChild(restore); restore.addEventListener("click", restore_level.bind(restore, level, levels[level])); - restore.appendChild(document.createTextNode("Restore")); + restore.appendChild(document.createTextNode(browser.i18n.getMessage("ButtonRestore"))); } - prepareHiddenHelpText(lielem.getElementsByClassName('hidden_help_text'), lielem.getElementsByClassName('help_ovisible')); - var current = document.getElementById(currentId) + prepareHiddenHelpText(lielem.getElementsByClassName('hidden_help_text'), []); + var current = document.getElementById(escape(currentId)) current.addEventListener("click", function() { for (let child of levelsEl.children) { child.children[0].classList.remove("active"); @@ -204,6 +187,13 @@ function show_existing_level(levelsEl, level) { this.classList.add("active"); setDefaultLevel(level); }); + current.addEventListener("mouseenter", function() { + if (level !== default_level.level_id) { + lev = levels[level]; + update_level_details(lev.level_text + " level (currently not applied by default), details:", lev); + } + }); + current.addEventListener("mouseout", update_level_details_default); } function remove_level(id) { @@ -222,6 +212,20 @@ function remove_level(id) { browser.storage.sync.get("custom_levels").then(remove_level); } +function update_level_details(heading, level) { + document.getElementById("current-level-tweaks-heading").textContent = heading; + var currentTweaksEl = document.getElementById("current-level-tweaks"); + let tweaksBusiness = Object.create(tweaks_gui); + tweaksBusiness.get_current_tweaks = function() { + return getTweaksForLevel(level.level_id, {}); + }; + tweaksBusiness.create_tweaks_html(currentTweaksEl); +} + +function update_level_details_default() { + update_level_details(default_level.level_text + " level (currently applied by default), details:", default_level); +} + function insert_levels() { // Insert all known levels to GUI var allLevelsElement = document.getElementById("levels-list"); @@ -230,6 +234,7 @@ function insert_levels() { } // Select default level document.getElementById("level-" + default_level.level_id).classList.add("active"); + update_level_details_default(); } window.addEventListener("load", async function() { @@ -258,10 +263,11 @@ document.getElementById("new_level").addEventListener("click", function() { seq++; } while (levels[new_id] !== undefined) new_level.level_id = new_id; - prepare_level_config("Add new level", new_level) + prepare_level_config(browser.i18n.getMessage("JSSaddLevelHeading"), new_level) }); document.getElementById("nbs-whitelist-show").addEventListener("click", () => show_whitelist("nbs")); +document.getElementById("nbs-whitelist-hide").addEventListener("click", () => hide_whitelist("nbs")); document.getElementById("nbs-whitelist-add-button").addEventListener("click", () => add_to_whitelist("nbs")); document.getElementById("nbs-whitelist-input").addEventListener('keydown', (e) => {if (e.key === 'Enter') add_to_whitelist("nbs")}); document.getElementById("nbs-whitelist-remove-button").addEventListener("click", () => remove_from_whitelist("nbs")); @@ -269,6 +275,7 @@ document.getElementById("nbs-whitelist-select").addEventListener('keydown', (e) document.getElementsByClassName("slider")[0].addEventListener("click", () => {setTimeout(control_slider, 200, "nbs")}); document.getElementById("fpd-whitelist-show").addEventListener("click", () => show_whitelist("fpd")); +document.getElementById("fpd-whitelist-hide").addEventListener("click", () => hide_whitelist("fpd")); document.getElementById("fpd-whitelist-add-button").addEventListener("click", () => add_to_whitelist("fpd")); document.getElementById("fpd-whitelist-input").addEventListener('keydown', (e) => {if (e.key === 'Enter') add_to_whitelist("fpd")}); document.getElementById("fpd-whitelist-remove-button").addEventListener("click", () => remove_from_whitelist("fpd")); @@ -307,6 +314,15 @@ function show_whitelist(prefix) { loadWhitelist(prefix); var whitelist = document.getElementById(prefix + "-whitelist-container"); whitelist.classList.toggle("hidden"); + document.getElementById(prefix + "-whitelist-show").classList.add("hidden"); + document.getElementById(prefix + "-whitelist-hide").classList.remove("hidden"); +} + +function hide_whitelist(prefix) { + var whitelist = document.getElementById(prefix + "-whitelist-container"); + whitelist.classList.toggle("hidden"); + document.getElementById(prefix + "-whitelist-show").classList.remove("hidden"); + document.getElementById(prefix + "-whitelist-hide").classList.add("hidden"); } function add_to_whitelist(prefix) @@ -397,9 +413,7 @@ function loadWhitelist(prefix) var listbox = document.getElementById(prefix + "-whitelist-select"); listbox.options.length = 0; - var whitelistName; - if (prefix == "nbs") whitelistName = "nbsWhitelist"; - if (prefix == "fpd") whitelistName = "fpdWhitelist"; + var whitelistName = prefix + "Whitelist"; //Get the whitelist browser.storage.sync.get([whitelistName]).then(function(result) -- cgit v1.2.3