Browse Source

Merge pull request #4946 from Snuffleupagus/issue-3862

Refactor fake worker loading (issue 3862)
Yury Delendik 11 years ago
parent
commit
0f0f0688a1
  1. 49
      src/display/api.js

49
src/display/api.js

@ -707,6 +707,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
pdfDataRangeTransport, progressCallback) { pdfDataRangeTransport, progressCallback) {
this.pdfDataRangeTransport = pdfDataRangeTransport; this.pdfDataRangeTransport = pdfDataRangeTransport;
this.workerInitializedCapability = workerInitializedCapability;
this.workerReadyCapability = workerReadyCapability; this.workerReadyCapability = workerReadyCapability;
this.progressCallback = progressCallback; this.progressCallback = progressCallback;
this.commonObjs = new PDFObjects(); this.commonObjs = new PDFObjects();
@ -745,11 +746,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
this.setupMessageHandler(messageHandler); this.setupMessageHandler(messageHandler);
workerInitializedCapability.resolve(); workerInitializedCapability.resolve();
} else { } else {
globalScope.PDFJS.disableWorker = true; this.setupFakeWorker();
this.loadFakeWorkerFiles().then(function() {
this.setupFakeWorker();
workerInitializedCapability.resolve();
}.bind(this));
} }
}.bind(this)); }.bind(this));
@ -771,11 +768,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
//#endif //#endif
// Either workers are disabled, not supported or have thrown an exception. // Either workers are disabled, not supported or have thrown an exception.
// Thus, we fallback to a faked worker. // Thus, we fallback to a faked worker.
globalScope.PDFJS.disableWorker = true; this.setupFakeWorker();
this.loadFakeWorkerFiles().then(function() {
this.setupFakeWorker();
workerInitializedCapability.resolve();
}.bind(this));
} }
WorkerTransport.prototype = { WorkerTransport.prototype = {
destroy: function WorkerTransport_destroy() { 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) { if (!PDFJS.fakeWorkerFilesLoadedCapability) {
PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability(); PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability();
// In the developer build load worker_loader which in turn loads all the // In the developer build load worker_loader which in turn loads all the
@ -808,25 +803,25 @@ var WorkerTransport = (function WorkerTransportClosure() {
// }); // });
//#endif //#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() { var messageHandler = new MessageHandler('main', fakeWorker);
warn('Setting up fake worker.'); this.setupMessageHandler(messageHandler);
// 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); // If the main thread is our worker, setup the handling for the messages
this.setupMessageHandler(messageHandler); // the main thread sends to it self.
PDFJS.WorkerMessageHandler.setup(messageHandler);
// If the main thread is our worker, setup the handling for the messages this.workerInitializedCapability.resolve();
// the main thread sends to it self. }.bind(this));
PDFJS.WorkerMessageHandler.setup(messageHandler);
}, },
setupMessageHandler: setupMessageHandler:

Loading…
Cancel
Save