Support forward command [6/n]

Summary: Support the adb forward command

Reviewed By: jameslawson

Differential Revision: D31055957

fbshipit-source-id: bc0593320d0e187ddfc8120c1684746f9e9c4cf5
This commit is contained in:
Michel Weststrate
2021-09-22 09:01:29 -07:00
committed by Facebook GitHub Bot
parent 8cf182cc26
commit 11a27f9e1a
6 changed files with 25 additions and 0 deletions

View File

@@ -233,6 +233,15 @@ export default class BaseDevice {
return this.flipperServer.exec('metro-command', this.serial, command); return this.flipperServer.exec('metro-command', this.serial, command);
} }
async forwardPort(local: string, remote: string): Promise<void> {
return this.flipperServer.exec(
'device-forward-port',
this.serial,
local,
remote,
);
}
supportsPlugin(plugin: PluginDefinition | PluginDetails) { supportsPlugin(plugin: PluginDefinition | PluginDetails) {
let pluginDetails: PluginDetails; let pluginDetails: PluginDetails;
if (plugin instanceof _SandyPluginDefinition) { if (plugin instanceof _SandyPluginDefinition) {

View File

@@ -258,6 +258,8 @@ export class FlipperServerImpl implements FlipperServer {
} }
device.sendCommand(command); device.sendCommand(command);
}, },
'device-forward-port': async (serial, local, remote) =>
this.getDevice(serial).forwardPort(local, remote),
}; };
registerDevice(device: ServerDevice) { registerDevice(device: ServerDevice) {

View File

@@ -69,4 +69,8 @@ export abstract class ServerDevice {
async executeShell(_command: string): Promise<string> { async executeShell(_command: string): Promise<string> {
throw new Error('executeShell not implemented on BaseDevice'); throw new Error('executeShell not implemented on BaseDevice');
} }
async forwardPort(_local: string, _remote: string): Promise<void> {
throw new Error('forwardPort not implemented on BaseDevice');
}
} }

View File

@@ -264,6 +264,10 @@ export default class AndroidDevice extends ServerDevice {
return destination; return destination;
} }
async forwardPort(local: string, remote: string): Promise<void> {
return this.adb.forward(this.serial, local, remote);
}
disconnect() { disconnect() {
if (this.recordingProcess) { if (this.recordingProcess) {
this.stopScreenCapture(); this.stopScreenCapture();

View File

@@ -83,6 +83,11 @@ export type FlipperServerCommands = {
) => Promise<void>; ) => Promise<void>;
'device-stop-screencapture': (serial: string) => Promise<string>; // file path 'device-stop-screencapture': (serial: string) => Promise<string>; // file path
'device-shell-exec': (serial: string, command: string) => Promise<string>; 'device-shell-exec': (serial: string, command: string) => Promise<string>;
'device-forward-port': (
serial: string,
local: string,
remote: string,
) => Promise<void>;
'metro-command': (serial: string, command: string) => Promise<void>; 'metro-command': (serial: string, command: string) => Promise<void>;
}; };

View File

@@ -69,6 +69,7 @@ declare module 'adbkit' {
getProperties: (serial: string) => Promise<{[key: string]: string}>; getProperties: (serial: string) => Promise<{[key: string]: string}>;
trackDevices: () => Promise<DeviceTracker>; trackDevices: () => Promise<DeviceTracker>;
kill: () => Promise<boolean>; kill: () => Promise<boolean>;
forward: (serial: string, local: string, remote: string) => Promise<void>;
} }
export function createClient(config: {port: number; host: string}): Client; export function createClient(config: {port: number; host: string}): Client;
} }