1
0
Fork 0
firefox/devtools/client/shared/remote-debugging/adb/commands/run-command.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

66 lines
1.8 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/. */
// Wrapper around the ADB utility.
"use strict";
const { dumpn } = require("resource://devtools/shared/DevToolsUtils.js");
const { setTimeout } = ChromeUtils.importESModule(
"resource://gre/modules/Timer.sys.mjs"
);
const {
adbProcess,
} = require("resource://devtools/client/shared/remote-debugging/adb/adb-process.js");
const client = require("resource://devtools/client/shared/remote-debugging/adb/adb-client.js");
const OKAY = 0x59414b4f;
// Asynchronously runs an adb command.
// @param command The command as documented in
// http://androidxref.com/4.0.4/xref/system/core/adb/SERVICES.TXT
const runCommand = function (command) {
dumpn("runCommand " + command);
return new Promise((resolve, reject) => {
if (!adbProcess.ready) {
setTimeout(function () {
reject("ADB_NOT_READY");
});
return;
}
const socket = client.connect();
socket.s.onopen = function () {
dumpn("runCommand onopen");
const req = client.createRequest(command);
socket.send(req);
};
socket.s.onerror = function () {
dumpn("runCommand onerror");
reject("NETWORK_ERROR");
};
socket.s.onclose = function () {
dumpn("runCommand onclose");
};
socket.s.ondata = function (event) {
dumpn("runCommand ondata");
const data = event.data;
const packet = client.unpackPacket(data, false);
if (!client.checkResponse(data, OKAY)) {
socket.close();
dumpn("Error: " + packet.data);
reject("PROTOCOL_ERROR");
return;
}
resolve(packet.data);
};
});
};
exports.runCommand = runCommand;