summaryrefslogtreecommitdiff
path: root/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2015-03-08 15:26:36 +0000
committerRuben Rodriguez <ruben@gnu.org>2015-03-08 15:26:36 +0000
commita193bfa161d3c4f323ae7ea658321ba546a25057 (patch)
tree82fd641eee3fa6ec4cdf03126e757145cfffa96e /data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js
parente52c51be08c717635abd0ab24fadd0d0a5f16123 (diff)
Updated html5-video-everywhere to 0.2.30
Diffstat (limited to 'data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js')
-rw-r--r--data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/main.js97
1 files changed, 69 insertions, 28 deletions
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
index 8240ede..bcf9685 100644
--- 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
@@ -9,48 +9,95 @@ const {
const data = require("sdk/self").data;
const pageMod = require("sdk/page-mod");
const events = require("sdk/system/events");
+const staticArgs = require("sdk/system").staticArgs;
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")
-];
+const pageMods = {};
+const common = require("./common");
+const allDrivers = {
+ "facebook": require("./facebook"),
+ "vimeo": require("./vimeo"),
+ "dailymotion": require("./dailymotion"),
+ "break": require("./break"),
+ "metacafe": require("./metacafe"),
+ "youtube": require("./youtube")
+};
+var disabledDrivers = prefs.disable.split(",").map(i => i.trim());
+const drivers = (Array.isArray(staticArgs.drivers) ?
+ staticArgs.drivers :
+ Object.keys(allDrivers)).filter(i =>
+ disabledDrivers.indexOf(i) === -1
+);
+
+
+const onWorkerAttach = (drvName, listen) => (worker) => {
+ logify("onAttach", worker);
+ //send current Addon preferences to content-script
+ let _prefs = {};
+ for (let pref in prefs)
+ _prefs[pref] = prefs[pref];
+ _prefs.driver = drvName;
+ _prefs.production = staticArgs.production;
+ worker.port.emit("preferences", _prefs);
+ add(workers, worker);
+ worker.port.on("prefChang", (pref) =>
+ prefs[pref.name] = pref.val);
+ worker.port.on("disable", () => {
+ disabledDrivers.push(drvName);
+ prefs.disable = disabledDrivers.join(",");
+ remove(drivers, drvName);
+ pageMods[drvName].destroy();
+ });
+ for (let evt in listen) {
+ logify("Add listener:", evt);
+ worker.port.on(evt, (obj) => {
+ listen[evt](obj, worker);
+ });
+ }
+ worker.on("detach", function(e) {
+ remove(workers, this);
-for (let driver of drivers) {
+ });
+};
+for (let drvName of drivers) {
+ var driver = allDrivers[drvName];
if (driver.match === void(0))
continue;
- pageMod.PageMod({
+ var scripts, styles;
+ scripts = common.inject.concat(driver.inject)
+ .map(i => data.url(i));
+ styles = common.style.concat(driver.style || [])
+ .map(i => data.url(i));
+ pageMods[drvName] = pageMod.PageMod({
include: driver.match,
- contentScriptFile: driver.inject.map(i => data.url(i)),
+ contentScriptFile: scripts,
+ contentStyleFile: styles,
contentScriptWhen: driver.when || "ready",
- onAttach: onWorkerAttach
+ onAttach: onWorkerAttach(drvName, driver.listen)
});
}
function listener(event) {
var channel = event.subject.QueryInterface(Ci.nsIHttpChannel);
var url = event.subject.URI.spec;
- for (let driver of drivers) {
+ for (let drvName of drivers) {
+ var driver = allDrivers[drvName];
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);
+ logify("Redirect:", url);
return;
}
}
for (let block of(driver.block || [])) {
if (block.test(url)) {
channel.cancel(Cr.NS_BINDING_ABORTED);
- console.log("Block:", url);
+ logify("Block:", url);
return;
}
}
@@ -75,20 +122,14 @@ function workersPrefHandler(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);
-
- });
+function logify(...args) {
+ if (staticArgs.production)
+ return;
+ args.unshift("[CORE]");
+ dump(args.join(" ") + "\n");
}
-exports.main = function() {
+
+exports.main = () => {
events.on("http-on-modify-request", listener);
};
exports.onUnload = function(reason) {