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

View File

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

View File

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