Mdale has uploaded a new change for review.
https://gerrit.wikimedia.org/r/67998
Change subject: More accurate timming for captions, progress event fixes
......................................................................
More accurate timming for captions, progress event fixes
* bind to "progress" instead of monitorEvent for more accurate captions timing
* don't rebind events on showThumbnail results in broken click to pause on
replay
* reset buffer indicator on click complete
* removed manual progress binding ( was only useful for old e.loaded && e.total
HTML5 api )
* pass instance id in hide and show control bar ( captions were moving in
diffrent players )
Change-Id: I78360cb4be16c2c5684be590ab23686fa901f12d
---
M MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js
M MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js
M MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js
M MwEmbedModules/TimedText/resources/mw.TimedText.js
4 files changed, 21 insertions(+), 35 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/TimedMediaHandler
refs/changes/98/67998/1
diff --git a/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js
b/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js
index 25500d1..2fbb0b1 100644
--- a/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js
+++ b/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayer.js
@@ -6,7 +6,6 @@
* mediaElement Represents source media elements
* mw.PlayerControlBuilder Handles skinning of the player controls
*/
-
( function( mw, $ ) {"use strict";
/**
* Merge in the default video attributes supported by embedPlayer:
@@ -1038,8 +1037,6 @@
this.paused = true;
this.stopped = true;
- // Make sure the controlBuilder bindings are up-to-date
- this.controlBuilder.addControlBindings();
// Once the thumbnail is shown run the mediaReady
trigger (if not using native controls)
if( !this.useNativePlayerControls() ){
@@ -2242,6 +2239,9 @@
this.updatePlayHead( 0 );
// update the status:
this.controlBuilder.setStatus( this.getTimeRange() );
+ // reset buffer indicator:
+ this.bufferedPercent = 0;
+ this.updateBufferStatus();
},
/**
@@ -2594,8 +2594,6 @@
updateBufferStatus: function() {
// Get the buffer target based for playlist vs clip
var $buffer = this.getInterface().find( '.mw_buffer' );
-
- // mw.log(' set bufferd %:' + this.bufferedPercent );
// Update the buffer progress bar (if available )
if ( this.bufferedPercent != 0 ) {
// mw.log('Update buffer css: ' + (
this.bufferedPercent * 100 ) +
diff --git a/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js
b/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js
index 85d7e94..6ceee4a 100644
--- a/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js
+++ b/MwEmbedModules/EmbedPlayer/resources/mw.EmbedPlayerNative.js
@@ -286,6 +286,9 @@
$( vid ).unbind( eventName +
'.embedPlayerNative').bind( eventName + '.embedPlayerNative', function(){
if( _this._propagateEvents ){
var argArray = $.makeArray( arguments );
+ // always pass the current ref id as
the last argument
+ // helps check against some event
trigger ref issues in jQuery
+ argArray.push( _this.id );
// Check if there is local handler:
if( _this[ '_on' + eventName ] ){
_this[ '_on' + eventName
].apply( _this, argArray);
@@ -1041,23 +1044,6 @@
if( ! this.mediaLoadedFlag ){
$( this ).trigger( 'mediaLoaded' );
this.mediaLoadedFlag = true;
- }
- },
-
- /**
- * Local method for progress event
- * fired as the video is downloaded / buffered
- *
- * Used to update the bufferedPercent
- *
- * Note: this way of updating buffer was only supported in Firefox 3.x
and
- * not supported in Firefox 4.x
- */
- _onprogress: function( event ) {
- var e = event.originalEvent;
- if( e && e.loaded && e.total ) {
- this.bufferedPercent = e.loaded / e.total;
- this.progressEventData = e.loaded;
}
},
diff --git
a/MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js
b/MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js
index 30f0204..b0a8275 100644
--- a/MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js
+++ b/MwEmbedModules/EmbedPlayer/resources/skins/mw.PlayerControlBuilder.js
@@ -971,8 +971,10 @@
embedPlayer.updatePlayheadStatus()
});
- // Update buffer information TODO move to controlBuilder
- $( embedPlayer ).bind( 'progress' + this.bindPostfix,
function(){
+ // Update buffer information
+ $( embedPlayer ).bind( 'progress' + this.bindPostfix, function(
event, jEvent, id){
+ // regain scope
+ var embedPlayer = $( '#' + id )[0];
embedPlayer.updateBufferStatus();
});
@@ -1200,10 +1202,10 @@
}, dblClickTime );
return true;
};
- if (!embedPlayer.addEventListener) {
+ // Add click binding: ( $(embedPlayer).click ) has scope issues
)
+ if ( embedPlayer.attachEvent ) {
embedPlayer.attachEvent("onclick", playerClickCb);
} else{
- // For some reason jquery .bind( 'click' ) is doing
evil things
// Firefox 3.5 requires third argument to
addEventListener
embedPlayer.addEventListener('click', playerClickCb,
false );
}
@@ -1246,7 +1248,7 @@
.fadeOut( animateDuration );
//mw.log('about to trigger hide control bar')
// Allow interface items to update:
- $( this.embedPlayer ).trigger('onHideControlBar', {'bottom' :
15} );
+ $( this.embedPlayer ).trigger('onHideControlBar', [ {'bottom' :
15}, this.embedPlayer.id ] );
},
restoreControlsHover:function(){
@@ -1276,9 +1278,9 @@
}
// Trigger the screen overlay with layout info:
- $( this.embedPlayer ).trigger( 'onShowControlBar', {
+ $( this.embedPlayer ).trigger( 'onShowControlBar', [{
'bottom' : this.getHeight() + 15
- } );
+ }, this.embedPlayer.id ] );
},
/**
diff --git a/MwEmbedModules/TimedText/resources/mw.TimedText.js
b/MwEmbedModules/TimedText/resources/mw.TimedText.js
index aed646c..f4e18ab 100644
--- a/MwEmbedModules/TimedText/resources/mw.TimedText.js
+++ b/MwEmbedModules/TimedText/resources/mw.TimedText.js
@@ -153,7 +153,7 @@
// Check for timed text support:
_this.addInterface();
- $( embedPlayer ).bind( 'monitorEvent' +
this.bindPostFix, function( event, id ) {
+ $( embedPlayer ).bind( 'progress' + this.bindPostFix,
function( event, jEvent, id ) {
// regain scope
_this = $('#' + id)[0].timedText;
// monitor text updates
@@ -215,10 +215,9 @@
});
// Setup display binding
- $( embedPlayer ).bind( 'onShowControlBar'+
this.bindPostFix, function(event, layout ){
- if( event.currentTarget.id != embedPlayer.id ){
- embedPlayer = $('#'
+event.currentTarget.id )[0];
- }
+ $( embedPlayer ).bind( 'onShowControlBar'+
this.bindPostFix, function(event, layout, id ){
+ // update embedPlayer ref:
+ var embedPlayer = $('#' + id )[0];
if (
embedPlayer.controlBuilder.isOverlayControls() ) {
// Move the text track if present
embedPlayer.getInterface().find(
'.track' )
@@ -227,7 +226,8 @@
}
});
- $( embedPlayer ).bind( 'onHideControlBar' +
this.bindPostFix, function(event, layout ){
+ $( embedPlayer ).bind( 'onHideControlBar' +
this.bindPostFix, function(event, layout, id ){
+ var embedPlayer = $('#' + id )[0];
if (
embedPlayer.controlBuilder.isOverlayControls() ) {
// Move the text track down if present
embedPlayer.getInterface().find(
'.track' )
--
To view, visit https://gerrit.wikimedia.org/r/67998
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I78360cb4be16c2c5684be590ab23686fa901f12d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TimedMediaHandler
Gerrit-Branch: master
Gerrit-Owner: Mdale <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits