From 20881dc99abd520274766e9161d772c6277d8b17 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 29 May 2015 13:37:28 +0200 Subject: [PATCH 1/2] Make PDFHistory optional in PDFLinkService Currently `PDFLinkService` requires access to a `PDFHistory` instance in order for it to work correctly (and to avoid errors). If we want `PDFLinkService` to be more useful in custom viewers, I don't think that we actually want to force it to have a `PDFHistory` instance. Hence this patch, which contains a very simply approach to make `PDFHistory` optional. --- web/pdf_link_service.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/web/pdf_link_service.js b/web/pdf_link_service.js index 4e3213a17..54244e1ff 100644 --- a/web/pdf_link_service.js +++ b/web/pdf_link_service.js @@ -89,12 +89,14 @@ var PDFLinkService = (function () { } self.pdfViewer.scrollPageIntoView(pageNumber, dest); - // Update the browsing history. - self.pdfHistory.push({ - dest: dest, - hash: destString, - page: pageNumber - }); + if (self.pdfHistory) { + // Update the browsing history. + self.pdfHistory.push({ + dest: dest, + hash: destString, + page: pageNumber + }); + } } else { self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { var pageNum = pageIndex + 1; @@ -173,7 +175,9 @@ var PDFLinkService = (function () { var params = parseQueryString(hash); // borrowing syntax from "Parameters for Opening PDF Files" if ('nameddest' in params) { - this.pdfHistory.updateNextHashParam(params.nameddest); + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(params.nameddest); + } this.navigateTo(params.nameddest); return; } @@ -233,7 +237,9 @@ var PDFLinkService = (function () { } else if (/^\d+$/.test(hash)) { // page number this.page = hash; } else { // named destination - this.pdfHistory.updateNextHashParam(unescape(hash)); + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(unescape(hash)); + } this.navigateTo(unescape(hash)); } }, @@ -245,11 +251,15 @@ var PDFLinkService = (function () { // See PDF reference, table 8.45 - Named action switch (action) { case 'GoBack': - this.pdfHistory.back(); + if (this.pdfHistory) { + this.pdfHistory.back(); + } break; case 'GoForward': - this.pdfHistory.forward(); + if (this.pdfHistory) { + this.pdfHistory.forward(); + } break; case 'NextPage': From 3d9a8022cef636d40ea7d7ebaee4a65c1a21dc71 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 29 May 2015 13:47:28 +0200 Subject: [PATCH 2/2] Fix a couple of function names in error messages in PDFLinkService --- web/pdf_link_service.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/pdf_link_service.js b/web/pdf_link_service.js index 54244e1ff..a89cdd72a 100644 --- a/web/pdf_link_service.js +++ b/web/pdf_link_service.js @@ -65,12 +65,14 @@ var PDFLinkService = (function () { get page() { return this.pdfViewer.currentPageNumber; }, + /** * @param {number} value */ set page(value) { this.pdfViewer.currentPageNumber = value; }, + /** * @param dest - The PDF destination object. */ @@ -207,7 +209,7 @@ var PDFLinkService = (function () { zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null]; } else if (zoomArg === 'FitR') { if (zoomArgs.length !== 5) { - console.error('pdfViewSetHash: ' + + console.error('PDFLinkService_setHash: ' + 'Not enough parameters for \'FitR\'.'); } else { dest = [null, { name: zoomArg }, @@ -215,7 +217,7 @@ var PDFLinkService = (function () { (zoomArgs[3] | 0), (zoomArgs[4] | 0)]; } } else { - console.error('pdfViewSetHash: \'' + zoomArg + + console.error('PDFLinkService_setHash: \'' + zoomArg + '\' is not a valid zoom value.'); } }