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:
commit
1ef6fbc525
@ -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 => {
|
||||
|
@ -74,7 +74,7 @@ class PasswordPrompt {
|
||||
try {
|
||||
await this.overlayManager.open(this.dialog);
|
||||
} catch (ex) {
|
||||
this.#activeCapability = null;
|
||||
this.#activeCapability.resolve();
|
||||
throw ex;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user