1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/webvtt/WebVTTParserWrapper.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,72 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 1.9 +Components.utils.import("resource://gre/modules/vtt.jsm"); 1.10 + 1.11 +var Ci = Components.interfaces; 1.12 + 1.13 +var WEBVTTPARSERWRAPPER_CID = "{acf6e493-0092-4b26-b172-241e375c57ab}"; 1.14 +var WEBVTTPARSERWRAPPER_CONTRACTID = "@mozilla.org/webvttParserWrapper;1"; 1.15 + 1.16 +function WebVTTParserWrapper() 1.17 +{ 1.18 + // Nothing 1.19 +} 1.20 + 1.21 +WebVTTParserWrapper.prototype = 1.22 +{ 1.23 + loadParser: function(window) 1.24 + { 1.25 + this.parser = new WebVTT.Parser(window, new TextDecoder("utf8")); 1.26 + }, 1.27 + 1.28 + parse: function(data) 1.29 + { 1.30 + // We can safely translate the string data to a Uint8Array as we are 1.31 + // guaranteed character codes only from \u0000 => \u00ff 1.32 + var buffer = new Uint8Array(data.length); 1.33 + for (var i = 0; i < data.length; i++) { 1.34 + buffer[i] = data.charCodeAt(i); 1.35 + } 1.36 + 1.37 + this.parser.parse(buffer); 1.38 + }, 1.39 + 1.40 + flush: function() 1.41 + { 1.42 + this.parser.flush(); 1.43 + }, 1.44 + 1.45 + watch: function(callback) 1.46 + { 1.47 + this.parser.oncue = callback.onCue; 1.48 + this.parser.onregion = callback.onRegion; 1.49 + this.parser.onparsingerror = function(e) { 1.50 + // Passing the just the error code back is enough for our needs. 1.51 + callback.onParsingError(("code" in e) ? e.code : -1); 1.52 + }; 1.53 + }, 1.54 + 1.55 + convertCueToDOMTree: function(window, cue) 1.56 + { 1.57 + return WebVTT.convertCueToDOMTree(window, cue.text); 1.58 + }, 1.59 + 1.60 + processCues: function(window, cues, overlay) 1.61 + { 1.62 + WebVTT.processCues(window, cues, overlay); 1.63 + }, 1.64 + 1.65 + classDescription: "Wrapper for the JS WebVTT implementation (vtt.js)", 1.66 + classID: Components.ID(WEBVTTPARSERWRAPPER_CID), 1.67 + QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebVTTParserWrapper]), 1.68 + classInfo: XPCOMUtils.generateCI({ 1.69 + classID: WEBVTTPARSERWRAPPER_CID, 1.70 + contractID: WEBVTTPARSERWRAPPER_CONTRACTID, 1.71 + interfaces: [Ci.nsIWebVTTParserWrapper] 1.72 + }) 1.73 +}; 1.74 + 1.75 +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([WebVTTParserWrapper]);