Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  Errors.sys.mjs   Sprache: unbekannt

 
/* 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/. */

import { RemoteError } from "chrome://remote/content/shared/RemoteError.sys.mjs";

class MessageHandlerError extends RemoteError {
  /**
   * @param {(string|Error)=} x
   *     Optional string describing error situation or Error instance
   *     to propagate.
   */
  constructor(x) {
    super(x);
    this.name = this.constructor.name;
    this.status = "message handler error";

    // Error's ctor does not preserve x' stack
    if (typeof x?.stack !== "undefined") {
      this.stack = x.stack;
    }
  }

  get isMessageHandlerError() {
    return true;
  }

  /**
   * @returns {Record<string, string>}
   *     JSON serialisation of error prototype.
   */
  toJSON() {
    return {
      error: this.status,
      message: this.message || "",
      stacktrace: this.stack || "",
    };
  }

  /**
   * Unmarshals a JSON error representation to the appropriate MessageHandler
   * error type.
   *
   * @param {Record<string, string>} json
   *     Error object.
   *
   * @returns {Error}
   *     Error prototype.
   */
  static fromJSON(json) {
    if (typeof json.error == "undefined") {
      let s = JSON.stringify(json);
      throw new TypeError("Undeserialisable error type: " + s);
    }
    if (!STATUSES.has(json.error)) {
      throw new TypeError("Not of MessageHandlerError descent: " + json.error);
    }

    let cls = STATUSES.get(json.error);
    let err = new cls();
    if ("message" in json) {
      err.message = json.message;
    }
    if ("stacktrace" in json) {
      err.stack = json.stacktrace;
    }
    return err;
  }
}

/**
 * A browsing context is no longer available.
 */
class DiscardedBrowsingContextError extends MessageHandlerError {
  constructor(message) {
    super(message);
    this.status = `discarded browsing context`;
  }
}

/**
 * A command could not be handled by the message handler network.
 */
class UnsupportedCommandError extends MessageHandlerError {
  constructor(message) {
    super(message);
    this.status = "unsupported message handler command";
  }
}

const STATUSES = new Map([
  ["discarded browsing context", DiscardedBrowsingContextError],
  ["message handler error", MessageHandlerError],
  ["unsupported message handler command", UnsupportedCommandError],
]);

/** @namespace */
export const error = {
  DiscardedBrowsingContextError,
  MessageHandlerError,
  UnsupportedCommandError,
};

[ Dauer der Verarbeitung: 0.36 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge