summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/tweaks_gui.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/tweaks_gui.js')
-rw-r--r--data/extensions/jsr@javascriptrestrictor/tweaks_gui.js154
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;
- }
-}