tor-browser

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

runtime-client-factory.js (2223B)


      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 const {
      8  prepareTCPConnection,
      9 } = require("resource://devtools/client/shared/remote-debugging/adb/commands/index.js");
     10 const {
     11  DevToolsClient,
     12 } = require("resource://devtools/client/devtools-client.js");
     13 const {
     14  DevToolsServer,
     15 } = require("resource://devtools/server/devtools-server.js");
     16 const {
     17  ClientWrapper,
     18 } = require("resource://devtools/client/aboutdebugging/src/modules/client-wrapper.js");
     19 const {
     20  remoteClientManager,
     21 } = require("resource://devtools/client/shared/remote-debugging/remote-client-manager.js");
     22 
     23 const {
     24  RUNTIMES,
     25 } = require("resource://devtools/client/aboutdebugging/src/constants.js");
     26 
     27 async function createLocalClient() {
     28  DevToolsServer.init();
     29  DevToolsServer.registerAllActors();
     30  DevToolsServer.allowChromeProcess = true;
     31 
     32  const client = new DevToolsClient(DevToolsServer.connectPipe());
     33  await client.connect();
     34  return new ClientWrapper(client);
     35 }
     36 
     37 async function createNetworkClient(host, port) {
     38  const transport = await DevToolsClient.socketConnect({ host, port });
     39  const client = new DevToolsClient(transport);
     40  await client.connect();
     41  return new ClientWrapper(client);
     42 }
     43 
     44 async function createUSBClient(deviceId, socketPath) {
     45  const port = await prepareTCPConnection(deviceId, socketPath);
     46  return createNetworkClient("localhost", port);
     47 }
     48 
     49 async function createClientForRuntime(runtime) {
     50  const { extra, id, type } = runtime;
     51 
     52  if (type === RUNTIMES.THIS_FIREFOX) {
     53    return createLocalClient();
     54  } else if (remoteClientManager.hasClient(id, type)) {
     55    const client = remoteClientManager.getClient(id, type);
     56    return new ClientWrapper(client);
     57  } else if (type === RUNTIMES.NETWORK) {
     58    const { host, port } = extra.connectionParameters;
     59    return createNetworkClient(host, port);
     60  } else if (type === RUNTIMES.USB) {
     61    const { deviceId, socketPath } = extra.connectionParameters;
     62    return createUSBClient(deviceId, socketPath);
     63  }
     64 
     65  return null;
     66 }
     67 
     68 exports.createClientForRuntime = createClientForRuntime;