diff --git a/common/lib/xmodule/xmodule/js/src/video/02_html5_hls_video.js b/common/lib/xmodule/xmodule/js/src/video/02_html5_hls_video.js index f2124c0643..4df4794043 100644 --- a/common/lib/xmodule/xmodule/js/src/video/02_html5_hls_video.js +++ b/common/lib/xmodule/xmodule/js/src/video/02_html5_hls_video.js @@ -20,40 +20,23 @@ function Player(el, config) { var self = this; - this.config = config; - // do common initialization independent of player type this.init(el, config); - _.bindAll(this, 'playVideo', 'onReady'); - // If we have only HLS sources and browser doesn't support HLS then show error message. if (config.HLSOnlySources && !config.canPlayHLS) { this.showErrorMessage(null, '.video-hls-error'); return; } - this.config.state.el.on('initialize', _.once(function() { - console.log('[HLS Video]: HLS Player initialized'); - self.showPlayButton(); - })); - // Safari has native support to play HLS videos if (config.browserIsSafari) { this.videoEl.attr('src', config.videoSources[0]); } else { - this.hls = new HLS({autoStartLoad: false}); + this.hls = new HLS(); this.hls.loadSource(config.videoSources[0]); this.hls.attachMedia(this.video); - this.showLoadingOnce = _.once(function() { - HTML5Video.Player.prototype.updatePlayerLoadingState.apply(self, ['show']); - }); - - this.hideLoadingOnce = _.once(function() { - HTML5Video.Player.prototype.updatePlayerLoadingState.apply(self, ['hide']); - }); - this.hls.on(HLS.Events.ERROR, this.onError.bind(this)); this.hls.on(HLS.Events.MANIFEST_PARSED, function(event, data) { @@ -66,7 +49,6 @@ }; }) ); - self.config.onReadyHLS(); }); this.hls.on(HLS.Events.LEVEL_SWITCHED, function(event, data) { var level = self.hls.levels[data.level]; @@ -77,7 +59,6 @@ resolution: level.width + 'x' + level.height } ); - self.hideLoadingOnce(); }); } } @@ -85,16 +66,6 @@ Player.prototype = Object.create(HTML5Video.Player.prototype); Player.prototype.constructor = Player; - Player.prototype.playVideo = function() { - this.hls.startLoad(); - this.video.play(); - this.showLoadingOnce(); - }; - - Player.prototype.onReady = function() { - this.config.events.onReady(null); - }; - /** * Handler for HLS video errors. This only takes care of fatal erros, non-fatal errors * are automatically handled by hls.js diff --git a/common/lib/xmodule/xmodule/js/src/video/02_html5_video.js b/common/lib/xmodule/xmodule/js/src/video/02_html5_video.js index f24a08b5fb..367939e21a 100644 --- a/common/lib/xmodule/xmodule/js/src/video/02_html5_video.js +++ b/common/lib/xmodule/xmodule/js/src/video/02_html5_video.js @@ -95,38 +95,6 @@ function(_) { this.videoEl.on('error', this.onError.bind(this)); } - Player.prototype.showPlayButton = function() { - this.videoOverlayEl.removeClass('is-hidden'); - }; - - Player.prototype.hidePlayButton = function() { - this.videoOverlayEl.addClass('is-hidden'); - }; - - Player.prototype.showLoading = function() { - this.el - .removeClass('is-initialized') - .find('.spinner') - .removeAttr('tabindex') - .attr({'aria-hidden': 'false'}); - }; - - Player.prototype.hideLoading = function() { - this.el - .addClass('is-initialized') - .find('.spinner') - .attr({'aria-hidden': 'false', 'tabindex': -1}); - }; - - Player.prototype.updatePlayerLoadingState = function(state) { - if (state === 'show') { - this.hidePlayButton(); - this.showLoading(); - } else if (state === 'hide') { - this.hideLoading(); - } - }; - Player.prototype.callStateChangeCallback = function() { if ($.isFunction(this.config.events.onStateChange)) { this.config.events.onStateChange({ @@ -243,15 +211,11 @@ function(_) { this.videoEl.remove(); }; - Player.prototype.onReady = function() { - this.config.events.onReady(null); - this.showPlayButton(); - }; - Player.prototype.onLoadedMetadata = function() { this.playerState = HTML5Video.PlayerState.PAUSED; if ($.isFunction(this.config.events.onReady)) { - this.onReady(); + this.config.events.onReady(null); + this.videoOverlayEl.removeClass('is-hidden'); } }; @@ -270,7 +234,7 @@ function(_) { Player.prototype.onPause = function() { this.playerState = HTML5Video.PlayerState.PAUSED; this.callStateChangeCallback(); - this.showPlayButton(); + this.videoOverlayEl.removeClass('is-hidden'); }; Player.prototype.onEnded = function() { diff --git a/common/lib/xmodule/xmodule/js/src/video/03_video_player.js b/common/lib/xmodule/xmodule/js/src/video/03_video_player.js index 44b54d82f8..fee8806aa9 100644 --- a/common/lib/xmodule/xmodule/js/src/video/03_video_player.js +++ b/common/lib/xmodule/xmodule/js/src/video/03_video_player.js @@ -179,8 +179,6 @@ function(HTML5Video, HTML5HLSVideo, Resizer, HLS, _, Time) { state.videoPlayer.player = new HTML5HLSVideo.Player( state.el, _.extend({}, commonPlayerConfig, { - state: state, - onReadyHLS: onReadyHLS, videoSources: state.HLSVideoSources, canPlayHLS: state.canPlayHLS, HLSOnlySources: state.HLSOnlySources @@ -561,10 +559,6 @@ function(HTML5Video, HTML5HLSVideo, Resizer, HLS, _, Time) { this.el.trigger('qualitychange', arguments); } - function onReadyHLS() { - dfd.resolve(); - } - function onReady() { var _this = this, availablePlaybackRates, baseSpeedSubs, diff --git a/common/test/acceptance/tests/video/test_video_module.py b/common/test/acceptance/tests/video/test_video_module.py index bd1a9f5a5b..a9350804f8 100644 --- a/common/test/acceptance/tests/video/test_video_module.py +++ b/common/test/acceptance/tests/video/test_video_module.py @@ -1142,7 +1142,7 @@ class HLSVideoTest(VideoBaseTest): self.navigate_to_video() self.video.click_player_button('play') - self.assertIn(self.video.state, ['buffering', 'playing']) + self.assertEqual(self.video.state, 'playing') self.video.click_player_button('pause') self.assertEqual(self.video.state, 'pause') @@ -1231,7 +1231,6 @@ class HLSVideoTest(VideoBaseTest): Given the course has a Video component with "HLS" video only And I have defined a transcript for the video Then I see the correct text in the captions for transcript - Then I play, pause and seek to 0:00 Then I click on a caption line And video position should be updated accordingly Then I change video position @@ -1244,12 +1243,6 @@ class HLSVideoTest(VideoBaseTest): self.assertIn("Hi, edX welcomes you0.", self.video.captions_text) - # This is required to load the video - self.video.click_player_button('play') - # Below 2 steps are required to test the caption line click scenario - self.video.click_player_button('pause') - self.video.seek('0:00') - for line_no in range(5): self.video.click_transcript_line(line_no=line_no) self.video.wait_for_position('0:0{}'.format(line_no))