Bug 1703953 - Part 3: Apply mozilla/use-isInstance to devtools r=julienw

Differential Revision: https://phabricator.services.mozilla.com/D142068
This commit is contained in:
Kagami Sascha Rosylight 2022-04-06 11:57:57 +00:00
Родитель 1409f37ca3
Коммит 3269d4c928
2 изменённых файлов: 11 добавлений и 10 удалений

Просмотреть файл

@ -486,3 +486,11 @@ declare interface XULElementWithCommandHandler {
}
declare type nsIPrefBranch = MockedExports.nsIPrefBranch;
// chrome context-only DOM isInstance method
// XXX: This hackishly extends Function because there is no way to extend DOM constructors.
// Callers should manually narrow the type when needed.
// See also https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/222
interface Function {
isInstance(obj: any): boolean;
}

Просмотреть файл

@ -139,7 +139,7 @@ async function getResultFromWorker(workerURL, initialMessageToWorker) {
worker.onerror = errorEvent => {
gActiveWorkers.delete(worker);
worker.terminate();
if (errorEvent instanceof ErrorEvent) {
if (ErrorEvent.isInstance(errorEvent)) {
const { message, filename, lineno } = errorEvent;
const error = new Error(`${message} at ${filename}:${lineno}`);
error.name = "WorkerError";
@ -152,17 +152,10 @@ async function getResultFromWorker(workerURL, initialMessageToWorker) {
// Handle errors from messages that cannot be deserialized. I'm not sure
// how to get into such a state, but having this handler seems like a good
// idea.
worker.onmessageerror = errorEvent => {
worker.onmessageerror = () => {
gActiveWorkers.delete(worker);
worker.terminate();
if (errorEvent instanceof ErrorEvent) {
const { message, filename, lineno } = errorEvent;
const error = new Error(`${message} at ${filename}:${lineno}`);
error.name = "WorkerMessageError";
reject(error);
} else {
reject(new Error("Error in worker"));
}
reject(new Error("Error in worker"));
};
worker.postMessage(initialMessageToWorker);