From a0f46dae49ade1b3a91f19505698dd8e5f215704 Mon Sep 17 00:00:00 2001 From: Valera Rozuvan Date: Fri, 15 Feb 2013 18:10:14 +0200 Subject: [PATCH 1/2] Fixed bug that prevented Firefox from playing HTML5 video content. --- .../xmodule/js/src/videoalpha/display/html5_video.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js b/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js index acdc03932c..c8283b6086 100644 --- a/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js +++ b/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js @@ -221,8 +221,19 @@ this.HTML5Video = (function () { // and end playing at the specified end time. After it was paused, or when a seek operation happeded, // the starting time and ending time will reset to the beginning and the end of the video respectively. this.video.addEventListener('canplay', function () { + // Because firefox triggers 'canplay' event every time when 'currentTime' property + // changes, we must make sure that this block of code runs only once. Otherwise, + // this will be an endless loop ('currentTime' property is changed below). + // + // Chrome is immune to this behavior. + if (_this.playerState !== HTML5Video.PlayerState.UNSTARTED) { + return; + } + _this.playerState = HTML5Video.PlayerState.PAUSED; + console.log('canplay listener: _this.playerState = ' + _this.playerState + '.'); + if (_this.start > _this.video.duration) { _this.start = 0; } From c7679ea624979135f9b7182df6e3c54b6fca8b8c Mon Sep 17 00:00:00 2001 From: Valera Rozuvan Date: Fri, 15 Feb 2013 18:12:53 +0200 Subject: [PATCH 2/2] Removed debugging comments. --- .../xmodule/xmodule/js/src/videoalpha/display/html5_video.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js b/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js index c8283b6086..c3cc462ab8 100644 --- a/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js +++ b/common/lib/xmodule/xmodule/js/src/videoalpha/display/html5_video.js @@ -232,8 +232,6 @@ this.HTML5Video = (function () { _this.playerState = HTML5Video.PlayerState.PAUSED; - console.log('canplay listener: _this.playerState = ' + _this.playerState + '.'); - if (_this.start > _this.video.duration) { _this.start = 0; }