Merge pull request #7529 from Snuffleupagus/setCurrentPageNumber-warn-on-outOfBounds

Log an error when the value passed to `set currentPageNumber` is out of bounds (PR 7502 followup)
This commit is contained in:
Tim van der Meij 2016-08-07 14:43:31 +02:00 committed by GitHub
commit ca81f4df18
3 changed files with 46 additions and 37 deletions

View File

@ -396,15 +396,15 @@ var PDFViewerApplication = {
},
get pagesCount() {
return this.pdfDocument.numPages;
return this.pdfDocument ? this.pdfDocument.numPages : 0;
},
set page(val) {
this.pdfLinkService.page = val;
this.pdfViewer.currentPageNumber = val;
},
get page() { // TODO remove
return this.pdfLinkService.page;
get page() {
return this.pdfViewer.currentPageNumber;
},
get supportsPrinting() {
@ -1496,30 +1496,25 @@ function webViewerInitialized() {
}
}, true);
appConfig.sidebar.toggleButton.addEventListener('click',
function() {
PDFViewerApplication.pdfSidebar.toggle();
});
appConfig.sidebar.toggleButton.addEventListener('click', function() {
PDFViewerApplication.pdfSidebar.toggle();
});
appConfig.toolbar.previous.addEventListener('click',
function() {
PDFViewerApplication.page--;
});
appConfig.toolbar.previous.addEventListener('click', function() {
PDFViewerApplication.page--;
});
appConfig.toolbar.next.addEventListener('click',
function() {
PDFViewerApplication.page++;
});
appConfig.toolbar.next.addEventListener('click', function() {
PDFViewerApplication.page++;
});
appConfig.toolbar.zoomIn.addEventListener('click',
function() {
PDFViewerApplication.zoomIn();
});
appConfig.toolbar.zoomIn.addEventListener('click', function() {
PDFViewerApplication.zoomIn();
});
appConfig.toolbar.zoomOut.addEventListener('click',
function() {
PDFViewerApplication.zoomOut();
});
appConfig.toolbar.zoomOut.addEventListener('click', function() {
PDFViewerApplication.zoomOut();
});
appConfig.toolbar.pageNumber.addEventListener('click', function() {
this.select();
@ -2187,7 +2182,9 @@ window.addEventListener('keydown', function keydown(evt) {
/* falls through */
case 75: // 'k'
case 80: // 'p'
PDFViewerApplication.page--;
if (PDFViewerApplication.page > 1) {
PDFViewerApplication.page--;
}
handled = true;
break;
case 27: // esc key
@ -2217,7 +2214,9 @@ window.addEventListener('keydown', function keydown(evt) {
/* falls through */
case 74: // 'j'
case 78: // 'n'
PDFViewerApplication.page++;
if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
PDFViewerApplication.page++;
}
handled = true;
break;
@ -2229,8 +2228,8 @@ window.addEventListener('keydown', function keydown(evt) {
}
break;
case 35: // end
if (isViewerInPresentationMode || (PDFViewerApplication.pdfDocument &&
PDFViewerApplication.page < PDFViewerApplication.pagesCount)) {
if (isViewerInPresentationMode ||
PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
handled = true;
ensureViewerFocused = true;
@ -2255,7 +2254,9 @@ window.addEventListener('keydown', function keydown(evt) {
pdfViewer.currentScaleValue !== 'page-fit') {
break;
}
PDFViewerApplication.page--;
if (PDFViewerApplication.page > 1) {
PDFViewerApplication.page--;
}
handled = true;
break;

View File

@ -80,7 +80,7 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
* @returns {number}
*/
get pagesCount() {
return this.pdfDocument.numPages;
return this.pdfDocument ? this.pdfDocument.numPages : 0;
},
/**
@ -111,7 +111,9 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
(destRef + 1);
if (pageNumber) {
if (pageNumber > self.pagesCount) {
pageNumber = self.pagesCount;
console.error('PDFLinkService_navigateTo: ' +
'Trying to navigate to a non-existent page.');
return;
}
self.pdfViewer.scrollPageIntoView(pageNumber, dest);
@ -288,11 +290,15 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
break;
case 'NextPage':
this.page++;
if (this.page < this.pagesCount) {
this.page++;
}
break;
case 'PrevPage':
this.page--;
if (this.page > 1) {
this.page--;
}
break;
case 'LastPage':

View File

@ -181,7 +181,7 @@ var PDFViewer = (function pdfViewer() {
* @private
*/
_setCurrentPageNumber:
function pdfViewer_setCurrentPageNumber(val, resetCurrentPageView) {
function PDFViewer_setCurrentPageNumber(val, resetCurrentPageView) {
if (this._currentPageNumber === val) {
if (resetCurrentPageView) {
this._resetCurrentPageView();
@ -190,6 +190,8 @@ var PDFViewer = (function pdfViewer() {
}
if (!(0 < val && val <= this.pagesCount)) {
console.error('PDFViewer_setCurrentPageNumber: "' + val +
'" is out of bounds.');
return;
}
@ -467,7 +469,7 @@ var PDFViewer = (function pdfViewer() {
}
},
_setScale: function pdfViewer_setScale(value, noScroll) {
_setScale: function PDFViewer_setScale(value, noScroll) {
var scale = parseFloat(value);
if (scale > 0) {
@ -507,8 +509,8 @@ var PDFViewer = (function pdfViewer() {
scale = Math.min(MAX_AUTO_SCALE, horizontalScale);
break;
default:
console.error('pdfViewSetScale: \'' + value +
'\' is an unknown zoom value.');
console.error('PDFViewer_setScale: "' + value +
'" is an unknown zoom value.');
return;
}
this._setScaleUpdatePages(scale, value, noScroll, true);