From fdef70ca0a2dd0933717086b9e1ce930fd76251d Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Fri, 22 May 2015 11:31:35 -0400 Subject: [PATCH 1/4] Load text tracks on demand. --- src/js/tracks/text-track.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index 40d10a2061..fa5bda6456 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -107,6 +107,11 @@ vjs.TextTrack = function(options) { return; } mode = newMode; + + if (mode !== 'disabled' && this['cues'].length === 0) { + loadTrack(this.src_, this); + } + if (mode === 'showing') { this.player_.on('timeupdate', timeupdateHandler); } @@ -172,7 +177,11 @@ vjs.TextTrack = function(options) { }); if (options.src) { - loadTrack(options.src, tt); + tt.loaded_ = true; + tt.src_ = options.src; + if (options.default) { + loadTrack(options.src, tt); + } } else { tt.loaded_ = true; } @@ -185,6 +194,10 @@ vjs.TextTrack = function(options) { vjs.TextTrack.prototype = vjs.obj.create(vjs.EventEmitter.prototype); vjs.TextTrack.prototype.constructor = vjs.TextTrack; +vjs.TextTrack.prototype.load_ = function() { + loadTrack(this.src_, this); +}; + /* * cuechange - One or more cues in the track have become active or stopped being active. */ @@ -233,6 +246,10 @@ vjs.TextTrack.prototype.removeCue = function(removeCue) { var loadTrack, parseCues, indexOf; loadTrack = function(src, track) { + if (!src) { + return; + } + vjs.xhr(src, vjs.bind(this, function(err, response, responseBody){ if (err) { return vjs.log.error(err); From ce10b2212a2b2a0ebe3ba09137e0f7b4f090226e Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Fri, 22 May 2015 12:20:26 -0400 Subject: [PATCH 2/4] Access 'default' via bracket notation --- src/js/tracks/text-track.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index fa5bda6456..aaf0976956 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -179,7 +179,7 @@ vjs.TextTrack = function(options) { if (options.src) { tt.loaded_ = true; tt.src_ = options.src; - if (options.default) { + if (options['default']) { loadTrack(options.src, tt); } } else { From 006ea66fa9798c97770a19aa58a6446ff799fdbd Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Mon, 1 Jun 2015 15:42:45 -0400 Subject: [PATCH 3/4] timeupdate on not disabled --- src/js/tracks/text-track.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index aaf0976956..b7cb2cc9b9 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -112,7 +112,7 @@ vjs.TextTrack = function(options) { loadTrack(this.src_, this); } - if (mode === 'showing') { + if (mode !== 'disabled') { this.player_.on('timeupdate', timeupdateHandler); } this.trigger('modechange'); From 831cadb3c29edca6c18a47a4172061e0e769c6aa Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Mon, 1 Jun 2015 15:44:36 -0400 Subject: [PATCH 4/4] Autoload non-subs and non-captions text tracks This means that chapters, metadata, and descriptions will get loaded by default on init instead of on demand. --- src/js/tracks/text-track.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index b7cb2cc9b9..3746baae8c 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -179,7 +179,7 @@ vjs.TextTrack = function(options) { if (options.src) { tt.loaded_ = true; tt.src_ = options.src; - if (options['default']) { + if (options['default'] || (kind !== 'subtitles' && kind !== 'captions')) { loadTrack(options.src, tt); } } else { @@ -255,7 +255,6 @@ loadTrack = function(src, track) { return vjs.log.error(err); } - track.loaded_ = true; parseCues(responseBody, track); }));