summaryrefslogtreecommitdiff
path: root/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js')
-rw-r--r--extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js
new file mode 100644
index 00000000..94ef9708
--- /dev/null
+++ b/extensions/TimedMediaHandler/MwEmbedModules/EmbedPlayer/resources/mw.MediaPlayer.js
@@ -0,0 +1,85 @@
+/**
+ * mediaPlayer represents a media player plugin.
+ *
+ * @param {String}
+ * id id used for the plugin.
+ * @param {Array}
+ * supportedTypes an array of supported MIME types.
+ * @param {String}
+ * library external script containing the plugin interface code.
+ * @constructor
+ */
+( function( mw, $ ) { "use strict";
+
+mw.MediaPlayer = function( id, supportedTypes, library )
+{
+ this.id = id;
+ this.supportedTypes = supportedTypes;
+ this.library = library;
+ this.loaded = false;
+ this.loading_callbacks = new Array();
+ return this;
+};
+mw.MediaPlayer.prototype = {
+ // Id of the mediaPlayer
+ id:null,
+
+ // Mime types supported by this player
+ supportedTypes:null,
+
+ // Player library ie: native, vlc etc.
+ library:null,
+
+ // Flag stores the mediaPlayer load state
+ loaded:false,
+
+ /**
+ * Checks support for a given MIME type
+ *
+ * @param {String}
+ * type Mime type to check against supportedTypes
+ * @return {Boolean} true if mime type is supported false if mime type is
+ * unsupported
+ */
+ supportsMIMEType: function( type ) {
+ for ( var i = 0; i < this.supportedTypes.length; i++ ) {
+ if ( this.supportedTypes[i] == type )
+ return true;
+ }
+ return false;
+ },
+
+ /**
+ * Get the "name" of the player from a predictable msg key
+ */
+ getName: function() {
+ // Give grep a chance to find the usages:
+ // mwe-embedplayer-ogg-player-vlc-player, mwe-embedplayer-ogg-player-oggNative, mwe-embedplayer-ogg-player-mp3Native,
+ // mwe-embedplayer-ogg-player-aacNative, mwe-embedplayer-ogg-player-h264Native, mwe-embedplayer-ogg-player-webmNative,
+ // mwe-embedplayer-ogg-player-oggPlugin, mwe-embedplayer-ogg-player-quicktime-mozilla,
+ // mwe-embedplayer-ogg-player-quicktime-activex, mwe-embedplayer-ogg-player-cortado,
+ // mwe-embedplayer-ogg-player-flowplayer, mwe-embedplayer-ogg-player-kplayer, mwe-embedplayer-ogg-player-selected,
+ // mwe-embedplayer-ogg-player-omtkplayer
+ return mw.msg( 'mwe-embedplayer-ogg-player-' + this.id );
+ },
+
+ /**
+ * Loads the player library & player skin config ( if needed ) and then
+ * calls the callback.
+ *
+ * @param {Function}
+ * callback Function to be called once player library is loaded.
+ */
+ load: function( callback ) {
+ // Load player library ( upper case the first letter of the library )
+ mw.load( [
+ 'mw.EmbedPlayer' + this.library.substr(0,1).toUpperCase() + this.library.substr(1)
+ ], function() {
+ if( callback ){
+ callback();
+ }
+ } );
+ }
+};
+
+} )( mediaWiki, jQuery );