diff --git a/src/core/worker.js b/src/core/worker.js index 1abe28de0..eeea840c2 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -438,7 +438,7 @@ function setPDFNetworkStreamClass(cls) { } var WorkerMessageHandler = { - setup: function wphSetup(handler, port) { + setup(handler, port) { var testMessageProcessed = false; handler.on('test', function wphSetupTest(data) { if (testMessageProcessed) { @@ -481,7 +481,7 @@ var WorkerMessageHandler = { return WorkerMessageHandler.createDocumentHandler(data, port); }); }, - createDocumentHandler: function wphCreateDocumentHandler(docParams, port) { + createDocumentHandler(docParams, port) { // This context is actually holds references on pdfManager and handler, // until the latter is destroyed. var pdfManager; @@ -956,18 +956,23 @@ var WorkerMessageHandler = { docParams = null; // we don't need docParams anymore -- saving memory. }); return workerHandlerName; - } + }, + initializeFromPort(port) { + var handler = new MessageHandler('worker', 'main', port); + WorkerMessageHandler.setup(handler, port); + handler.send('ready', null); + }, }; -function initializeWorker() { - var handler = new MessageHandler('worker', 'main', self); - WorkerMessageHandler.setup(handler, self); - handler.send('ready', null); +function isMessagePort(maybePort) { + return typeof maybePort.postMessage === 'function' && + ('onmessage' in maybePort); } // Worker thread (and not node.js)? -if (typeof window === 'undefined' && !isNodeJS()) { - initializeWorker(); +if (typeof window === 'undefined' && !isNodeJS() && + typeof self !== 'undefined' && isMessagePort(self)) { + WorkerMessageHandler.initializeFromPort(self); } exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass;