From 573204ee2d2f1c7d57cf8f29f3ffb9b7ebafc20d Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Thu, 10 Nov 2016 16:51:41 -0500 Subject: [PATCH 1/2] fix(html5): exit early on emulated tracks in html5 addRemoteTextTrack and removeRemoteTextTrack in Html5 tech assumed that they are always called for native text tracks. However, Html5 tech can have emulated text tracks. For those, we just exit early after the super methods are called. --- src/js/tech/html5.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/js/tech/html5.js b/src/js/tech/html5.js index f93489dbde..3fc745c3b2 100644 --- a/src/js/tech/html5.js +++ b/src/js/tech/html5.js @@ -657,6 +657,10 @@ class Html5 extends Tech { addRemoteTextTrack(options, manualCleanup) { const htmlTrackElement = super.addRemoteTextTrack(options, manualCleanup); + if (!this.featuresNativeTextTracks) { + return htmlTrackElement; + } + this.el().appendChild(htmlTrackElement); return htmlTrackElement; @@ -670,6 +674,10 @@ class Html5 extends Tech { removeRemoteTextTrack(track) { super.removeRemoteTextTrack(track); + if (!this.featuresNativeTextTracks) { + return; + } + const tracks = this.$$('track'); let i = tracks.length; From bead49f7099e46ad1be219dc6f9304bd1f35736f Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Fri, 11 Nov 2016 14:25:56 -0500 Subject: [PATCH 2/2] update ifs --- src/js/tech/html5.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/js/tech/html5.js b/src/js/tech/html5.js index 3fc745c3b2..4a8ea8e00d 100644 --- a/src/js/tech/html5.js +++ b/src/js/tech/html5.js @@ -657,12 +657,10 @@ class Html5 extends Tech { addRemoteTextTrack(options, manualCleanup) { const htmlTrackElement = super.addRemoteTextTrack(options, manualCleanup); - if (!this.featuresNativeTextTracks) { - return htmlTrackElement; + if (this.featuresNativeTextTracks) { + this.el().appendChild(htmlTrackElement); } - this.el().appendChild(htmlTrackElement); - return htmlTrackElement; } @@ -674,17 +672,15 @@ class Html5 extends Tech { removeRemoteTextTrack(track) { super.removeRemoteTextTrack(track); - if (!this.featuresNativeTextTracks) { - return; - } - - const tracks = this.$$('track'); + if (this.featuresNativeTextTracks) { + const tracks = this.$$('track'); - let i = tracks.length; + let i = tracks.length; - while (i--) { - if (track === tracks[i] || track === tracks[i].track) { - this.el().removeChild(tracks[i]); + while (i--) { + if (track === tracks[i] || track === tracks[i].track) { + this.el().removeChild(tracks[i]); + } } } }