tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

generateActorSpec.js (1712B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 var { Request } = require("resource://devtools/shared/protocol/Request.js");
      8 const { Response } = require("resource://devtools/shared/protocol/Response.js");
      9 var {
     10  types,
     11  registeredTypes,
     12 } = require("resource://devtools/shared/protocol/types.js");
     13 
     14 /**
     15 * Generates an actor specification from an actor description.
     16 */
     17 var generateActorSpec = function (actorDesc) {
     18  const actorSpec = {
     19    typeName: actorDesc.typeName,
     20    methods: [],
     21  };
     22 
     23  // Find additional method specifications
     24  if (actorDesc.methods) {
     25    for (const name in actorDesc.methods) {
     26      const methodSpec = actorDesc.methods[name];
     27      const spec = {};
     28 
     29      spec.name = methodSpec.name || name;
     30      spec.request = new Request(spec.name, methodSpec.request || undefined);
     31      spec.response = new Response(methodSpec.response || undefined);
     32      spec.release = methodSpec.release;
     33      spec.oneway = methodSpec.oneway;
     34 
     35      actorSpec.methods.push(spec);
     36    }
     37  }
     38 
     39  // Find event specifications
     40  if (actorDesc.events) {
     41    actorSpec.events = new Map();
     42    for (const name in actorDesc.events) {
     43      const eventRequest = actorDesc.events[name];
     44      Object.freeze(eventRequest);
     45      actorSpec.events.set(name, new Request(name, eventRequest));
     46    }
     47  }
     48 
     49  if (!registeredTypes.has(actorSpec.typeName)) {
     50    types.addActorType(actorSpec.typeName);
     51  }
     52  registeredTypes.get(actorSpec.typeName).actorSpec = actorSpec;
     53 
     54  return actorSpec;
     55 };
     56 
     57 exports.generateActorSpec = generateActorSpec;