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


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

export class Domain {
  constructor(session) {
    this.session = session;
    this.name = this.constructor.name;

    this.eventListeners_ = new Set();
    this._requestCounter = 0;
  }

  destructor() {}

  emit(eventName, params = {}) {
    for (const listener of this.eventListeners_) {
      try {
        if (isEventHandler(listener)) {
          listener.onEvent(eventName, params);
        } else {
          listener.call(this, eventName, params);
        }
      } catch (e) {
        console.error(e);
      }
    }
  }

  /**
   * Execute the provided method in the child domain that has the same domain
   * name. eg. calling this.executeInChild from domains/parent/Input.sys.mjs will
   * attempt to execute the method in domains/content/Input.sys.mjs.
   *
   * This can only be called from parent domains managed by a TabSession.
   *
   * @param {string} method
   *        Name of the method to call on the child domain.
   * @param {object} params
   *        Optional parameters. Must be serializable.
   */
  executeInChild(method, params) {
    if (!this.session.executeInChild) {
      throw new Error(
        "executeInChild can only be used in Domains managed by a TabSession"
      );
    }
    this._requestCounter++;
    const id = this.name + "-" + this._requestCounter;
    return this.session.executeInChild(id, this.name, method, params);
  }

  addEventListener(listener) {
    if (typeof listener != "function" && !isEventHandler(listener)) {
      throw new TypeError();
    }
    this.eventListeners_.add(listener);
  }

  // static

  static implements(command) {
    return command && typeof this.prototype[command] == "function";
  }
}

function isEventHandler(listener) {
  return (
    listener && "onEvent" in listener && typeof listener.onEvent == "function"
  );
}

[ Dauer der Verarbeitung: 0.30 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