From 5be79eeda2984ecf7c7b1ed973a254e3d95552f5 Mon Sep 17 00:00:00 2001 From: Veviser Date: Sat, 16 Sep 2023 14:54:38 -0500 Subject: [PATCH] issue-196: Changed the blacklist to an allowlist, letting users opt-in to sites explicitly. Added Youtube to the initial offering. Changed settings page to indicate this. --- inject.js | 24 ++++++++++-------------- options.html | 6 +++--- options.js | 15 ++++++--------- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/inject.js b/inject.js index 79f4e583..b0917a0e 100644 --- a/inject.js +++ b/inject.js @@ -13,12 +13,8 @@ var tc = { startHidden: false, // default: false controllerOpacity: 0.3, // default: 0.3 keyBindings: [], - blacklist: `\ - www.instagram.com - twitter.com - vine.co - imgur.com - teams.microsoft.com + allowList: `\ + youtube.com `.replace(regStrip, ""), defaultLogLevel: 4, logLevel: 3 @@ -116,7 +112,7 @@ chrome.storage.sync.get(tc.settings, function (storage) { startHidden: tc.settings.startHidden, enabled: tc.settings.enabled, controllerOpacity: tc.settings.controllerOpacity, - blacklist: tc.settings.blacklist.replace(regStrip, "") + allowList: tc.settings.allowList.replace(regStrip, "") }); } tc.settings.lastSpeed = Number(storage.lastSpeed); @@ -127,7 +123,7 @@ chrome.storage.sync.get(tc.settings, function (storage) { tc.settings.enabled = Boolean(storage.enabled); tc.settings.startHidden = Boolean(storage.startHidden); tc.settings.controllerOpacity = Number(storage.controllerOpacity); - tc.settings.blacklist = String(storage.blacklist); + tc.settings.allowList = String(storage.allowList); // ensure that there is a "display" binding (for upgrades from versions that had it as a separate binding) if ( @@ -377,9 +373,9 @@ function escapeStringRegExp(str) { return str.replace(matchOperatorsRe, "\\$&"); } -function isBlacklisted() { - blacklisted = false; - tc.settings.blacklist.split("\n").forEach((match) => { +function isAllowListed() { + allowListed = false; + tc.settings.allowList.split("\n").forEach((match) => { match = match.replace(regStrip, ""); if (match.length == 0) { return; @@ -396,11 +392,11 @@ function isBlacklisted() { } if (regexp.test(location.href)) { - blacklisted = true; + allowListed = true; return; } }); - return blacklisted; + return allowListed; } var coolDown = false; @@ -478,7 +474,7 @@ function setupListener() { function initializeWhenReady(document) { log("Begin initializeWhenReady", 5); - if (isBlacklisted()) { + if (!isAllowListed()) { return; } window.addEventListener('load', () => { diff --git a/options.html b/options.html index 242c326f..efeb2620 100644 --- a/options.html +++ b/options.html @@ -161,8 +161,8 @@

Other

-
diff --git a/options.js b/options.js index e1b8b95f..8b62620e 100644 --- a/options.js +++ b/options.js @@ -18,10 +18,7 @@ var tcDefaults = { { action: "reset", key: 82, value: 1, force: false, predefined: true }, // R { action: "fast", key: 71, value: 1.8, force: false, predefined: true } // G ], - blacklist: `www.instagram.com - twitter.com - imgur.com - teams.microsoft.com + allowList: `youtube.com `.replace(regStrip, "") }; @@ -184,7 +181,7 @@ function validate() { var valid = true; var status = document.getElementById("status"); document - .getElementById("blacklist") + .getElementById("allowList") .value.split("\n") .forEach((match) => { match = match.replace(regStrip, ""); @@ -193,7 +190,7 @@ function validate() { var regexp = new RegExp(match); } catch (err) { status.textContent = - "Error: Invalid blacklist regex: " + match + ". Unable to save"; + "Error: Invalid allowList regex: " + match + ". Unable to save"; valid = false; return; } @@ -218,7 +215,7 @@ function save_options() { var enabled = document.getElementById("enabled").checked; var startHidden = document.getElementById("startHidden").checked; var controllerOpacity = document.getElementById("controllerOpacity").value; - var blacklist = document.getElementById("blacklist").value; + var allowList = document.getElementById("allowList").value; chrome.storage.sync.remove([ "resetSpeed", @@ -242,7 +239,7 @@ function save_options() { startHidden: startHidden, controllerOpacity: controllerOpacity, keyBindings: keyBindings, - blacklist: blacklist.replace(regStrip, "") + allowList: allowList.replace(regStrip, "") }, function () { // Update status to let user know options were saved. @@ -265,7 +262,7 @@ function restore_options() { document.getElementById("startHidden").checked = storage.startHidden; document.getElementById("controllerOpacity").value = storage.controllerOpacity; - document.getElementById("blacklist").value = storage.blacklist; + document.getElementById("allowList").value = storage.allowList; // ensure that there is a "display" binding for upgrades from versions that had it as a separate binding if (storage.keyBindings.filter((x) => x.action == "display").length == 0) {