Merge pull request #16768 from Snuffleupagus/pr-15335-followup

Ensure that failing to open the password dialog once won't permanently disable it (PR 15335 follow-up)
This commit is contained in:
Tim van der Meij 2023-07-30 12:18:49 +02:00 committed by GitHub
commit 1ef6fbc525
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 13 deletions

View File

@ -2367,6 +2367,8 @@ class WorkerTransport {
#pagePromises = new Map();
#passwordCapability = null;
constructor(messageHandler, loadingTask, networkStream, params, factory) {
this.messageHandler = messageHandler;
this.loadingTask = loadingTask;
@ -2384,7 +2386,6 @@ class WorkerTransport {
this.destroyed = false;
this.destroyCapability = null;
this._passwordCapability = null;
this._networkStream = networkStream;
this._fullReader = null;
@ -2495,11 +2496,9 @@ class WorkerTransport {
this.destroyed = true;
this.destroyCapability = new PromiseCapability();
if (this._passwordCapability) {
this._passwordCapability.reject(
new Error("Worker was destroyed during onPassword callback")
);
}
this.#passwordCapability?.reject(
new Error("Worker was destroyed during onPassword callback")
);
const waitOn = [];
// We need to wait for all renderings to be completed, e.g.
@ -2702,27 +2701,27 @@ class WorkerTransport {
});
messageHandler.on("PasswordRequest", exception => {
this._passwordCapability = new PromiseCapability();
this.#passwordCapability = new PromiseCapability();
if (loadingTask.onPassword) {
const updatePassword = password => {
if (password instanceof Error) {
this._passwordCapability.reject(password);
this.#passwordCapability.reject(password);
} else {
this._passwordCapability.resolve({ password });
this.#passwordCapability.resolve({ password });
}
};
try {
loadingTask.onPassword(updatePassword, exception.code);
} catch (ex) {
this._passwordCapability.reject(ex);
this.#passwordCapability.reject(ex);
}
} else {
this._passwordCapability.reject(
this.#passwordCapability.reject(
new PasswordException(exception.message, exception.code)
);
}
return this._passwordCapability.promise;
return this.#passwordCapability.promise;
});
messageHandler.on("DataLoaded", data => {

View File

@ -74,7 +74,7 @@ class PasswordPrompt {
try {
await this.overlayManager.open(this.dialog);
} catch (ex) {
this.#activeCapability = null;
this.#activeCapability.resolve();
throw ex;
}