diff --git a/src/playbacks/html5_video/html5_video.js b/src/playbacks/html5_video/html5_video.js index 7ead0216..1ddcc1a9 100644 --- a/src/playbacks/html5_video/html5_video.js +++ b/src/playbacks/html5_video/html5_video.js @@ -43,6 +43,7 @@ export default class HTML5Video extends Playback { get name() { return 'html5_video' } get supportedVersion() { return { min: VERSION } } get tagName() { return this.isAudioOnly ? 'audio' : 'video' } + get template() { return template(tracksHTML) } get isAudioOnly() { const resourceUrl = this.options.src @@ -230,6 +231,7 @@ export default class HTML5Video extends Playback { } _onLoadedMetadata(e) { + this._ready() this._handleBufferingEvents() this.trigger(Events.PLAYBACK_LOADEDMETADATA, { duration: e.target.duration, data: e }) this._updateSettings() @@ -565,8 +567,7 @@ export default class HTML5Video extends Playback { } _ready() { - if (this._isReadyState) - return + if (this._isReadyState) return this._isReadyState = true this.trigger(Events.PLAYBACK_READY, this.name) @@ -649,24 +650,13 @@ export default class HTML5Video extends Playback { }) } - get template() { return template(tracksHTML) } - render() { - if (this.options.playback.disableContextMenu) { - this.$el.on('contextmenu', () => { - return false - }) - } - - if (this._externalTracks && this._externalTracks.length > 0) { - this.$el.html(this.template({ - tracks: this._externalTracks, - })) - } + this.options.playback.disableContextMenu && this.$el.on('contextmenu', () => { return false }) + this._externalTracks && this._externalTracks.length > 0 && this.$el.html(this.template({ tracks: this._externalTracks })) - this._ready() const style = Styler.getStyleFor(HTML5VideoStyle.toString(), { baseUrl: this.options.baseUrl }) this.$el.append(style[0]) + return this } } diff --git a/src/playbacks/html5_video/html5_video.test.js b/src/playbacks/html5_video/html5_video.test.js index 87883175..12310eac 100644 --- a/src/playbacks/html5_video/html5_video.test.js +++ b/src/playbacks/html5_video/html5_video.test.js @@ -609,4 +609,14 @@ describe('HTML5Video playback', function() { expect(html5Video._updateDvr).toHaveBeenCalledWith(true) }) }) + + describe('_onLoadedMetadata callback', () => { + test('calls _ready method', () => { + const playback = new HTML5Video({ src: '/test/fixtures/SampleVideo_360x240_1mb.mp4' }) + jest.spyOn(playback, '_ready') + playback.el.dispatchEvent(new Event('loadedmetadata')) + + expect(playback._ready).toHaveBeenCalledTimes(1) + }) + }) })