From 3d2f2cbc6f20a5bb9cb2eba3dfccb6b4986a0d04 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Mon, 13 Jul 2015 22:54:20 -0500 Subject: HTML5 Video Everywhere updated to 0.2.38.1 --- .../META-INF/manifest.mf | 127 +++++++++++++++++++++ .../META-INF/mozilla.rsa | Bin 0 -> 4192 bytes .../META-INF/mozilla.sf | 4 + .../bootstrap.js | 0 .../defaults/preferences/prefs.js | 8 +- .../harness-options.json | 78 +++++++++++-- .../html5-video-everywhere@lejenome.me/install.rdf | 7 +- .../html5-video-everywhere@lejenome.me/options.xul | 15 +++ .../resources/html5-video-everywhere/data/break.js | 3 +- .../html5-video-everywhere/data/common.js | 5 +- .../html5-video-everywhere/data/dailymotion.js | 1 + .../html5-video-everywhere/data/facebook.js | 3 +- .../data/flashgot-YouTubeSwf.js | 2 +- .../html5-video-everywhere/data/metacafe.js | 2 + .../html5-video-everywhere/data/video-player.js | 26 ++++- .../resources/html5-video-everywhere/data/vimeo.js | 1 + .../html5-video-everywhere/data/youtube.js | 42 +++++-- .../html5-video-everywhere/lib/facebook.js | 2 +- .../html5-video-everywhere/lib/flashgot-YouTube.js | 5 +- .../resources/html5-video-everywhere/lib/main.js | 48 +++++--- 20 files changed, 328 insertions(+), 51 deletions(-) create mode 100644 data/extensions/html5-video-everywhere@lejenome.me/META-INF/manifest.mf create mode 100644 data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.rsa create mode 100644 data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.sf mode change 100644 => 100755 data/extensions/html5-video-everywhere@lejenome.me/bootstrap.js (limited to 'data') diff --git a/data/extensions/html5-video-everywhere@lejenome.me/META-INF/manifest.mf b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/manifest.mf new file mode 100644 index 0000000..8b51fb4 --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/manifest.mf @@ -0,0 +1,127 @@ +Manifest-Version: 1.0 + +Name: install.rdf +Digest-Algorithms: MD5 SHA1 +MD5-Digest: yEAlVKMLjXkyf3c7msk/Xw== +SHA1-Digest: aV3Z43FdsOjtb5MVBqTufnvUCLc= + +Name: bootstrap.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: 7e6z9LJUzPhqfgyfhRMzhA== +SHA1-Digest: TWD0b5BkAoKXr56l0Tt3AkKBy8s= + +Name: harness-options.json +Digest-Algorithms: MD5 SHA1 +MD5-Digest: gvOukOdXNjdHv1ejWNp02g== +SHA1-Digest: kbPOKwGp8XnWtsH95t0fwLRplOE= + +Name: locales.json +Digest-Algorithms: MD5 SHA1 +MD5-Digest: p3Qh60/6wDH/UunTuTWZjQ== +SHA1-Digest: DBci+JD/520hUnFSB3zB1xoBE9g= + +Name: options.xul +Digest-Algorithms: MD5 SHA1 +MD5-Digest: AQXhzeAfLxO+ATnTSo9pOw== +SHA1-Digest: TjNQdfc9jutGAHq9GjWhCrjsXaI= + +Name: defaults/preferences/prefs.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: WB3cSv+b4ydlRWW5JKfkyw== +SHA1-Digest: 8NhNf95wV6r8Pj6T2VaLw4URH/k= + +Name: resources/html5-video-everywhere/data/break.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: FHcsZl9Qe91hW/7B28cAkg== +SHA1-Digest: P4o5B+pFXkcUyTcjR/EjVPN2NEY= + +Name: resources/html5-video-everywhere/data/common.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: E1LUgC77SvIagwSzhOELtQ== +SHA1-Digest: RKAZ/SxZXihI9RR/YuPqx/qr+Zo= + +Name: resources/html5-video-everywhere/data/dailymotion.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: ozG1xmyo2629YYbN1ZP18Q== +SHA1-Digest: 9opU+TINoR5HlMlK1LTq29yB3OA= + +Name: resources/html5-video-everywhere/data/facebook.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: fqr4Z17t/ZoygcVknd9/dg== +SHA1-Digest: xicvIjTGA2Usu3fRfOkDnoEZaek= + +Name: resources/html5-video-everywhere/data/flashgot-YouTubeSwf.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: T+XZ+Rd72kqQauBCH92lDQ== +SHA1-Digest: FqZ/r+c3xYHqFzMwYAQLk2OP9vU= + +Name: resources/html5-video-everywhere/data/metacafe.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: NMql8+nLTPMdxjV6sP5H3g== +SHA1-Digest: q2qpkNvUhobvaJjcc7UalhgXnMI= + +Name: resources/html5-video-everywhere/data/video-player.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: GdLZBfcj0UrWd0diFLtwlQ== +SHA1-Digest: T4kSzQs0WwEMwBTvWXR0zG9Xvio= + +Name: resources/html5-video-everywhere/data/vimeo.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: vysLIrQbnaQs04x+JUaY1A== +SHA1-Digest: /4NusOTf5vM0OvXpI/gBGnd+CwU= + +Name: resources/html5-video-everywhere/data/youtube-formats.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: ba8pxu4YWbMTFLI7u9nSww== +SHA1-Digest: 8LdbGx/9NDqLQ9CndverrJzTRHA= + +Name: resources/html5-video-everywhere/data/youtube.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: fw7qzIDcMToQ8yY0VkEdqQ== +SHA1-Digest: ezxXLeySGAqP/Yh/E3UCTu1F/RE= + +Name: resources/html5-video-everywhere/lib/break.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: Gs/Etew95x/lD3IuZifl5Q== +SHA1-Digest: 56GIkHz/2jJL9bEjPkLPdO1KVNo= + +Name: resources/html5-video-everywhere/lib/common.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: CYP8cXv4SBDfwNklEF7UmA== +SHA1-Digest: 5B8qBt1SCvK4GERTM/ggXyZLYiM= + +Name: resources/html5-video-everywhere/lib/dailymotion.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: G7beTZLJ9bV8qd4TQKvSJA== +SHA1-Digest: rg2Qw46iUoN3IjqEDdcklKTq3XM= + +Name: resources/html5-video-everywhere/lib/facebook.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: MwgClTBiBe7LFJNcvKMjlg== +SHA1-Digest: H9dSJUDuos2GyVC5dqLB/wMH+9Q= + +Name: resources/html5-video-everywhere/lib/flashgot-YouTube.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: VHCubRXtltPxbjJwQSP8Ug== +SHA1-Digest: ejl5VDFw9wkD6xs+QZGKxD0B6jw= + +Name: resources/html5-video-everywhere/lib/main.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: R6NltxG2mAW+bFuh2zJOdQ== +SHA1-Digest: HjEEU999PhXM4vX4gski8wIY058= + +Name: resources/html5-video-everywhere/lib/metacafe.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: Kapqu2JlNqdfYVl1mzWZVQ== +SHA1-Digest: Wk6FJJqfUJsTY4EsqXHkk9hMkmc= + +Name: resources/html5-video-everywhere/lib/vimeo.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: jTJdcUeScUvccb3lLljoNg== +SHA1-Digest: PFedn4/SHpnfvE32ZXSLJON1SYg= + +Name: resources/html5-video-everywhere/lib/youtube.js +Digest-Algorithms: MD5 SHA1 +MD5-Digest: 2iKx56tEhaAJbSLMWZITlA== +SHA1-Digest: nEY1iWkxNKagLglR5KVwjS+meYU= + diff --git a/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.rsa b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.rsa new file mode 100644 index 0000000..71cd3a1 Binary files /dev/null and b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.rsa differ diff --git a/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.sf b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.sf new file mode 100644 index 0000000..fdecacb --- /dev/null +++ b/data/extensions/html5-video-everywhere@lejenome.me/META-INF/mozilla.sf @@ -0,0 +1,4 @@ +Signature-Version: 1.0 +MD5-Digest-Manifest: rXdZTR03/BLV1sP4JNWVTA== +SHA1-Digest-Manifest: F+qwFdUpvRczR7PLQrIdFhIzwPE= + diff --git a/data/extensions/html5-video-everywhere@lejenome.me/bootstrap.js b/data/extensions/html5-video-everywhere@lejenome.me/bootstrap.js old mode 100644 new mode 100755 diff --git a/data/extensions/html5-video-everywhere@lejenome.me/defaults/preferences/prefs.js b/data/extensions/html5-video-everywhere@lejenome.me/defaults/preferences/prefs.js index 348e8f9..42b12f8 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/defaults/preferences/prefs.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/defaults/preferences/prefs.js @@ -5,7 +5,13 @@ pref("extensions.html5-video-everywhere@lejenome.me.prefCdc", 0); pref("extensions.html5-video-everywhere@lejenome.me.prefQlt", 2); pref("extensions.html5-video-everywhere@lejenome.me.autoplay", 2); pref("extensions.html5-video-everywhere@lejenome.me.preload", 2); +pref("extensions.html5-video-everywhere@lejenome.me.loop", 2); pref("extensions.html5-video-everywhere@lejenome.me.volume", 100); pref("extensions.html5-video-everywhere@lejenome.me.player", 0); pref("extensions.html5-video-everywhere@lejenome.me.disableEmbed", false); -pref("extensions.html5-video-everywhere@lejenome.me.disable", ""); +pref("extensions.html5-video-everywhere@lejenome.me.disablebreak", false); +pref("extensions.html5-video-everywhere@lejenome.me.disabledailymotion", false); +pref("extensions.html5-video-everywhere@lejenome.me.disablefacebook", false); +pref("extensions.html5-video-everywhere@lejenome.me.disablemetacafe", false); +pref("extensions.html5-video-everywhere@lejenome.me.disablevimeo", false); +pref("extensions.html5-video-everywhere@lejenome.me.disableyoutube", false); diff --git a/data/extensions/html5-video-everywhere@lejenome.me/harness-options.json b/data/extensions/html5-video-everywhere@lejenome.me/harness-options.json index 3ae072a..8bc27ae 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/harness-options.json +++ b/data/extensions/html5-video-everywhere@lejenome.me/harness-options.json @@ -5,7 +5,7 @@ "is-sdk-bundled": false, "jetpackID": "html5-video-everywhere@lejenome.me", "loader": "addon-sdk/lib/sdk/loader/cuddlefish.js", - "main": "main", + "main": "./lib/main.js", "mainPath": "html5-video-everywhere/main", "manifest": { "html5-video-everywhere/break": { @@ -36,7 +36,7 @@ }, "html5-video-everywhere/facebook": { "docsSHA256": null, - "jsSHA256": "c6a46824a0bac1fdcc434e60aec31247fc2992ef0e51c2de323b6b285d320ad3", + "jsSHA256": "b1b059dcca9426349b83f5194d910b7cf2fc217811b9e56ab52aebba3076f1ef", "moduleName": "facebook", "packageName": "html5-video-everywhere", "requirements": {}, @@ -44,7 +44,7 @@ }, "html5-video-everywhere/flashgot-YouTube": { "docsSHA256": null, - "jsSHA256": "126b5e88bb2d17aa80945b7616466b747b29bac06c88e031ac8f43e5d6d001a4", + "jsSHA256": "82248ac1442dd88f87de49b9f7eccde9c78c83360c124a2e126205cf7b8b16a5", "moduleName": "flashgot-YouTube", "packageName": "html5-video-everywhere", "requirements": { @@ -57,7 +57,7 @@ }, "html5-video-everywhere/main": { "docsSHA256": "40f094347101eaf752165137f7ff4e55c6f6bb08eba8225a04c13cefe5ebc1c9", - "jsSHA256": "f03f04fb553f7641efe5d3427240c53dd48879f2058ae4d0b8b43cf3070eea21", + "jsSHA256": "2c646510b6adcf416063dcbb9a5302a32adf5f60c225a9993f93ddc1459b09f2", "moduleName": "main", "packageName": "html5-video-everywhere", "requirements": { @@ -129,12 +129,12 @@ "description": "Replace video player with Firefox native video player", "homepage": "https://github.com/lejenome/html5-video-everywhere", "license": "MPL 2.0", - "main": "main", + "main": "./lib/main.js", "name": "html5-video-everywhere", "permissions": { "private-browsing": true }, - "version": "0.2.30" + "version": "0.2.38" } }, "name": "html5-video-everywhere", @@ -321,6 +321,26 @@ "type": "menulist", "value": 2 }, + { + "name": "loop", + "options": [ + { + "label": "Default", + "value": "2" + }, + { + "label": "Always", + "value": "1" + }, + { + "label": "Never", + "value": "0" + } + ], + "title": "Auto Loop Video", + "type": "menulist", + "value": 2 + }, { "name": "volume", "title": "Volume", @@ -354,12 +374,46 @@ "value": false }, { - "description": "comma-separated list of drivers to disable", - "hidden": true, - "name": "disable", - "title": "Drivers to disable", - "type": "string", - "value": "" + "description": "Use default video player on Break", + "name": "disablebreak", + "title": "Disable on Break", + "type": "bool", + "value": false + }, + { + "description": "Use default video player on Dailymotion", + "name": "disabledailymotion", + "title": "Disable on Dailymotion", + "type": "bool", + "value": false + }, + { + "description": "Use default video player on Facebook", + "name": "disablefacebook", + "title": "Disable on Facebook", + "type": "bool", + "value": false + }, + { + "description": "Use default video player on Metacafe", + "name": "disablemetacafe", + "title": "Disable on Metacafe", + "type": "bool", + "value": false + }, + { + "description": "Use default video player on Vimeo", + "name": "disablevimeo", + "title": "Disable on Vimeo", + "type": "bool", + "value": false + }, + { + "description": "Use default video player on Youtube", + "name": "disableyoutube", + "title": "Disable on Youtube", + "type": "bool", + "value": false } ], "preferencesBranch": "html5-video-everywhere@lejenome.me", diff --git a/data/extensions/html5-video-everywhere@lejenome.me/install.rdf b/data/extensions/html5-video-everywhere@lejenome.me/install.rdf index 964f608..550a5c5 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/install.rdf +++ b/data/extensions/html5-video-everywhere@lejenome.me/install.rdf @@ -1,9 +1,8 @@ - + + html5-video-everywhere@lejenome.me - 0.2.30 + 0.2.38.1-signed 2 true false diff --git a/data/extensions/html5-video-everywhere@lejenome.me/options.xul b/data/extensions/html5-video-everywhere@lejenome.me/options.xul index 54bb84e..35bd9ac 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/options.xul +++ b/data/extensions/html5-video-everywhere@lejenome.me/options.xul @@ -66,5 +66,20 @@ + + + + + + + + + + Use default video player on Break + Use default video player on Dailymotion + Use default video player on Facebook + Use default video player on Metacafe + Use default video player on Vimeo + Use default video player on Youtube diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/break.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/break.js index 342cd45..24fbcb8 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/break.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/break.js @@ -28,7 +28,8 @@ vp.props({ controls: true, autoplay: autoPlay(true), - preload: preLoad() + preload: preLoad(), + loop: isLoop() }); vp.style({ width: "100%", diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/common.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/common.js index 8598dd4..cf95590 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/common.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/common.js @@ -1,10 +1,10 @@ /* global OPTIONS:true, onPrefChange:true, LANGS:true */ /* global createNode:true, asyncGet:true, onReady:true, logify:true */ /* global preLoad:true, autoPlay:true, HANDLE_VOL_PREF_CHANGE:true */ -/* global rmChildren:true, Qlt:true, Cdc:true, chgPref:true */ +/* global rmChildren:true, Qlt:true, Cdc:true, chgPref:true, isLoop:true */ // the following jshint global rule is only because jshint support for ES6 arrow // functions is limited -/* global wrapper:true, args:true, auto:true */ +/* global wrapper:true, args:true, auto:true, lp:true */ "use strict"; //This Addons Preferences @@ -99,6 +99,7 @@ const autoPlay = (auto = false) => ((OPTIONS.autoplay === 1 || auto === true) && OPTIONS.autoplay !== 0); const preLoad = (auto = false) => ((OPTIONS.preload === 1 || auto === true) && OPTIONS.preload !== 0) ? "auto" : "metadata"; +const isLoop = (lp = false) => ((OPTIONS.loop === 1 || lp) && OPTIONS.loop !== 0); const rmChildren = (prnt) => { while (prnt && prnt.firstChild) diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/dailymotion.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/dailymotion.js index f83b1ce..59dd351 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/dailymotion.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/dailymotion.js @@ -35,6 +35,7 @@ controls: true, autoplay: autoPlay(), preload: preLoad(), + loop: isLoop(), poster: poster }); vp.style({ diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/facebook.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/facebook.js index 43d241c..608b48c 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/facebook.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/facebook.js @@ -14,7 +14,8 @@ vp.props({ controls: true, autoplay: autoPlay(true), - preload: preLoad() + preload: preLoad(), + loop: isLoop() }); vp.style({ width: "100%", diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/flashgot-YouTubeSwf.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/flashgot-YouTubeSwf.js index 8bb4723..8f36a47 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/flashgot-YouTubeSwf.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/flashgot-YouTubeSwf.js @@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ***** END LICENSE BLOCK *****/ /* the following jshint rules are added by Moez Bouhlel to pass diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/metacafe.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/metacafe.js index 7fc9cc2..f689666 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/metacafe.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/metacafe.js @@ -28,6 +28,7 @@ vp.props({ autoplay: autoPlay(true), preload: preLoad(), + loop: isLoop(), controls: true }); vp.style({ @@ -52,6 +53,7 @@ vp.props({ autoplay: autoPlay(false), preload: preLoad(), + loop: isLoop(), controls: true }); vp.style({ diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/video-player.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/video-player.js index 1c578e2..8cbe2bb 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/video-player.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/video-player.js @@ -225,6 +225,7 @@ VP.prototype.setupLBP = function() { this.container.style.marginLeft = "0px"; }; VP.prototype.setupContextMenu = function(idx) { + /* jshint maxstatements:false */ this._contextMenu = createNode("menu", { type: "context", //"popup", id: "h5vew-contextmenu" @@ -293,7 +294,20 @@ VP.prototype.setupContextMenu = function(idx) { onclick: (e) => this.slctLang(e.target.label) })); - + var loopMenu = createNode("menu", { + id: "h5vew-menu-loop", + label: "Loop Video" + }); + ["Never", "Always", "Default"].forEach((n, i) => { + loopMenu.appendChild(createNode("menuitem", { + type: "radio", + label: n, + radiogroup: "menu-loop", + checked: (OPTIONS.loop === i), + onclick: (e) => + chgPref("loop", i) + })); + }); var autoNextMenu = createNode("menuitem", { id: "h5vew-menu-autonext", type: "checkbox", @@ -310,6 +324,14 @@ VP.prototype.setupContextMenu = function(idx) { this._contextMenu.removeChild(disableMenu); } }); + var aboutMenu = createNode("menuitem", { + id: "h5vew-menu-about", + label: "About HTML5 Video EveryWhere", + onclick: () => + window.open("http://lejenome.github.io/html5-video-everywhere#v=" + + OPTIONS.addon.version + "&id=" + OPTIONS.addon.id, + "h5vew-about", "width=550,height=280,menubar=no,toolbar=no,location=no,status=no,chrome=on,modal=on") + }); const prefChanged = (name) => { if (name === "autoNext") autoNextMenu.checked = OPTIONS.autoNext; @@ -319,8 +341,10 @@ VP.prototype.setupContextMenu = function(idx) { this._contextMenu.appendChild(cdcMenu); if (this._langs.length > 0) this._contextMenu.appendChild(langMenu); + this._contextMenu.appendChild(loopMenu); this._contextMenu.appendChild(autoNextMenu); this._contextMenu.appendChild(disableMenu); + this._contextMenu.appendChild(aboutMenu); this.container.appendChild(this._contextMenu); // TODO: fix assigning contextMenu and uncommant createNode("video") ^ this.container.contextmenu = "h5vew-contextmenu"; diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/vimeo.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/vimeo.js index d0cede6..39701a8 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/vimeo.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/vimeo.js @@ -33,6 +33,7 @@ className: conf.className, autoplay: autoPlay(), preload: preLoad(), + loop: isLoop(), controls: true, poster: conf.poster, volume: OPTIONS.volume / 100 diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/youtube.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/youtube.js index b8eef42..b7d3840 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/youtube.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/data/youtube.js @@ -25,23 +25,25 @@ var player_container = getPlayerContainer(conf); if (!player_container) return; + var seek = getSeek(); vp = new VP(player_container); - vp.srcs(conf.fmts, FMT_WRAPPER, (fmt) => fmt.url); - vp.containerProps({ - className: conf.className || "" - }); + vp.srcs(conf.fmts, FMT_WRAPPER, (fmt) => fmt.url + seek); + //vp.containerProps({ + // className: conf.className || "" + //}); vp.props({ id: "video_player", className: conf.className || "", - autoplay: autoPlay(!conf.isEmbed), + autoplay: autoPlay(location.search.search("autoplay=") === -1 ? !conf.isEmbed : location.search.search("autoplay=0") === -1), preload: preLoad(), + loop: isLoop(location.search.search("loop=1") !== -1), controls: true, poster: conf.poster || "", volume: OPTIONS.volume / 100 }); - vp.style({ - position: "relative" - }); + //vp.style({ + // position: "relative" + //}); vp.tracksList((conf.tracks || []).map(i => i.lc), (lang, resolve, reject) => { var o = conf.tracks.find((i) => i.lc === lang); if (o === undefined) @@ -90,7 +92,7 @@ vp.srcs(conf.fmts, FMT_WRAPPER); if (conf && conf.isWatch) vp.containerProps({ - className: " player-height player-width" + className: " player-height player-width player-api" }); if (conf && conf.isChannel) vp.containerProps({ @@ -135,7 +137,7 @@ conf.className = "c4-player-container"; //+ " html5-main-video" } else { conf.id = location.search.slice(1).match(/v=([^/?#]*)/)[1]; - conf.className = "player-width player-height"; + conf.className = "player-width player-height player-api"; } if (!conf.id) reject({ @@ -301,7 +303,25 @@ webvtt += (i + 1) + "\n" + tl1 + " --> " + tl2 + "\n" + els[i].textContent + "\n\n"; } - resolve("data:text/vtt;base64," + btoa(webvtt.replace("'", "'", "g"))); + resolve("data:text/vtt;base64," + btoa(window.unescape( + encodeURIComponent(webvtt.replace("'", "'", "g"))))); }); } + + function getSeek() { + var seek = 0; + if (location.search.search("start=") > -1) { + seek = location.search.match(/start=(\d+)/); + seek = seek ? parseInt(seek[1]) : 0; + } else if (location.search.search(/[&?]t=\d/) > -1) { + seek = location.search.match(/[&?]t=([^&]*)/)[1]; + var h = seek.match(/(\d+)h/); + var m = seek.match(/(\d+)m/); + var s = seek.match(/(\d+)s/); + seek = (h ? parseInt(h[1]) : 0) * 3600 + + (m ? parseInt(m[1]) : 0) * 60 + + (s ? parseInt(s[1]) : 0); + } + return seek > 0 ? ("#t=" + seek) : ""; + } }()); \ 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 index d252044..1198b28 100644 --- 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 @@ -1,5 +1,5 @@ "use strict"; -var match = [/https?:\/\/(www\.|beta\.)?facebook.com\/video.php\?.*/]; +var match = [/https?:\/\/(www\.|beta\.)?facebook.com\/(.*\/videos\/.*|video.php\?.*)/]; var inject = [ "facebook.js" ]; diff --git a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/flashgot-YouTube.js b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/flashgot-YouTube.js index 9e9e1da..3507fb8 100644 --- a/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/flashgot-YouTube.js +++ b/data/extensions/html5-video-everywhere@lejenome.me/resources/html5-video-everywhere/lib/flashgot-YouTube.js @@ -15,11 +15,12 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ***** END LICENSE BLOCK *****/ /* Modified By Moez Bouhlel to be used on HTML5-Video-EveryWhere */ /* jshint laxbreak:true, maxstatements:false, evil:true, latedef:false */ +/* jshint maxdepth:4 */ /* jshint maxcomplexity:false, -W116 */ /* global args:false */ "use strict"; @@ -491,6 +492,8 @@ Youtube.fix_signature = function(data, fmts, swf_url, cb) { if (sig) { fg.log("Fmt", itag, "url fixed:", sig); fmts[itag].url += "&signature=" + encodeURIComponent(sig); + if(!sig.match(/^[0-9A-Z]{40}\.[0-9A-Z]{40}$/)) + fg.setPref("media.YouTube.decode_signature_func", ""); } else { fg.log("Failed to fix fmt", itag, "signature"); delete fmts[itag]; 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 bcf9685..d416289 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 @@ -6,7 +6,7 @@ const { const { add, remove } = require("sdk/util/array"); -const data = require("sdk/self").data; +const _self = require("sdk/self"); const pageMod = require("sdk/page-mod"); const events = require("sdk/system/events"); const staticArgs = require("sdk/system").staticArgs; @@ -24,11 +24,17 @@ const allDrivers = { "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 + Object.keys(allDrivers)).filter(drvName => + prefs["disable" + drvName] === false +); + +//ensure preferences match the state of disabled drivers +Object.keys(allDrivers).filter(drvName => + drivers.indexOf(drvName) === -1 +).forEach(drvName => + prefs["disable" + drvName] = true ); @@ -40,16 +46,16 @@ const onWorkerAttach = (drvName, listen) => (worker) => { _prefs[pref] = prefs[pref]; _prefs.driver = drvName; _prefs.production = staticArgs.production; + _prefs.addon = { + id: _self.id, + version: _self.version + }; 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(); - }); + worker.port.on("disable", () => + prefs["disable" + drvName] = true); for (let evt in listen) { logify("Add listener:", evt); worker.port.on(evt, (obj) => { @@ -61,15 +67,18 @@ const onWorkerAttach = (drvName, listen) => (worker) => { }); }; -for (let drvName of drivers) { + +drivers.forEach(setupDriver); + +function setupDriver(drvName) { var driver = allDrivers[drvName]; if (driver.match === void(0)) - continue; + return; var scripts, styles; scripts = common.inject.concat(driver.inject) - .map(i => data.url(i)); + .map(i => _self.data.url(i)); styles = common.style.concat(driver.style || []) - .map(i => data.url(i)); + .map(i => _self.data.url(i)); pageMods[drvName] = pageMod.PageMod({ include: driver.match, contentScriptFile: scripts, @@ -110,7 +119,16 @@ require("sdk/simple-prefs").on("", function prefChangeHandler(pref) { prefs.volume = 100; else if (pref === "volume" && prefs.volume < 0) prefs.volume = 0; - else + else if (pref.startsWith("disable")) { + let drvName = /^disable(.+)/.exec(pref)[1]; + if (prefs[pref] === false) { + add(drivers, drvName); + setupDriver(drvName); + } else { + remove(drivers, drvName); + pageMods[drvName].destroy(); + } + } else workersPrefHandler(pref); }); -- cgit v1.2.3