From b0956a5d91946ee75729dbd8cedad3b86d9cfbc9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 17 Feb 2018 15:33:57 +0100 Subject: [PATCH] Refactor how the default viewer handles the worker options, by making use of `AppOptions` instead of the global `PDFJS` object --- web/app.js | 22 ++++++++++++++-------- web/app_options.js | 23 +++++++++++++++++++++++ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/web/app.js b/web/app.js index b02cf0c3a..05a3f5736 100644 --- a/web/app.js +++ b/web/app.js @@ -51,13 +51,8 @@ const DEFAULT_SCALE_DELTA = 1.1; const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; function configure(PDFJS) { - if (typeof PDFJSDev !== 'undefined' && - PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC || CHROME')) { - GlobalWorkerOptions.workerSrc = '../build/pdf.worker.js'; - } if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) { PDFJS.cMapUrl = '../external/bcmaps/'; - GlobalWorkerOptions.workerSrc = '../src/worker_loader.js'; } else { PDFJS.cMapUrl = '../web/cmaps/'; } @@ -299,7 +294,7 @@ let PDFViewerApplication = { hashParams['useonlycsszoom'] === 'true'); } if ('verbosity' in hashParams) { - PDFJS.verbosity = hashParams['verbosity'] | 0; + AppOptions.set('verbosity', hashParams['verbosity'] | 0); } if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) && hashParams['disablebcmaps'] === 'true') { @@ -711,6 +706,11 @@ let PDFViewerApplication = { return this.open(file, args); }); } + // Set the necessary global worker parameters, using the available options. + const workerParameters = AppOptions.getAll('worker'); + for (let key in workerParameters) { + GlobalWorkerOptions[key] = workerParameters[key]; + } let parameters = Object.create(null); if (typeof file === 'string') { // URL @@ -728,8 +728,11 @@ let PDFViewerApplication = { PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) { parameters.docBaseUrl = this.baseUrl; } - // TODO: Remove this once all options are moved from the `PDFJS` object. - parameters.verbosity = PDFJS.verbosity; + // Set the necessary API parameters, using the available options. + const apiParameters = AppOptions.getAll('api'); + for (let key in apiParameters) { + parameters[key] = apiParameters[key]; + } if (args) { for (let prop in args) { @@ -1515,6 +1518,9 @@ if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) { function loadFakeWorker() { return new Promise(function(resolve, reject) { + if (!GlobalWorkerOptions.workerSrc) { + GlobalWorkerOptions.workerSrc = AppOptions.get('workerSrc'); + } if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) { if (typeof SystemJS === 'object') { SystemJS.import('pdfjs/core/worker').then((worker) => { diff --git a/web/app_options.js b/web/app_options.js index 49a214850..a2e53b7f0 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -127,6 +127,29 @@ const defaultOptions = { value: false, kind: OptionKind.VIEWER, }, + + postMessageTransfers: { + /** @type {boolean} */ + value: true, + kind: OptionKind.API, + }, + verbosity: { + /** @type {number} */ + value: 1, + kind: OptionKind.API, + }, + + workerPort: { + /** @type {Object} */ + value: null, + kind: OptionKind.WORKER, + }, + workerSrc: { + /** @type {string} */ + value: (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION') ? + '../src/worker_loader.js' : '../build/pdf.worker.js'), + kind: OptionKind.WORKER, + }, }; const userOptions = Object.create(null);