From 68b037ffb0177231f2f82238b5274fac97d9f3ec Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Wed, 28 May 2014 10:21:58 -0500 Subject: [PATCH] Add preprocessor directives for the extension; and refactor FirefoxCom callback --- extensions/firefox/content/PdfStreamConverter.jsm | 11 +++++++++-- web/firefoxcom.js | 9 ++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/extensions/firefox/content/PdfStreamConverter.jsm b/extensions/firefox/content/PdfStreamConverter.jsm index f36ed5244..f4a45a26f 100644 --- a/extensions/firefox/content/PdfStreamConverter.jsm +++ b/extensions/firefox/content/PdfStreamConverter.jsm @@ -161,15 +161,22 @@ function getLocalizedString(strings, id, property) { } function makeContentReadable(obj, window) { +//#if MOZCENTRAL + return Cu.cloneInto(obj, window); +//#else if (Cu.cloneInto) { return Cu.cloneInto(obj, window); } + if (typeof obj !== 'object' || obj === null) { + return obj; + } var expose = {}; for (let k in obj) { expose[k] = "r"; } obj.__exposedProps__ = expose; return obj; +//#endif } // PDF data storage @@ -698,7 +705,7 @@ var StandardChromeActions = (function StandardChromeActionsClosure() { return StandardChromeActions; })(); -// Event listener to trigger chrome privedged code. +// Event listener to trigger chrome privileged code. function RequestListener(actions) { this.actions = actions; } @@ -719,7 +726,7 @@ RequestListener.prototype.receive = function(event) { event.detail.response = response; } else { var response; - if (!event.detail.callback) { + if (!event.detail.responseExpected) { doc.documentElement.removeChild(message); response = null; } else { diff --git a/web/firefoxcom.js b/web/firefoxcom.js index 4a5489354..8a775ac75 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -64,9 +64,12 @@ var FirefoxCom = (function FirefoxComClosure() { document.documentElement.appendChild(request); var sender = document.createEvent('CustomEvent'); - sender.initCustomEvent('pdf.js.message', true, false, - {action: action, data: data, sync: false, - callback: callback}); + sender.initCustomEvent('pdf.js.message', true, false, { + action: action, + data: data, + sync: false, + responseExpected: !!callback + }); return request.dispatchEvent(sender); } };