summaryrefslogtreecommitdiff
path: root/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib
diff options
context:
space:
mode:
Diffstat (limited to 'data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib')
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/break.js10
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/dailymotion.js10
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/facebook.js8
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js96
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/metacafe.js12
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/vimeo.js12
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/youtube.js21
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