Makes WorkerMessageHandler non-global.

This commit is contained in:
Yury Delendik 2016-03-02 19:16:38 -06:00
parent bda5e6235e
commit e372f3608b
4 changed files with 26 additions and 22 deletions

View File

@ -994,11 +994,6 @@ function initializeWorker() {
handler.send('ready', null);
}
if (globalScope.PDFJS) {
// TODO properly handle WorkerMessageHandler as a module export at api.js.
globalScope.PDFJS.WorkerMessageHandler = WorkerMessageHandler;
}
// Worker thread (and not node.js)?
if (typeof window === 'undefined' &&
!(typeof module !== 'undefined' && module.require)) {

View File

@ -1215,38 +1215,45 @@ var PDFWorker = (function PDFWorkerClosure() {
error('No PDFJS.workerSrc specified');
}
var fakeWorkerFilesLoadedCapability;
// Loads worker code into main thread.
function setupFakeWorkerGlobal() {
if (!PDFJS.fakeWorkerFilesLoadedCapability) {
PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability();
var WorkerMessageHandler;
if (!fakeWorkerFilesLoadedCapability) {
fakeWorkerFilesLoadedCapability = createPromiseCapability();
// In the developer build load worker_loader which in turn loads all the
// other files and resolves the promise. In production only the
// pdf.worker.js file is needed.
//#if !PRODUCTION
if (typeof amdRequire === 'function') {
amdRequire(['pdfjs/core/network', 'pdfjs/core/worker'], function () {
PDFJS.fakeWorkerFilesLoadedCapability.resolve();
amdRequire(['pdfjs/core/network', 'pdfjs/core/worker'],
function (network, worker) {
WorkerMessageHandler = worker.WorkerMessageHandler;
fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);
});
} else if (typeof require === 'function') {
require('../core/worker.js');
PDFJS.fakeWorkerFilesLoadedCapability.resolve();
var worker = require('../core/worker.js');
WorkerMessageHandler = worker.WorkerMessageHandler;
fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);
} else {
throw new Error('AMD or CommonJS must be used to load fake worker.');
}
//#endif
//#if PRODUCTION && SINGLE_FILE
// PDFJS.fakeWorkerFilesLoadedCapability.resolve();
// WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler;
// fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);
//#endif
//#if PRODUCTION && !SINGLE_FILE
// var loader = fakeWorkerFilesLoader || function (callback) {
// Util.loadScript(getWorkerSrc(), callback);
// Util.loadScript(getWorkerSrc(), function () {
// callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);
// });
// };
// loader(function () {
// PDFJS.fakeWorkerFilesLoadedCapability.resolve();
// });
// loader(fakeWorkerFilesLoadedCapability.resolve);
//#endif
}
return PDFJS.fakeWorkerFilesLoadedCapability.promise;
return fakeWorkerFilesLoadedCapability.promise;
}
function createCDNWrapper(url) {
@ -1385,7 +1392,7 @@ var PDFWorker = (function PDFWorkerClosure() {
globalScope.PDFJS.disableWorker = true;
}
setupFakeWorkerGlobal().then(function () {
setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
if (this.destroyed) {
this._readyCapability.reject(new Error('Worker was destroyed'));
return;
@ -1417,7 +1424,7 @@ var PDFWorker = (function PDFWorkerClosure() {
// If the main thread is our worker, setup the handling for the
// messages -- the main thread sends to it self.
var workerHandler = new MessageHandler(id + '_worker', id, port);
PDFJS.WorkerMessageHandler.setup(workerHandler, port);
WorkerMessageHandler.setup(workerHandler, port);
var messageHandler = new MessageHandler(id, id + '_worker', port);
this._messageHandler = messageHandler;

View File

@ -37,11 +37,11 @@ if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
}
var fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {
require.ensure([], function () {
require('./pdf.worker.js');
callback();
var worker = require('./pdf.worker.js');
callback(worker.WorkerMessageHandler);
});
}) : (typeof requirejs !== 'undefined') ? (function (callback) {
requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
callback();
callback(worker.WorkerMessageHandler);
});
}) : null;

View File

@ -57,5 +57,7 @@
exports.MissingPDFException = pdfjsLibs.pdfjsSharedUtil.MissingPDFException;
exports.UnexpectedResponseException =
pdfjsLibs.pdfjsSharedUtil.UnexpectedResponseException;
//#else
exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler;
//#endif
}));