diff options
Diffstat (limited to 'data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib')
7 files changed, 169 insertions, 0 deletions
diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/break.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/break.js new file mode 100644 index 0000000..79f1a8b --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/break.js @@ -0,0 +1,10 @@ +"use strict"; +var match = [/https?:\/\/www.break.com\/embed\/.*/]; +var inject = [ + "common.js", + "break.js" +]; +var when = "start"; +exports.when = when; +exports.match = match; +exports.inject = inject;
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/dailymotion.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/dailymotion.js new file mode 100644 index 0000000..e2c5761 --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/dailymotion.js @@ -0,0 +1,10 @@ +"use strict"; +var match = [/https?:\/\/(www.)dailymotion.com\/embed\/video\/.*/]; +var inject = [ + "common.js", + "dailymotion.js" +]; +var when = "start"; +exports.when = when; +exports.match = match; +exports.inject = inject;
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/facebook.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/facebook.js new file mode 100644 index 0000000..a229268 --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/facebook.js @@ -0,0 +1,8 @@ +"use strict"; +var match = [/https?:\/\/(www\.|beta\.)?facebook.com\/video.php\?.*/]; +var inject = [ + "common.js", + "facebook.js" +]; +exports.match = match; +exports.inject = inject;
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js new file mode 100644 index 0000000..8240ede --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js @@ -0,0 +1,96 @@ +/* jshint esnext:true, node:true*/ +"use strict"; +const { + Cc, Ci, Cr +} = require("chrome"); +const { + add, remove +} = require("sdk/util/array"); +const data = require("sdk/self").data; +const pageMod = require("sdk/page-mod"); +const events = require("sdk/system/events"); +const utils = require("sdk/window/utils"); +var prefs = require("sdk/simple-prefs").prefs; +// list of current workers +const workers = []; +const drivers = [ + require("./youtube.js"), + require("./vimeo.js"), + require("./dailymotion.js"), + require("./break.js"), + require("./metacafe.js"), + require("./facebook.js") +]; + +for (let driver of drivers) { + if (driver.match === void(0)) + continue; + pageMod.PageMod({ + include: driver.match, + contentScriptFile: driver.inject.map(i => data.url(i)), + contentScriptWhen: driver.when || "ready", + onAttach: onWorkerAttach + }); +} + +function listener(event) { + var channel = event.subject.QueryInterface(Ci.nsIHttpChannel); + var url = event.subject.URI.spec; + for (let driver of drivers) { + for (let redirect of(driver.redirect || [])) { + if (redirect.src.test(url)) { + channel.redirectTo(Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService).newURI( + String.replace(url, redirect.src, redirect.funct), + null, + null)); + console.log("Redirect:", url); + return; + } + } + for (let block of(driver.block || [])) { + if (block.test(url)) { + channel.cancel(Cr.NS_BINDING_ABORTED); + console.log("Block:", url); + return; + } + } + } +} + +//on Addon prefernces change, send the changes to content-script +require("sdk/simple-prefs").on("", function prefChangeHandler(pref) { + if (pref === "volume" && prefs.volume > 100) + prefs.volume = 100; + else if (pref === "volume" && prefs.volume < 0) + prefs.volume = 0; + else + workersPrefHandler(pref); +}); + +function workersPrefHandler(pref) { + for (let worker of workers) + worker.port.emit("prefChanged", { + name: pref, + value: prefs[pref] + }); +} + +function onWorkerAttach(worker) { + console.log("onAttach", worker); + //send current Addon preferences to content-script + let _prefs = {}; + for (let pref in prefs) + _prefs[pref] = prefs[pref]; + worker.port.emit("preferences", _prefs); + add(workers, worker); + worker.on("detach", function(e) { + remove(workers, this); + + }); +} +exports.main = function() { + events.on("http-on-modify-request", listener); +}; +exports.onUnload = function(reason) { + events.off("http-on-modify-request", listener); +};
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/metacafe.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/metacafe.js new file mode 100644 index 0000000..ca6d179 --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/metacafe.js @@ -0,0 +1,12 @@ +"use strict"; +var match = [/https?:\/\/www.metacafe.com\/watch\/.*/, + /https?:\/\/www.metacafe.com\/[^\/]+\/?/ +]; +var inject = [ + "common.js", + "metacafe.js" +]; +var when = "start"; +exports.when = when; +exports.match = match; +exports.inject = inject;
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/vimeo.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/vimeo.js new file mode 100644 index 0000000..1475d1d --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/vimeo.js @@ -0,0 +1,12 @@ +"use strict"; +var when = "start"; +var match = [/https?:\/\/vimeo.com\/.+/, + /https?:\/\/player.vimeo.com\/video.*/ +]; +var inject = [ + "common.js", + "vimeo.js" +]; +exports.when = when; +exports.match = match; +exports.inject = inject;
\ No newline at end of file diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/youtube.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/youtube.js new file mode 100644 index 0000000..e054233 --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/youtube.js @@ -0,0 +1,21 @@ +"use strict"; +var YOUTUBE_FLASH_REGEX = /https?:\/\/(www.)?youtube.com\/v\/([^#?\/]*)/; +var YT_BIN_REGEX = /https:\/\/s.ytimg.com\/yts\/jsbin\/[^\/]*\/base.js/; +var YT_PLAYER_REGEX = /https?:\/\/s.ytimg.com\/yts\/jsbin\/[^\/]*\/html5player.js/; +var when = "start"; +var match = ["*.www.youtube.com"]; +var inject = [ + "common.js", + "youtube-formats.js", + "youtube.js" +]; +var redirect = [{ + src: /https?:\/\/(www.)?youtube.com\/v\/([^#?\/]*)/, + funct: (_1, _2, v) => "https://www.youtube.com/embed/" + v +}]; +var block = [/https?:\/\/s.ytimg.com\/yts\/jsbin\/[^\/]*\/html5player.js/]; +exports.when = when; +exports.match = match; +exports.inject = inject; +exports.redirect = redirect; +exports.block = block;
\ No newline at end of file |