Add support for audio (#454)

* Add speed controler for audio
* Add additional checks for audioBoolean
* Change video to media
This commit is contained in:
jacobcolbert
2019-04-20 18:43:54 -04:00
committed by Ilya Grigorik
parent 7bfa8a9985
commit 5fec357d2e
3 changed files with 33 additions and 12 deletions

View File

@@ -5,6 +5,7 @@
displayKeyCode: 86, // default: V displayKeyCode: 86, // default: V
rememberSpeed: false, // default: false rememberSpeed: false, // default: false
audioBoolean: false, // default: false
startHidden: false, // default: false startHidden: false, // default: false
keyBindings: [], keyBindings: [],
blacklist: ` blacklist: `
@@ -70,6 +71,7 @@
version: tc.settings.version, version: tc.settings.version,
displayKeyCode: tc.settings.displayKeyCode, displayKeyCode: tc.settings.displayKeyCode,
rememberSpeed: tc.settings.rememberSpeed, rememberSpeed: tc.settings.rememberSpeed,
audioBoolean: tc.settings.audioBoolean,
startHidden: tc.settings.startHidden, startHidden: tc.settings.startHidden,
blacklist: tc.settings.blacklist.replace(/^\s+|\s+$/gm, '') blacklist: tc.settings.blacklist.replace(/^\s+|\s+$/gm, '')
}); });
@@ -77,6 +79,7 @@
tc.settings.speed = Number(storage.speed); tc.settings.speed = Number(storage.speed);
tc.settings.displayKeyCode = Number(storage.displayKeyCode); tc.settings.displayKeyCode = Number(storage.displayKeyCode);
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed); tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
tc.settings.audioBoolean = Boolean(storage.audioBoolean);
tc.settings.startHidden = Boolean(storage.startHidden); tc.settings.startHidden = Boolean(storage.startHidden);
tc.settings.blacklist = String(storage.blacklist); tc.settings.blacklist = String(storage.blacklist);
@@ -330,8 +333,9 @@
}, true); }, true);
}); });
function checkForVideo(node, parent, added) { function checkForVideo(node, parent, added) {
if (node.nodeName === 'VIDEO') { if (node.nodeName === 'VIDEO' || (node.nodeName === 'AUDIO' && tc.settings.audioBoolean)) {
if (added) { if (added) {
new tc.videoController(node, parent); new tc.videoController(node, parent);
} else { } else {
@@ -371,8 +375,13 @@
}); });
observer.observe(document, { childList: true, subtree: true }); observer.observe(document, { childList: true, subtree: true });
var videoTags = document.getElementsByTagName('video'); if (tc.settings.audioBoolean) {
forEach.call(videoTags, function(video) { var mediaTags = document.querySelectorAll('video,audio');
} else {
var mediaTags = document.querySelectorAll('video');
}
forEach.call(mediaTags, function(video) {
new tc.videoController(video); new tc.videoController(video);
}); });
@@ -385,19 +394,23 @@
} }
function runAction(action, document, value, e) { function runAction(action, document, value, e) {
var videoTags = document.getElementsByTagName('video'); if (tc.settings.audioBoolean) {
videoTags.forEach = Array.prototype.forEach; var mediaTags = document.querySelectorAll('video,audio');
} else {
// Get the controller that was used if called from a button press event e var mediaTags = document.querySelectorAll('video');
if (e){
var targetController = e.target.getRootNode().host;
} }
videoTags.forEach(function(v) { mediaTags.forEach = Array.prototype.forEach;
// Get the controller that was used if called from a button press event e
if (e) {
var targetController = e.target.getRootNode().host;
}
mediaTags.forEach(function(v) {
var id = v.dataset['vscid']; var id = v.dataset['vscid'];
var controller = document.querySelector(`div[data-vscid="${id}"]`); var controller = document.querySelector(`div[data-vscid="${id}"]`);
// Don't change video speed if the video has a different controller
// Don't change video speed if the video has a different controller
if (e && !(targetController == controller)) { if (e && !(targetController == controller)) {
return; return;
} }

View File

@@ -90,6 +90,10 @@
<label for="rememberSpeed">Remember Playback Speed</label> <label for="rememberSpeed">Remember Playback Speed</label>
<input id="rememberSpeed" type="checkbox"/> <input id="rememberSpeed" type="checkbox"/>
</div> </div>
<div class="row">
<label for="audioBoolean">Work on audio</label>
<input id="audioBoolean" type="checkbox"/>
</div>
<div class="row"> <div class="row">
<label for="blacklist">Blacklisted sites on which extension is disabled<br/>(one per line)</label> <label for="blacklist">Blacklisted sites on which extension is disabled<br/>(one per line)</label>
<textarea id="blacklist" rows="10" cols="50"></textarea> <textarea id="blacklist" rows="10" cols="50"></textarea>

View File

@@ -2,6 +2,7 @@ var tcDefaults = {
speed: 1.0, // default: speed: 1.0, // default:
displayKeyCode: 86, // default: V displayKeyCode: 86, // default: V
rememberSpeed: false, // default: false rememberSpeed: false, // default: false
audioBoolean: false, // default: false
startHidden: false, // default: false startHidden: false, // default: false
keyBindings: [ keyBindings: [
{action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S {action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S
@@ -141,6 +142,7 @@ function save_options() {
var displayKeyCode = document.getElementById('displayKeyInput').keyCode; var displayKeyCode = document.getElementById('displayKeyInput').keyCode;
var rememberSpeed = document.getElementById('rememberSpeed').checked; var rememberSpeed = document.getElementById('rememberSpeed').checked;
var audioBoolean = document.getElementById('audioBoolean').checked;
var startHidden = document.getElementById('startHidden').checked; var startHidden = document.getElementById('startHidden').checked;
var blacklist = document.getElementById('blacklist').value; var blacklist = document.getElementById('blacklist').value;
@@ -150,6 +152,7 @@ function save_options() {
chrome.storage.sync.set({ chrome.storage.sync.set({
displayKeyCode: displayKeyCode, displayKeyCode: displayKeyCode,
rememberSpeed: rememberSpeed, rememberSpeed: rememberSpeed,
audioBoolean: audioBoolean,
startHidden: startHidden, startHidden: startHidden,
keyBindings: keyBindings, keyBindings: keyBindings,
blacklist: blacklist.replace(/^\s+|\s+$/gm,'') blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
@@ -168,6 +171,7 @@ function restore_options() {
chrome.storage.sync.get(tcDefaults, function(storage) { chrome.storage.sync.get(tcDefaults, function(storage) {
updateShortcutInputText('displayKeyInput', storage.displayKeyCode); updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
document.getElementById('rememberSpeed').checked = storage.rememberSpeed; document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
document.getElementById('audioBoolean').checked = storage.audioBoolean;
document.getElementById('startHidden').checked = storage.startHidden; document.getElementById('startHidden').checked = storage.startHidden;
document.getElementById('blacklist').value = storage.blacklist; document.getElementById('blacklist').value = storage.blacklist;