Merge pull request #13138 from Snuffleupagus/PDFHistory-pushPage-dest
[PDFHistory] Correctly simulate an internal destination in the `pushPage`-method (PR 12493 follow-up)
This commit is contained in:
commit
69c88d119d
@ -205,13 +205,7 @@ class PDFHistory {
|
|||||||
`"${explicitDest}" is not a valid explicitDest parameter.`
|
`"${explicitDest}" is not a valid explicitDest parameter.`
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
} else if (
|
} else if (!this._isValidPage(pageNumber)) {
|
||||||
!(
|
|
||||||
Number.isInteger(pageNumber) &&
|
|
||||||
pageNumber > 0 &&
|
|
||||||
pageNumber <= this.linkService.pagesCount
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
// Allow an unset `pageNumber` if and only if the history is still empty;
|
// Allow an unset `pageNumber` if and only if the history is still empty;
|
||||||
// please refer to the `this._destination.page = null;` comment above.
|
// please refer to the `this._destination.page = null;` comment above.
|
||||||
if (pageNumber !== null || this._destination) {
|
if (pageNumber !== null || this._destination) {
|
||||||
@ -281,13 +275,7 @@ class PDFHistory {
|
|||||||
if (!this._initialized) {
|
if (!this._initialized) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (
|
if (!this._isValidPage(pageNumber)) {
|
||||||
!(
|
|
||||||
Number.isInteger(pageNumber) &&
|
|
||||||
pageNumber > 0 &&
|
|
||||||
pageNumber <= this.linkService.pagesCount
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
console.error(
|
console.error(
|
||||||
`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`
|
`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`
|
||||||
);
|
);
|
||||||
@ -304,6 +292,8 @@ class PDFHistory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._pushOrReplaceState({
|
this._pushOrReplaceState({
|
||||||
|
// Simulate an internal destination, for `this._tryPushCurrentPosition`:
|
||||||
|
dest: null,
|
||||||
hash: `page=${pageNumber}`,
|
hash: `page=${pageNumber}`,
|
||||||
page: pageNumber,
|
page: pageNumber,
|
||||||
rotation: this.linkService.rotation,
|
rotation: this.linkService.rotation,
|
||||||
@ -470,7 +460,7 @@ class PDFHistory {
|
|||||||
// - contains an internal destination, since in this case we
|
// - contains an internal destination, since in this case we
|
||||||
// cannot ensure that the document position has actually changed.
|
// cannot ensure that the document position has actually changed.
|
||||||
// - was set through the user changing the hash of the document.
|
// - was set through the user changing the hash of the document.
|
||||||
if (this._destination.dest || !this._destination.first) {
|
if (this._destination.dest !== undefined || !this._destination.first) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// To avoid "flooding" the browser history, replace the current entry.
|
// To avoid "flooding" the browser history, replace the current entry.
|
||||||
@ -479,6 +469,15 @@ class PDFHistory {
|
|||||||
this._pushOrReplaceState(position, forceReplace);
|
this._pushOrReplaceState(position, forceReplace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_isValidPage(val) {
|
||||||
|
return (
|
||||||
|
Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
@ -548,14 +547,7 @@ class PDFHistory {
|
|||||||
const nameddest = params.nameddest || "";
|
const nameddest = params.nameddest || "";
|
||||||
let page = params.page | 0;
|
let page = params.page | 0;
|
||||||
|
|
||||||
if (
|
if (!this._isValidPage(page) || (checkNameddest && nameddest.length > 0)) {
|
||||||
!(
|
|
||||||
Number.isInteger(page) &&
|
|
||||||
page > 0 &&
|
|
||||||
page <= this.linkService.pagesCount
|
|
||||||
) ||
|
|
||||||
(checkNameddest && nameddest.length > 0)
|
|
||||||
) {
|
|
||||||
page = null;
|
page = null;
|
||||||
}
|
}
|
||||||
return { hash, page, rotation: this.linkService.rotation };
|
return { hash, page, rotation: this.linkService.rotation };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user