diff options
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/tweaks_gui.js')
-rw-r--r-- | data/extensions/jsr@javascriptrestrictor/tweaks_gui.js | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/tweaks_gui.js b/data/extensions/jsr@javascriptrestrictor/tweaks_gui.js deleted file mode 100644 index 99aaa21..0000000 --- a/data/extensions/jsr@javascriptrestrictor/tweaks_gui.js +++ /dev/null @@ -1,154 +0,0 @@ -/** \file - * \brief JS code for the JS Shield tweak GUI - * - * \author Copyright (C) 2022 Giorgio Maone - * \author Copyright (C) 2022 Libor Polcak - * - * \license SPDX-License-Identifier: GPL-3.0-or-later - */ -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. -// - -let tweaks_gui = { - - create_group_descriptors: function (group_map) { - let tweakEntries = Object.entries(this.get_current_tweaks()).map(([group_id, tlev_id]) => { - let group = group_map[group_id]; - let label = group.label || group.name; - this.assign_custom_params(group); - return { group_id, tlev_id, label, group, toString() { return this.label } }; - } - ); - return tweakEntries; - }, - - sort_group_descriptors: function (tweakEntries) { - return tweakEntries.sort((firstObj, secondObj) => this.cmp_groups(firstObj, secondObj)); - }, - - add_tweak_row: function (tweaksContainer, group_map, group_id, tlev_id, label, group, no_default=false) { - let tweakRow = document.getElementById("tweak-row").content.cloneNode(true); - tweakRow.querySelector("label").textContent = label; - this.customize_tweak_row(tweakRow, group); - - let tlevUI = tweakRow.querySelector(".tlev"); - tlevUI.max = group.params.length; // 0 (off) .. array length - if (no_default) { // without 0 (off) - tlevUI.max = tlevUI.max-1; - } - let status = tweakRow.querySelector(".status"); - let help = tweakRow.querySelector(".help"); - let explainer = tweakRow.querySelector(".explainer"); - tweakRow.querySelector(".description").textContent = group.description; - let more = tweakRow.querySelector(".more"); - let longDescription = group.description2; - for (let line of longDescription) { - more.appendChild(document.createElement("p")).textContent = line; - } - - tlevUI.value = parseInt(tlev_id); - let updateLevelInfo = function (changed) { - let desired_tweak = parseInt(tlevUI.value); - let showStatus = (l) => { - tlevUI.nextElementSibling.value = l.short; - status.innerHTML = `<strong>${l.description}</strong>`; - if (l.description2) { - for (let line of l.description2) { - status.innerHTML += `<p>${line}</p>`; - } - } - } - if (no_default) { - showStatus(group.params[desired_tweak]); - } - else { - if (desired_tweak !== 0) { - showStatus(group.params[desired_tweak - 1]); - } - else { - showStatus({short:browser.i18n.getMessage("jssgroupUnprotected"), description:browser.i18n.getMessage("jssgroupUnprotected")}); - } - } - if (changed) { - this.tweak_changed(group_id, desired_tweak); - } - }.bind(this); - updateLevelInfo(); - tlevUI.addEventListener("input", updateLevelInfo.bind(this, false)); - tlevUI.addEventListener("change", updateLevelInfo.bind(this, true)); - tlevUI.addEventListener("input", function() { // See https://pagure.io/JShelter/webextension/issue/95 - explainer.classList.remove("hidden_descr"); - }); - - help.addEventListener("click", function(ev) { - explainer.classList.toggle("hidden_descr"); - ev.preventDefault(); - }); - tweaksContainer.appendChild(tweakRow); - }, - - create_tweaks_html: function (tweaksContainer) { - tweaksContainer.innerHTML = ""; - tweaksContainer.appendChild(document.getElementById("tweak-head").content); - let {group_map} = wrapping_groups; - let tweakEntries = this.sort_group_descriptors(this.create_group_descriptors(group_map)); - - for (let { group_id, tlev_id, label, group} of tweakEntries) { - this.add_tweak_row(tweaksContainer, group_map, group_id, tlev_id, label, group, group_id === "wasm"); - } - document.body.classList.add("tweaking"); - }, - - /** - * Return tweaks to be displayed. - */ - get_current_tweaks: function() { - return {}; - }, - - /** - * Redefine if you want to perform an action when the user changes tweaks - */ - tweak_changed: function(group_id, desired_tweak) { - }, - - /** - * Add custom parameters to this processed groups (called for each group) - * - * Redefined if you want to display dynamic values, such as number of calls on current page. - * You should use this value in modified customize_tweak_row() or cmp_groups(). - * Otherwise, it will not have any effect. - */ - assign_custom_params: function(group) { - }, - - /** - * Display custom parameters on a row to user (called for each row, i.e. group) - */ - customize_tweak_row: function(tweakRow, group) { - }, - - /** - * Compare two groups - * - * The default implementation keeps the original positions. Note that Array.prototype.sort assigns - * items in a different order in Firefox and Chrome-based browsers. - * - * \return 0: No change in position. - */ - cmp_groups: function(firstGr, secondGr) { - return 0; - } -} |