From 746eaf31541e52d47e67e30b11f0c40706d3ab37 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 12 Apr 2020 16:29:31 +0200 Subject: [PATCH] [api-minor] Fix the return value of `PDFDocumentProxy.getViewerPreferences` when no viewer preferences are present (PR 10738 follow-up) This patch fixes yet another instalment in the never-ending series of "what the *bleep* was I thinking", by changing the `PDFDocumentProxy.getViewerPreferences` method to return `null` by default. Not only is this method now consistent with many other API methods, for the data not present case, but it also avoids having to e.g. loop through an object to check if it's actually empty (note the old unit-test). --- src/core/obj.js | 5 ++++- src/display/api.js | 3 ++- test/unit/api_spec.js | 5 +---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/core/obj.js b/src/core/obj.js index 10469f05b044c..e4eb369bf8383 100644 --- a/src/core/obj.js +++ b/src/core/obj.js @@ -479,7 +479,7 @@ class Catalog { }; const obj = this.catDict.get("ViewerPreferences"); - const prefs = Object.create(null); + let prefs = null; if (isDict(obj)) { for (const key in ViewerPreferencesValidators) { @@ -583,6 +583,9 @@ class Catalog { } if (prefValue !== undefined) { + if (!prefs) { + prefs = Object.create(null); + } prefs[key] = prefValue; } else { info(`Bad value in ViewerPreferences for "${key}".`); diff --git a/src/display/api.js b/src/display/api.js index 028bcff4d7671..d3209cd758482 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -663,7 +663,8 @@ class PDFDocumentProxy { /** * @returns {Promise} A promise that is resolved with an {Object} containing - * the viewer preferences. + * the viewer preferences, or `null` when no viewer preferences are present + * in the PDF file. */ getViewerPreferences() { return this._transport.getViewerPreferences(); diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 2cda2eecd25af..ddaaf21cd44b8 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -24,7 +24,6 @@ import { createPromiseCapability, FontType, InvalidPDFException, - isEmptyObj, MissingPDFException, OPS, PasswordException, @@ -846,9 +845,7 @@ describe("api", function () { return pdfDoc.getViewerPreferences(); }) .then(function (prefs) { - expect( - typeof prefs === "object" && prefs !== null && isEmptyObj(prefs) - ).toEqual(true); + expect(prefs).toEqual(null); loadingTask.destroy().then(done); })