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

View File

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

View File

@@ -2,6 +2,7 @@ var tcDefaults = {
speed: 1.0, // default:
displayKeyCode: 86, // default: V
rememberSpeed: false, // default: false
audioBoolean: false, // default: false
startHidden: false, // default: false
keyBindings: [
{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 rememberSpeed = document.getElementById('rememberSpeed').checked;
var audioBoolean = document.getElementById('audioBoolean').checked;
var startHidden = document.getElementById('startHidden').checked;
var blacklist = document.getElementById('blacklist').value;
@@ -150,6 +152,7 @@ function save_options() {
chrome.storage.sync.set({
displayKeyCode: displayKeyCode,
rememberSpeed: rememberSpeed,
audioBoolean: audioBoolean,
startHidden: startHidden,
keyBindings: keyBindings,
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
@@ -168,6 +171,7 @@ function restore_options() {
chrome.storage.sync.get(tcDefaults, function(storage) {
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
document.getElementById('audioBoolean').checked = storage.audioBoolean;
document.getElementById('startHidden').checked = storage.startHidden;
document.getElementById('blacklist').value = storage.blacklist;