From b69abf11115ffa67798d4cd6805465367f5bd1fa Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 17 Feb 2018 22:22:10 +0100 Subject: [PATCH] Move the `disableRange` option from the global `PDFJS` object and into `getDocument` instead --- src/display/api.js | 10 +++++++++- src/display/dom_utils.js | 2 -- src/display/global.js | 9 --------- test/driver.js | 2 +- web/app.js | 6 +++--- web/app_options.js | 6 ++++++ 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index d184717d3..bd36c6efe 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -26,6 +26,7 @@ import { RenderingCancelledException, StatTimer } from './dom_utils'; import { FontFaceObject, FontLoader } from './font_loader'; +import { apiCompatibilityParams } from './api_compatibility'; import { CanvasGraphics } from './canvas'; import globalScope from '../shared/global_scope'; import { GlobalWorkerOptions } from './worker_options'; @@ -164,6 +165,10 @@ function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { * converted to OpenType fonts and loaded via font face rules. If disabled, * fonts will be rendered using a built-in font renderer that constructs the * glyphs with primitive path commands. The default value is `false`. + * @property {boolean} disableRange - (optional) Disable range request loading + * of PDF files. When enabled, and if the server supports partial content + * requests, then the PDF will be fetched in chunks. + * The default value is `false`. * @property {boolean} disableAutoFetch - (optional) Disable pre-fetching of PDF * file data. When range requests are enabled PDF.js will automatically keep * fetching more data even if it isn't needed to display the current page. @@ -272,6 +277,9 @@ function getDocument(src) { params.disableFontFace = false; } + if (typeof params.disableRange !== 'boolean') { + params.disableRange = apiCompatibilityParams.disableRange || false; + } if (typeof params.disableAutoFetch !== 'boolean') { params.disableAutoFetch = false; } @@ -342,7 +350,6 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { let apiVersion = typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : null; - source.disableRange = getDefaultSetting('disableRange'); source.disableStream = getDefaultSetting('disableStream'); if (pdfDataRangeTransport) { source.length = pdfDataRangeTransport.length; @@ -2133,6 +2140,7 @@ var WorkerTransport = (function WorkerTransportClosure() { get loadingParams() { let params = this._params; return shadow(this, 'loadingParams', { + disableRange: params.disableRange, disableAutoFetch: params.disableAutoFetch, }); }, diff --git a/src/display/dom_utils.js b/src/display/dom_utils.js index fa5b96be7..b364e7291 100644 --- a/src/display/dom_utils.js +++ b/src/display/dom_utils.js @@ -338,8 +338,6 @@ function getDefaultSetting(id) { return globalSettings ? globalSettings.pdfBug : false; case 'disableStream': return globalSettings ? globalSettings.disableStream : false; - case 'disableRange': - return globalSettings ? globalSettings.disableRange : false; case 'disableCreateObjectURL': return globalSettings ? globalSettings.disableCreateObjectURL : false; default: diff --git a/src/display/global.js b/src/display/global.js index d9cd5ae90..296955bdf 100644 --- a/src/display/global.js +++ b/src/display/global.js @@ -65,15 +65,6 @@ PDFJS.Util = Util; PDFJS.PageViewport = PageViewport; PDFJS.createPromiseCapability = createPromiseCapability; -/** - * Disable range request loading of PDF files. When enabled and if the server - * supports partial content requests then the PDF will be fetched in chunks. - * Enabled (false) by default. - * @var {boolean} - */ -PDFJS.disableRange = (PDFJS.disableRange === undefined ? - false : PDFJS.disableRange); - /** * Disable streaming of PDF file data. By default PDF.js attempts to load PDF * in chunks. This default behavior can be disabled. diff --git a/test/driver.js b/test/driver.js index bcbda8308..39bec1927 100644 --- a/test/driver.js +++ b/test/driver.js @@ -359,7 +359,6 @@ var Driver = (function DriverClosure() { // eslint-disable-line no-unused-vars this._log('Loading file "' + task.file + '"\n'); let absoluteUrl = new URL(task.file, window.location).href; - PDFJS.disableRange = task.disableRange; try { PDFJS.getDocument({ url: absoluteUrl, @@ -367,6 +366,7 @@ var Driver = (function DriverClosure() { // eslint-disable-line no-unused-vars nativeImageDecoderSupport: task.nativeImageDecoderSupport, cMapUrl: CMAP_URL, cMapPacked: CMAP_PACKED, + disableRange: task.disableRange, disableAutoFetch: !task.enableAutoFetch, }).then((doc) => { task.pdfDoc = doc; diff --git a/web/app.js b/web/app.js index abeb7cc95..e164e9518 100644 --- a/web/app.js +++ b/web/app.js @@ -195,10 +195,10 @@ let PDFViewerApplication = { AppOptions.set('textLayerMode', value); }), preferences.get('disableRange').then(function resolved(value) { - if (PDFJS.disableRange === true) { + if (AppOptions.get('disableRange') === true) { return; } - PDFJS.disableRange = value; + AppOptions.set('disableRange', value); }), preferences.get('disableStream').then(function resolved(value) { if (PDFJS.disableStream === true) { @@ -260,7 +260,7 @@ let PDFViewerApplication = { waitOn.push(loadFakeWorker()); } if ('disablerange' in hashParams) { - PDFJS.disableRange = (hashParams['disablerange'] === 'true'); + AppOptions.set('disableRange', hashParams['disablerange'] === 'true'); } if ('disablestream' in hashParams) { PDFJS.disableStream = (hashParams['disablestream'] === 'true'); diff --git a/web/app_options.js b/web/app_options.js index e0f90cdbe..b00a8b114 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -13,6 +13,7 @@ * limitations under the License. */ +import { apiCompatibilityParams } from 'pdfjs-lib'; import { viewerCompatibilityParams } from './viewer_compatibility'; const OptionKind = { @@ -149,6 +150,11 @@ const defaultOptions = { value: false, kind: OptionKind.API, }, + disableRange: { + /** @type {boolean} */ + value: apiCompatibilityParams.disableRange || false, + kind: OptionKind.API, + }, isEvalSupported: { /** @type {boolean} */ value: true,