mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
[api-minor] Ensure that the PDFDocumentLoadingTask
-promise is rejected when cancelling the PasswordPrompt (bug 1754421)
This is essentially a *continuation* of PR 7926, where we added support for rejecting the current `PDFDocumentLoadingTask`-promise by throwing inside of the `onPassword`-callback. Hence the naive way to address [bug 1754421](https://bugzilla.mozilla.org/show_bug.cgi?id=1754421) would be to simply throw in the `onPassword`-callback used in the default viewer. However it unfortunately turns out to not work, since the password input/validation is asynchronous, and we thus need another approach. The simplest solution that I can come up with here, is thus to *extend* the `onPassword`-callback to also reject the current `PDFDocumentLoadingTask`-instance if an `Error` is explicitly passed as the input to the callback function. (This doesn't feel great, but I cannot see a better solution that isn't really complicated.)
This commit is contained in:
parent
acc758c40c
commit
1f0fb270b1
3 changed files with 48 additions and 9 deletions
|
@ -51,18 +51,18 @@ class PasswordPrompt {
|
|||
this.reason = null;
|
||||
|
||||
// Attach the event listeners.
|
||||
this.submitButton.addEventListener("click", this.verify.bind(this));
|
||||
this.cancelButton.addEventListener("click", this.close.bind(this));
|
||||
this.submitButton.addEventListener("click", this.#verify.bind(this));
|
||||
this.cancelButton.addEventListener("click", this.#cancel.bind(this));
|
||||
this.input.addEventListener("keydown", e => {
|
||||
if (e.keyCode === /* Enter = */ 13) {
|
||||
this.verify();
|
||||
this.#verify();
|
||||
}
|
||||
});
|
||||
|
||||
this.overlayManager.register(
|
||||
this.overlayName,
|
||||
this.container,
|
||||
this.close.bind(this),
|
||||
this.#cancel.bind(this),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ class PasswordPrompt {
|
|||
});
|
||||
}
|
||||
|
||||
verify() {
|
||||
#verify() {
|
||||
const password = this.input.value;
|
||||
if (password?.length > 0) {
|
||||
this.close();
|
||||
|
@ -95,6 +95,11 @@ class PasswordPrompt {
|
|||
}
|
||||
}
|
||||
|
||||
#cancel() {
|
||||
this.close();
|
||||
this.updateCallback(new Error("PasswordPrompt cancelled."));
|
||||
}
|
||||
|
||||
setUpdateCallback(updateCallback, reason) {
|
||||
this.updateCallback = updateCallback;
|
||||
this.reason = reason;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue