Browse Source

Adding PlayPreview API support to pdf.js/mozilla-central

Yury Delendik 12 years ago
parent
commit
dc12d33f4d
  1. 27
      extensions/firefox/content/PdfJs.jsm

27
extensions/firefox/content/PdfJs.jsm

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

Loading…
Cancel
Save