From 6d672c4ba64720ffe8636a9b2975bd1058faa1c5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 13 Mar 2017 17:35:33 +0100 Subject: [PATCH] [api-minor] Add a `pdfjsNext` parameter, and `PDFJS_NEXT` build flag, to allow backwards incompatible API changes --- gulpfile.js | 9 +++++---- src/display/api.js | 2 +- src/display/dom_utils.js | 2 ++ src/display/global.js | 7 +++++++ test/driver.js | 2 ++ test/unit/jasmine-boot.js | 2 ++ web/app.js | 1 + 7 files changed, 20 insertions(+), 5 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index c40378052..97f5236f3 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -67,7 +67,8 @@ var DEFINES = { CHROME: false, MINIFIED: false, SINGLE_FILE: false, - COMPONENTS: false + COMPONENTS: false, + PDFJS_NEXT: false, }; function createStringSource(filename, content) { @@ -669,7 +670,7 @@ gulp.task('minified', ['minified-pre'], function (done) { gulp.task('firefox-pre', ['buildnumber', 'locale'], function () { console.log(); console.log('### Building Firefox extension'); - var defines = builder.merge(DEFINES, {FIREFOX: true}); + var defines = builder.merge(DEFINES, { FIREFOX: true, PDFJS_NEXT: true, }); var FIREFOX_BUILD_CONTENT_DIR = FIREFOX_BUILD_DIR + '/content/', FIREFOX_EXTENSION_DIR = 'extensions/firefox/', @@ -780,7 +781,7 @@ gulp.task('firefox', ['firefox-pre'], function (done) { gulp.task('mozcentral-pre', ['buildnumber', 'locale'], function () { console.log(); console.log('### Building mozilla-central extension'); - var defines = builder.merge(DEFINES, {MOZCENTRAL: true}); + var defines = builder.merge(DEFINES, { MOZCENTRAL: true, PDFJS_NEXT: true, }); var MOZCENTRAL_DIR = BUILD_DIR + 'mozcentral/', MOZCENTRAL_EXTENSION_DIR = MOZCENTRAL_DIR + 'browser/extensions/pdfjs/', @@ -851,7 +852,7 @@ gulp.task('mozcentral', ['mozcentral-pre']); gulp.task('chromium-pre', ['buildnumber', 'locale'], function () { console.log(); console.log('### Building Chromium extension'); - var defines = builder.merge(DEFINES, {CHROME: true}); + var defines = builder.merge(DEFINES, { CHROME: true, PDFJS_NEXT: true, }); var CHROME_BUILD_DIR = BUILD_DIR + '/chromium/', CHROME_BUILD_CONTENT_DIR = CHROME_BUILD_DIR + '/content/'; diff --git a/src/display/api.js b/src/display/api.js index a2567c5d6..4a3c1f810 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2065,7 +2065,7 @@ var RenderTask = (function RenderTaskClosure() { /** * Cancels the rendering task. If the task is currently rendering it will * not be cancelled until graphics pauses with a timeout. The promise that - * this object extends will resolved when cancelled. + * this object extends will be rejected when cancelled. */ cancel: function RenderTask_cancel() { this._internalRenderTask.cancel(); diff --git a/src/display/dom_utils.js b/src/display/dom_utils.js index 185303a28..e27456064 100644 --- a/src/display/dom_utils.js +++ b/src/display/dom_utils.js @@ -305,6 +305,8 @@ function getDefaultSetting(id) { return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL; case 'enableStats': return !!(globalSettings && globalSettings.enableStats); + case 'pdfjsNext': + return !!(globalSettings && globalSettings.pdfjsNext); default: throw new Error('Unknown default setting: ' + id); } diff --git a/src/display/global.js b/src/display/global.js index b06abb5ff..c4e5f653e 100644 --- a/src/display/global.js +++ b/src/display/global.js @@ -251,6 +251,13 @@ PDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported); + /** + * Opt-in to backwards incompatible API changes. NOTE: + * If the `PDFJS_NEXT` build flag is set, it will override this setting. + * @var {boolean} + */ + PDFJS.pdfjsNext = (PDFJS.pdfjsNext === undefined) ? false : PDFJS.pdfjsNext; + if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) { var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; delete PDFJS.openExternalLinksInNewWindow; diff --git a/test/driver.js b/test/driver.js index 5dda360ae..7aba45fa4 100644 --- a/test/driver.js +++ b/test/driver.js @@ -263,6 +263,8 @@ var Driver = (function DriverClosure() { // eslint-disable-line no-unused-vars PDFJS.cMapUrl = '../external/bcmaps/'; PDFJS.enableStats = true; PDFJS.imageResourcesPath = '/web/images/'; + // Opt-in to using the latest API. + PDFJS.pdfjsNext = true; // Set the passed options this.inflight = options.inflight; diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 0ca0b9923..4bc5fc885 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -60,6 +60,8 @@ function initializePDFJS(callback) { // Configure the worker. displayGlobal.PDFJS.workerSrc = '../../src/worker_loader.js'; + // Opt-in to using the latest API. + displayGlobal.PDFJS.pdfjsNext = true; callback(); }); diff --git a/web/app.js b/web/app.js index 3922750f3..e33807222 100644 --- a/web/app.js +++ b/web/app.js @@ -117,6 +117,7 @@ function configure(PDFJS) { PDFJS.cMapUrl = '../external/bcmaps/'; PDFJS.cMapPacked = true; PDFJS.workerSrc = '../src/worker_loader.js'; + PDFJS.pdfjsNext = true; } else { PDFJS.cMapUrl = '../web/cmaps/'; PDFJS.cMapPacked = true;