gecko/b2g/simulator/lib/main.js

54 lines
1.3 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
const { Cc, Ci, Cu } = require("chrome");
const { SimulatorProcess } = require("./simulator-process");
const { Promise: promise } = Cu.import("resource://gre/modules/Promise.jsm", {});
const { Simulator } = Cu.import("resource://gre/modules/devtools/Simulator.jsm");
const { AddonManager } = Cu.import("resource://gre/modules/AddonManager.jsm", {});
let process;
function launch({ port }) {
// Close already opened simulation
if (process) {
return close().then(launch.bind(null, { port: port }));
}
process = SimulatorProcess();
process.remoteDebuggerPort = port;
process.run();
return promise.resolve();
}
function close() {
if (!process) {
return promise.resolve();
}
let p = process;
process = null;
return p.kill();
}
let appinfo = {};
AddonManager.getAddonByID(require("addon").id, function (addon) {
appinfo.label = addon.name.replace(" Simulator", "");
Simulator.register(appinfo.label, {
appinfo: appinfo,
launch: launch,
close: close
});
});
exports.shutdown = function () {
Simulator.unregister(appinfo.label);
close();
}