Merge pull request #2962 from yurydelendik/embed-mc

Adds PlayPreview API support to pdf.js/mozilla-central
This commit is contained in:
Brendan Dahl 2013-03-19 10:22:36 -07:00
commit 36a7b8a224

View File

@ -33,11 +33,15 @@ const PDF_CONTENT_TYPE = 'application/pdf';
Cu.import('resource://gre/modules/XPCOMUtils.jsm');
Cu.import('resource://gre/modules/Services.jsm');
Cu.import('resource://pdf.js.components/PdfStreamConverter.js');
Cu.import('resource://pdf.js.components/PdfRedirector.js');
let Svc = {};
XPCOMUtils.defineLazyServiceGetter(Svc, 'mime',
'@mozilla.org/mime;1',
'nsIMIMEService');
XPCOMUtils.defineLazyServiceGetter(Svc, 'pluginHost',
'@mozilla.org/plugin/host;1',
'nsIPluginHost');
function getBoolPref(aPref, aDefaultValue) {
try {
@ -55,8 +59,10 @@ function getIntPref(aPref, aDefaultValue) {
}
}
// Register/unregister a constructor as a component.
let Factory = {
// Factory that registers/unregisters a constructor as a component.
function Factory() {}
Factory.prototype = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory]),
_targetConstructor: null,
@ -193,7 +199,14 @@ let PdfJs = {
if (this._registered)
return;
Factory.register(PdfStreamConverter);
this._pdfStreamConverterFactory = new Factory();
this._pdfStreamConverterFactory.register(PdfStreamConverter);
this._pdfRedirectorFactory = new Factory();
this._pdfRedirectorFactory.register(PdfRedirector);
Svc.pluginHost.registerPlayPreviewMimeType('application/pdf', true,
'data:application/x-moz-playpreview-pdfjs;,');
this._registered = true;
},
@ -201,7 +214,13 @@ let PdfJs = {
if (!this._registered)
return;
Factory.unregister();
this._pdfStreamConverterFactory.unregister();
delete this._pdfStreamConverterFactory;
this._pdfRedirectorFactory.unregister;
delete this._pdfRedirectorFactory;
Svc.pluginHost.unregisterPlayPreviewMimeType('application/pdf');
this._registered = false;
}
};