tor-browser

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

helper-adb-mock.js (3959B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /**
      7 * Setup the loader to return the provided mock object instead of the regular adb module.
      8 *
      9 * @param {object}
     10 *        mock should implement the following methods:
     11 *        - registerListener(listener)
     12 *        - getRuntimes()
     13 *        - getDevices()
     14 *        - updateRuntimes()
     15 *        - unregisterListener(listener)
     16 */
     17 function enableAdbMock(mock) {
     18  const {
     19    setMockedModule,
     20  } = require("resource://devtools/shared/loader/browser-loader-mocks.js");
     21  setMockedModule(mock, "devtools/client/shared/remote-debugging/adb/adb");
     22 }
     23 /* exported enableAdbMock */
     24 
     25 /**
     26 * Update the loader to clear the mock entry for the adb module.
     27 */
     28 function disableAdbMock() {
     29  const {
     30    removeMockedModule,
     31  } = require("resource://devtools/shared/loader/browser-loader-mocks.js");
     32  removeMockedModule("devtools/client/shared/remote-debugging/adb/adb");
     33 }
     34 /* exported disableAdbMock */
     35 
     36 /**
     37 * Creates a simple mock version for adb, implementing all the expected methods
     38 * with empty placeholders.
     39 */
     40 function createAdbMock() {
     41  const adbMock = {};
     42  adbMock.registerListener = function () {
     43    console.log("MOCKED METHOD registerListener");
     44  };
     45 
     46  adbMock.getRuntimes = function () {
     47    console.log("MOCKED METHOD getRuntimes");
     48  };
     49 
     50  adbMock.getDevices = function () {
     51    console.log("MOCKED METHOD getDevices");
     52  };
     53 
     54  adbMock.updateRuntimes = function () {
     55    console.log("MOCKED METHOD updateRuntimes");
     56  };
     57 
     58  adbMock.unregisterListener = function () {
     59    console.log("MOCKED METHOD unregisterListener");
     60  };
     61 
     62  adbMock.once = function () {
     63    console.log("MOCKED METHOD once");
     64  };
     65 
     66  adbMock.isProcessStarted = function () {
     67    console.log("MOCKED METHOD isProcessStarted");
     68  };
     69 
     70  return { adb: adbMock };
     71 }
     72 /* exported createAdbMock */
     73 
     74 /**
     75 * The adb module allows to observe runtime updates. To simulate this behaviour
     76 * the easiest is to use an EventEmitter-decorated object that can accept listeners and
     77 * can emit events from the test.
     78 *
     79 * This method will update the registerListener method of the provided
     80 * usbRuntimesMock in order to add listeners to a mockObserver, and returns said observer
     81 * so that the test can emit "runtime-list-updated" when needed.
     82 */
     83 function addObserverMock(adbMock) {
     84  const EventEmitter = require("resource://devtools/shared/event-emitter.js");
     85 
     86  const observerMock = {};
     87  EventEmitter.decorate(observerMock);
     88  adbMock.registerListener = function (listener) {
     89    console.log("MOCKED METHOD registerListener with mock scanner");
     90    observerMock.on("runtime-list-updated", listener);
     91  };
     92 
     93  // NOTE FOR REVIEW: Instead of emitting "runtime-list-updated" events in the test,
     94  // this mock could have a emitObservedEvent method, that would just emit the correct
     95  // event. This way if the event name changes, everything remains contained in this
     96  // method.
     97 
     98  return observerMock;
     99 }
    100 /* exported addObserverMock */
    101 
    102 function createAdbProcessMock() {
    103  const EventEmitter = require("resource://devtools/shared/event-emitter.js");
    104 
    105  const mock = {};
    106  EventEmitter.decorate(mock);
    107 
    108  mock.ready = false;
    109 
    110  mock.start = async () => {
    111    console.log("MOCKED METHOD start");
    112    mock.ready = true;
    113    mock.emit("adb-ready");
    114  };
    115 
    116  return { adbProcess: mock };
    117 }
    118 /* exported createAdbProcessMock */
    119 
    120 function enableAdbProcessMock(mock) {
    121  const {
    122    setMockedModule,
    123  } = require("resource://devtools/shared/loader/browser-loader-mocks.js");
    124  setMockedModule(
    125    mock,
    126    "devtools/client/shared/remote-debugging/adb/adb-process"
    127  );
    128 }
    129 /* exported enableAdbProcessMock */
    130 
    131 function disableAdbProcessMock() {
    132  const {
    133    removeMockedModule,
    134  } = require("resource://devtools/shared/loader/browser-loader-mocks.js");
    135  removeMockedModule("devtools/client/shared/remote-debugging/adb/adb-process");
    136 }
    137 /* exported disableAdbProcessMock */