From fce4d611b8c650aaed5021516f67a68535fe4628 Mon Sep 17 00:00:00 2001 From: Ilya Grigorik Date: Thu, 28 Jul 2016 13:22:23 +0200 Subject: [PATCH] add user defined blacklist Moving some of the previously blacklisted sites to user controlled blacklist. Remaining sites in manifest are blocked due to interop issues. Closes #121. --- inject.js | 55 +++++++++++++++++++++++++++++++++++++++------------ manifest.json | 9 +++------ options.css | 1 + options.html | 6 +++++- options.js | 31 ++++++++++++++++++----------- 5 files changed, 71 insertions(+), 31 deletions(-) diff --git a/inject.js b/inject.js index 2cb0382..810f8e5 100644 --- a/inject.js +++ b/inject.js @@ -1,17 +1,22 @@ chrome.extension.sendMessage({}, function(response) { - var tc = { settings: { - speed: 1.0, // default 1x - speedStep: 0.1, // default 0.1x - rewindTime: 10, // default 10s - advanceTime: 10, // default 10s - resetKeyCode: 82, // default: R - slowerKeyCode: 83, // default: S - fasterKeyCode: 68, // default: D - rewindKeyCode: 90, // default: Z - advanceKeyCode: 88, // default: X - rememberSpeed: false // default: false + speed: 1.0, // default 1x + speedStep: 0.1, // default 0.1x + rewindTime: 10, // default 10s + advanceTime: 10, // default 10s + resetKeyCode: 82, // default: R + slowerKeyCode: 83, // default: S + fasterKeyCode: 68, // default: D + rewindKeyCode: 90, // default: Z + advanceKeyCode: 88, // default: X + rememberSpeed: false, // default: false + blacklist: ` + www.instagram.com + www.twitter.com + vine.co + imgur.com + `.replace(/^\s+|\s+$/gm,'') } }; @@ -26,6 +31,9 @@ chrome.extension.sendMessage({}, function(response) { tc.settings.fasterKeyCode = Number(storage.fasterKeyCode); tc.settings.advanceKeyCode = Number(storage.advanceKeyCode); tc.settings.rememberSpeed = Boolean(storage.rememberSpeed); + tc.settings.blacklist = String(storage.blacklist); + + initializeWhenReady(document); }); var forEach = Array.prototype.forEach; @@ -122,6 +130,29 @@ chrome.extension.sendMessage({}, function(response) { } function initializeWhenReady(document) { + escapeStringRegExp.matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + function escapeStringRegExp(str) { + return str.replace(escapeStringRegExp.matchOperatorsRe, '\\$&'); + } + + var blacklisted = false; + tc.settings.blacklist.split("\n").forEach(match => { + match = match.replace(/^\s+|\s+$/g,'') + if (match.length == 0) { + return; + } + + var regexp = new RegExp(escapeStringRegExp(match)); + if (regexp.test(location.href)) { + console.log("SKIP", regexp, location.href) + blacklisted = true; + return; + } + }) + + if (blacklisted) + return; + var readyStateCheckInterval = setInterval(function() { if (document.readyState === 'complete') { clearInterval(readyStateCheckInterval); @@ -265,6 +296,4 @@ chrome.extension.sendMessage({}, function(response) { animation = false; }, 2000); } - - initializeWhenReady(document); }); diff --git a/manifest.json b/manifest.json index efbdf79..2fb1a1c 100755 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "Video Speed Controller", "short_name": "videospeed", - "version": "0.3.1", + "version": "0.3.3", "manifest_version": 2, "description": "Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.", "homepage_url": "https://github.com/igrigorik/videospeed", @@ -22,16 +22,13 @@ }, "content_scripts": [{ "all_frames": true, - "matches": [ "http://*/*", "https://*/*", "file:///*"], + "matches": [ "http://*/*", "https://*/*", "file:///*" ], "exclude_matches": [ "https://plus.google.com/hangouts/*", "https://hangouts.google.com/hangouts/*", "https://teamtreehouse.com/*", - "https://www.instagram.com/*", - "https://www.twitter.com/*", "https://www.lynda.com/*", - "http://www.hitbox.tv/*", - "https://vine.co/*" + "http://www.hitbox.tv/*" ], "css": [ "inject.css" ], "js": [ "inject.js" ] diff --git a/options.css b/options.css index 8a75b36..dd72980 100644 --- a/options.css +++ b/options.css @@ -81,6 +81,7 @@ input[type="text"] { label { display: inline-block; width: 170px; + vertical-align: top; } label[for=rememberSpeed] { diff --git a/options.html b/options.html index 5ea61ba..9faf344 100644 --- a/options.html +++ b/options.html @@ -35,7 +35,7 @@
-

Others

+

Other

@@ -52,6 +52,10 @@
+
+ + +
diff --git a/options.js b/options.js index cd592d0..7823e02 100644 --- a/options.js +++ b/options.js @@ -1,14 +1,20 @@ var tcDefaults = { - speed: 1.0, // default 1x - speedStep: 0.1, // default 0.1x - rewindTime: 10, // default 10s - advanceTime: 10, // default 10s - resetKeyCode: 82, // default: R - slowerKeyCode: 83, // default: S - fasterKeyCode: 68, // default: D - rewindKeyCode: 90, // default: Z - advanceKeyCode: 88, // default: X - rememberSpeed: false // default: false + speed: 1.0, // default 1x + speedStep: 0.1, // default 0.1x + rewindTime: 10, // default 10s + advanceTime: 10, // default 10s + resetKeyCode: 82, // default: R + slowerKeyCode: 83, // default: S + fasterKeyCode: 68, // default: D + rewindKeyCode: 90, // default: Z + advanceKeyCode: 88, // default: X + rememberSpeed: false, // default: false + blacklist: ` + www.instagram.com + www.twitter.com + vine.co + imgur.com + `.replace(/^\s+|\s+$/gm,'') }; var keyCodeAliases = { @@ -90,6 +96,7 @@ function save_options() { var slowerKeyCode = document.getElementById('slowerKeyInput').keyCode; var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode; var rememberSpeed = document.getElementById('rememberSpeed').checked; + var blacklist = document.getElementById('blacklist').value; speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep); rewindTime = isNaN(rewindTime) ? tcDefaults.rewindTime : Number(rewindTime); @@ -109,7 +116,8 @@ function save_options() { advanceKeyCode: advanceKeyCode, slowerKeyCode: slowerKeyCode, fasterKeyCode: fasterKeyCode, - rememberSpeed: rememberSpeed + rememberSpeed: rememberSpeed, + blacklist: blacklist.replace(/^\s+|\s+$/gm,'') }, function() { // Update status to let user know options were saved. var status = document.getElementById('status'); @@ -132,6 +140,7 @@ function restore_options() { updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode); updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode); document.getElementById('rememberSpeed').checked = storage.rememberSpeed; + document.getElementById('blacklist').value = storage.blacklist; }); }