Merge branch 'master' into webextensions-port

# Conflicts:
#	inject.js
This commit is contained in:
codebicycle
2017-02-06 12:11:27 +02:00
5 changed files with 34 additions and 23 deletions

View File

@@ -44,7 +44,7 @@
/* shift YT 3D controller down */
/* e.g. https://www.youtube.com/watch?v=erftYPflJzQ */
.ytp-webgl-spherical-control {
top: 50px !important;
top: 60px !important;
}
.ytp-fullscreen .ytp-webgl-spherical-control {

View File

@@ -2,6 +2,7 @@ chrome.runtime.sendMessage({}, function(response) {
var tc = {
settings: {
speed: 1.0, // default 1x
resetSpeed: 1.0, // default 1x
speedStep: 0.1, // default 0.1x
rewindTime: 10, // default 10s
advanceTime: 10, // default 10s
@@ -12,6 +13,7 @@ chrome.runtime.sendMessage({}, function(response) {
advanceKeyCode: 88, // default: X
displayKeyCode: 86, // default: V
rememberSpeed: false, // default: false
startHidden: false, // default: false
blacklist: `
www.instagram.com
twitter.com
@@ -23,6 +25,7 @@ chrome.runtime.sendMessage({}, function(response) {
chrome.storage.local.get(tc.settings, function(storage) {
tc.settings.speed = Number(storage.speed);
tc.settings.resetSpeed = Number(storage.resetSpeed);
tc.settings.speedStep = Number(storage.speedStep);
tc.settings.rewindTime = Number(storage.rewindTime);
tc.settings.advanceTime = Number(storage.advanceTime);
@@ -33,6 +36,7 @@ chrome.runtime.sendMessage({}, function(response) {
tc.settings.displayKeyCode = Number(storage.displayKeyCode);
tc.settings.advanceKeyCode = Number(storage.advanceKeyCode);
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
tc.settings.startHidden = Boolean(storage.startHidden);
tc.settings.blacklist = String(storage.blacklist);
initializeWhenReady(document);
@@ -48,6 +52,7 @@ chrome.runtime.sendMessage({}, function(response) {
this.id = Math.random().toString(36).substr(2, 9);
if (!tc.settings.rememberSpeed) {
tc.settings.speed = 1.0;
tc.settings.resetSpeed = 1.0;
}
this.initializeControls();
@@ -218,15 +223,7 @@ chrome.runtime.sendMessage({}, function(response) {
function checkForVideo(node, parent, added) {
if (node.nodeName === 'VIDEO') {
if (added) {
if (!node.classList.contains('vsc-initialized') && !node.dataset['vscid']) {
new tc.videoController(node, parent);
}
// if the video has already been initialized, then it has been mutated
// we may need to update the controller location to reflect this
else {
let id = node.dataset['vscid'];
let ctrl = document.querySelector(`div[data-vscid="${id}"]`);
if (ctrl) ctrl.remove();
if (!node.dataset['vscid']) {
new tc.videoController(node, parent);
}
} else {
@@ -235,6 +232,7 @@ chrome.runtime.sendMessage({}, function(response) {
let ctrl = document.querySelector(`div[data-vscid="${id}"]`)
if (ctrl) {
node.classList.remove('vsc-initialized');
delete node.dataset['vscid'];
ctrl.remove();
}
}
@@ -284,8 +282,7 @@ chrome.runtime.sendMessage({}, function(response) {
var id = v.dataset['vscid'];
var controller = document.querySelector(`div[data-vscid="${id}"]`);
if (keyboard)
showController(controller);
showController(controller);
if (!v.classList.contains('vsc-cancelled')) {
if (action === 'rewind') {
@@ -294,16 +291,24 @@ chrome.runtime.sendMessage({}, function(response) {
v.currentTime += tc.settings.advanceTime;
} else if (action === 'faster') {
// Maximum playback speed in Chrome is set to 16:
// https://code.google.com/p/chromium/codesearch#chromium/src/media/blink/webmediaplayer_impl.cc&l=64
// https://cs.chromium.org/chromium/src/media/blink/webmediaplayer_impl.cc?l=103
var s = Math.min(v.playbackRate + tc.settings.speedStep, 16);
v.playbackRate = Number(s.toFixed(2));
} else if (action === 'slower') {
// Audio playback is cut at 0.05:
// https://code.google.com/p/chromium/codesearch#chromium/src/media/filters/audio_renderer_algorithm.cc&l=49
var s = Math.max(v.playbackRate - tc.settings.speedStep, 0);
// https://cs.chromium.org/chromium/src/media/filters/audio_renderer_algorithm.cc?l=49
// Video min rate is 0.0625:
// https://cs.chromium.org/chromium/src/media/blink/webmediaplayer_impl.cc?l=102
var s = Math.max(v.playbackRate - tc.settings.speedStep, 0.0625);
v.playbackRate = Number(s.toFixed(2));
} else if (action === 'reset') {
v.playbackRate = 1.0;
if(v.playbackRate === 1.0) {
v.playbackRate = tc.settings.resetSpeed;
} else {
tc.settings.resetSpeed = v.playbackRate;
chrome.storage.sync.set({'resetSpeed': v.playbackRate});
v.playbackRate = 1.0;
}
} else if (action === 'close') {
v.classList.add('vsc-cancelled');
controller.remove();
@@ -329,11 +334,9 @@ chrome.runtime.sendMessage({}, function(response) {
shadowController.classList.add('dragging');
const startDragging = (e) => {
let newLeft = Math.max(0, e.clientX - offsetLeft);
let newTop = Math.max(0, e.clientY - offsetTop);
shadowController.style.left = newLeft + 'px';
shadowController.style.top = newTop + 'px';
let style = shadowController.style;
style.left = parseInt(style.left) + e.movementX + 'px';
style.top = parseInt(style.top) + e.movementY + 'px';
}
const stopDragging = () => {

View File

@@ -1,7 +1,7 @@
{
"name": "Video Speed Controller",
"short_name": "videospeed",
"version": "0.4.2",
"version": "0.4.4",
"manifest_version": 2,
"description": "Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.",
"homepage_url": "https://github.com/codebicycle/videospeed",

View File

@@ -36,6 +36,10 @@
<label for="displayKeyInput">Show/hide controller</label>
<input id="displayKeyInput" placeholder="press a key" type="text" value=""/>
</div>
<div class="row">
<label for="rememberSpeed">Hide controller by default</label>
<input id="startHidden" type="checkbox"/>
</div>
</section>
<section>

View File

@@ -10,6 +10,7 @@ var tcDefaults = {
advanceKeyCode: 88, // default: X
displayKeyCode: 86, // default: V
rememberSpeed: false, // default: false
startHidden: false, // default: false
blacklist: `
www.instagram.com
twitter.com
@@ -98,6 +99,7 @@ function save_options() {
var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode;
var displayKeyCode = document.getElementById('displayKeyInput').keyCode;
var rememberSpeed = document.getElementById('rememberSpeed').checked;
var startHidden = document.getElementById('startHidden').checked;
var blacklist = document.getElementById('blacklist').value;
speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep);
@@ -121,6 +123,7 @@ function save_options() {
fasterKeyCode: fasterKeyCode,
displayKeyCode: displayKeyCode,
rememberSpeed: rememberSpeed,
startHidden: startHidden,
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
}, function() {
// Update status to let user know options were saved.
@@ -145,6 +148,7 @@ function restore_options() {
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
document.getElementById('startHidden').checked = storage.startHidden;
document.getElementById('blacklist').value = storage.blacklist;
});
}