tor-browser

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

test_add_actors.js (3192B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Get the object, from the server side, for a given actor ID
      7 function getActorInstance(connID, actorID) {
      8  return DevToolsServer._connections[connID].getActor(actorID);
      9 }
     10 
     11 /**
     12 * The purpose of these tests is to verify that it's possible to add actors
     13 * both before and after the DevToolsServer has been initialized, so addons
     14 * that add actors don't have to poll the object for its initialization state
     15 * in order to add actors after initialization but rather can add actors anytime
     16 * regardless of the object's state.
     17 */
     18 add_task(async function () {
     19  ActorRegistry.registerModule("resource://test/pre_init_global_actors.js", {
     20    prefix: "preInitGlobal",
     21    constructor: "PreInitGlobalActor",
     22    type: { global: true },
     23  });
     24  ActorRegistry.registerModule(
     25    "resource://test/pre_init_target_scoped_actors.js",
     26    {
     27      prefix: "preInitTargetScoped",
     28      constructor: "PreInitTargetScopedActor",
     29      type: { target: true },
     30    }
     31  );
     32 
     33  const client = await startTestDevToolsServer("example tab");
     34 
     35  ActorRegistry.registerModule("resource://test/post_init_global_actors.js", {
     36    prefix: "postInitGlobal",
     37    constructor: "PostInitGlobalActor",
     38    type: { global: true },
     39  });
     40  ActorRegistry.registerModule(
     41    "resource://test/post_init_target_scoped_actors.js",
     42    {
     43      prefix: "postInitTargetScoped",
     44      constructor: "PostInitTargetScopedActor",
     45      type: { target: true },
     46    }
     47  );
     48 
     49  let actors = await client.mainRoot.rootForm;
     50  const tabs = await client.mainRoot.listTabs();
     51  const tabDescriptor = tabs[0];
     52 
     53  // These xpcshell tests use mocked actors (xpcshell-test/testactors)
     54  // which still don't support watcher actor.
     55  // Because of that we still can't enable server side targets and target swiching.
     56  tabDescriptor.disableTargetSwitching();
     57 
     58  const tabTarget = await tabDescriptor.getTarget();
     59 
     60  Assert.equal(tabs.length, 1);
     61 
     62  let reply = await client.request({
     63    to: actors.preInitGlobalActor,
     64    type: "ping",
     65  });
     66  Assert.equal(reply.message, "pong");
     67 
     68  reply = await client.request({
     69    to: tabTarget.targetForm.preInitTargetScopedActor,
     70    type: "ping",
     71  });
     72  Assert.equal(reply.message, "pong");
     73 
     74  reply = await client.request({
     75    to: actors.postInitGlobalActor,
     76    type: "ping",
     77  });
     78  Assert.equal(reply.message, "pong");
     79 
     80  reply = await client.request({
     81    to: tabTarget.targetForm.postInitTargetScopedActor,
     82    type: "ping",
     83  });
     84  Assert.equal(reply.message, "pong");
     85 
     86  // Consider that there is only one connection, and the first one is ours
     87  const connID = Object.keys(DevToolsServer._connections)[0];
     88  const postInitGlobalActor = getActorInstance(
     89    connID,
     90    actors.postInitGlobalActor
     91  );
     92  const preInitGlobalActor = getActorInstance(
     93    connID,
     94    actors.preInitGlobalActor
     95  );
     96  actors = await client.mainRoot.getRoot();
     97  Assert.equal(
     98    postInitGlobalActor,
     99    getActorInstance(connID, actors.postInitGlobalActor)
    100  );
    101  Assert.equal(
    102    preInitGlobalActor,
    103    getActorInstance(connID, actors.preInitGlobalActor)
    104  );
    105 
    106  await client.close();
    107 });