Refactor fake worker loading (issue 3862)

This commit is contained in:
Jonas Jenwald 2014-06-15 15:52:05 +02:00
parent 13efe84d37
commit 3c78c7b8bc

View File

@ -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: