From 3c78c7b8bce680dae2fed5063e73fa73252b3e8d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 15 Jun 2014 15:52:05 +0200 Subject: [PATCH] Refactor fake worker loading (issue 3862) --- src/display/api.js | 49 +++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index b5e9039f2..8ca1b8e4a 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -640,6 +640,7 @@ var WorkerTransport = (function WorkerTransportClosure() { pdfDataRangeTransport, progressCallback) { this.pdfDataRangeTransport = pdfDataRangeTransport; + this.workerInitializedCapability = workerInitializedCapability; this.workerReadyCapability = workerReadyCapability; this.progressCallback = progressCallback; this.commonObjs = new PDFObjects(); @@ -678,11 +679,7 @@ var WorkerTransport = (function WorkerTransportClosure() { this.setupMessageHandler(messageHandler); workerInitializedCapability.resolve(); } else { - globalScope.PDFJS.disableWorker = true; - this.loadFakeWorkerFiles().then(function() { - this.setupFakeWorker(); - workerInitializedCapability.resolve(); - }.bind(this)); + this.setupFakeWorker(); } }.bind(this)); @@ -704,11 +701,7 @@ var WorkerTransport = (function WorkerTransportClosure() { //#endif // Either workers are disabled, not supported or have thrown an exception. // Thus, we fallback to a faked worker. - globalScope.PDFJS.disableWorker = true; - this.loadFakeWorkerFiles().then(function() { - this.setupFakeWorker(); - workerInitializedCapability.resolve(); - }.bind(this)); + this.setupFakeWorker(); } WorkerTransport.prototype = { destroy: function WorkerTransport_destroy() { @@ -723,7 +716,9 @@ var WorkerTransport = (function WorkerTransportClosure() { }); }, - loadFakeWorkerFiles: function WorkerTransport_loadFakeWorkerFiles() { + setupFakeWorker: function WorkerTransport_setupFakeWorker() { + globalScope.PDFJS.disableWorker = true; + if (!PDFJS.fakeWorkerFilesLoadedCapability) { PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability(); // In the developer build load worker_loader which in turn loads all the @@ -741,25 +736,25 @@ var WorkerTransport = (function WorkerTransportClosure() { // }); //#endif } - return PDFJS.fakeWorkerFilesLoadedCapability.promise; - }, + PDFJS.fakeWorkerFilesLoadedCapability.promise.then(function () { + warn('Setting up fake worker.'); + // If we don't use a worker, just post/sendMessage to the main thread. + var fakeWorker = { + postMessage: function WorkerTransport_postMessage(obj) { + fakeWorker.onmessage({data: obj}); + }, + terminate: function WorkerTransport_terminate() {} + }; - setupFakeWorker: function WorkerTransport_setupFakeWorker() { - warn('Setting up fake worker.'); - // If we don't use a worker, just post/sendMessage to the main thread. - var fakeWorker = { - postMessage: function WorkerTransport_postMessage(obj) { - fakeWorker.onmessage({data: obj}); - }, - terminate: function WorkerTransport_terminate() {} - }; + var messageHandler = new MessageHandler('main', fakeWorker); + this.setupMessageHandler(messageHandler); - var messageHandler = new MessageHandler('main', fakeWorker); - this.setupMessageHandler(messageHandler); + // If the main thread is our worker, setup the handling for the messages + // the main thread sends to it self. + PDFJS.WorkerMessageHandler.setup(messageHandler); - // If the main thread is our worker, setup the handling for the messages - // the main thread sends to it self. - PDFJS.WorkerMessageHandler.setup(messageHandler); + this.workerInitializedCapability.resolve(); + }.bind(this)); }, setupMessageHandler: