The browsingContext awaitNavigation logic will now succeed navigation commands if navigationCommitted was already received and the navigation failed due to a NS_BINDING_ABORTED error. The navigation manager introduces a committed flag on the navigation object to track whether we received the navigationCommitted event or not. The Navigate helper will create a NavigationError - also added in this patch - in case of a failing navigation. This error object provides a getter in order to know if it was generated because of a NS_BINDING_ABORTED error. Depends on D226770 Differential Revision: https://phabricator.services.mozilla.com/D262921
40 lines
823 B
JavaScript
40 lines
823 B
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/**
|
|
* Base class for all remote protocol errors.
|
|
*/
|
|
export class RemoteError extends Error {
|
|
get isRemoteError() {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Convert to a serializable object. Should be implemented by subclasses.
|
|
*/
|
|
toJSON() {
|
|
throw new Error("Not implemented");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Internal class for navigation errors.
|
|
*/
|
|
export class NavigationError extends Error {
|
|
#status;
|
|
|
|
constructor(errorName, status) {
|
|
super(errorName);
|
|
this.#status = status;
|
|
}
|
|
|
|
get isNavigationError() {
|
|
return true;
|
|
}
|
|
|
|
get isBindingAborted() {
|
|
return this.#status == Cr.NS_BINDING_ABORTED;
|
|
}
|
|
}
|