137 lines
3.9 KiB
JavaScript
137 lines
3.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Setup the loader to return the provided mock object instead of the regular adb module.
|
|
*
|
|
* @param {Object}
|
|
* mock should implement the following methods:
|
|
* - registerListener(listener)
|
|
* - getRuntimes()
|
|
* - getDevices()
|
|
* - updateRuntimes()
|
|
* - unregisterListener(listener)
|
|
*/
|
|
function enableAdbMock(mock) {
|
|
const {
|
|
setMockedModule,
|
|
} = require("resource://devtools/shared/loader/browser-loader-mocks.js");
|
|
setMockedModule(mock, "devtools/client/shared/remote-debugging/adb/adb");
|
|
}
|
|
/* exported enableAdbMock */
|
|
|
|
/**
|
|
* Update the loader to clear the mock entry for the adb module.
|
|
*/
|
|
function disableAdbMock() {
|
|
const {
|
|
removeMockedModule,
|
|
} = require("resource://devtools/shared/loader/browser-loader-mocks.js");
|
|
removeMockedModule("devtools/client/shared/remote-debugging/adb/adb");
|
|
}
|
|
/* exported disableAdbMock */
|
|
|
|
/**
|
|
* Creates a simple mock version for adb, implementing all the expected methods
|
|
* with empty placeholders.
|
|
*/
|
|
function createAdbMock() {
|
|
const adbMock = {};
|
|
adbMock.registerListener = function () {
|
|
console.log("MOCKED METHOD registerListener");
|
|
};
|
|
|
|
adbMock.getRuntimes = function () {
|
|
console.log("MOCKED METHOD getRuntimes");
|
|
};
|
|
|
|
adbMock.getDevices = function () {
|
|
console.log("MOCKED METHOD getDevices");
|
|
};
|
|
|
|
adbMock.updateRuntimes = function () {
|
|
console.log("MOCKED METHOD updateRuntimes");
|
|
};
|
|
|
|
adbMock.unregisterListener = function () {
|
|
console.log("MOCKED METHOD unregisterListener");
|
|
};
|
|
|
|
adbMock.once = function () {
|
|
console.log("MOCKED METHOD once");
|
|
};
|
|
|
|
adbMock.isProcessStarted = function () {
|
|
console.log("MOCKED METHOD isProcessStarted");
|
|
};
|
|
|
|
return { adb: adbMock };
|
|
}
|
|
/* exported createAdbMock */
|
|
|
|
/**
|
|
* The adb module allows to observe runtime updates. To simulate this behaviour
|
|
* the easiest is to use an EventEmitter-decorated object that can accept listeners and
|
|
* can emit events from the test.
|
|
*
|
|
* This method will update the registerListener method of the provided
|
|
* usbRuntimesMock in order to add listeners to a mockObserver, and returns said observer
|
|
* so that the test can emit "runtime-list-updated" when needed.
|
|
*/
|
|
function addObserverMock(adbMock) {
|
|
const EventEmitter = require("resource://devtools/shared/event-emitter.js");
|
|
|
|
const observerMock = {};
|
|
EventEmitter.decorate(observerMock);
|
|
adbMock.registerListener = function (listener) {
|
|
console.log("MOCKED METHOD registerListener with mock scanner");
|
|
observerMock.on("runtime-list-updated", listener);
|
|
};
|
|
|
|
// NOTE FOR REVIEW: Instead of emitting "runtime-list-updated" events in the test,
|
|
// this mock could have a emitObservedEvent method, that would just emit the correct
|
|
// event. This way if the event name changes, everything remains contained in this
|
|
// method.
|
|
|
|
return observerMock;
|
|
}
|
|
/* exported addObserverMock */
|
|
|
|
function createAdbProcessMock() {
|
|
const EventEmitter = require("resource://devtools/shared/event-emitter.js");
|
|
|
|
const mock = {};
|
|
EventEmitter.decorate(mock);
|
|
|
|
mock.ready = false;
|
|
|
|
mock.start = async () => {
|
|
console.log("MOCKED METHOD start");
|
|
mock.ready = true;
|
|
mock.emit("adb-ready");
|
|
};
|
|
|
|
return { adbProcess: mock };
|
|
}
|
|
/* exported createAdbProcessMock */
|
|
|
|
function enableAdbProcessMock(mock) {
|
|
const {
|
|
setMockedModule,
|
|
} = require("resource://devtools/shared/loader/browser-loader-mocks.js");
|
|
setMockedModule(
|
|
mock,
|
|
"devtools/client/shared/remote-debugging/adb/adb-process"
|
|
);
|
|
}
|
|
/* exported enableAdbProcessMock */
|
|
|
|
function disableAdbProcessMock() {
|
|
const {
|
|
removeMockedModule,
|
|
} = require("resource://devtools/shared/loader/browser-loader-mocks.js");
|
|
removeMockedModule("devtools/client/shared/remote-debugging/adb/adb-process");
|
|
}
|
|
/* exported disableAdbProcessMock */
|