Merge pull request #4946 from Snuffleupagus/issue-3862

Refactor fake worker loading (issue 3862)
This commit is contained in:
Yury Delendik 2014-06-17 13:27:01 -05:00
commit 0f0f0688a1

View File

@ -707,6 +707,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
pdfDataRangeTransport, progressCallback) {
this.pdfDataRangeTransport = pdfDataRangeTransport;
this.workerInitializedCapability = workerInitializedCapability;
this.workerReadyCapability = workerReadyCapability;
this.progressCallback = progressCallback;
this.commonObjs = new PDFObjects();
@ -745,11 +746,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));
@ -771,11 +768,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() {
@ -790,7 +783,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
@ -808,25 +803,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: