Files
flipper/desktop/flipper-server-core/src/devices/ServerDevice.tsx
Andrey Goncharov fb37f27ff5 Suport device-open-app command
Summary: It is an escape hatch for testing iOS Sample app if `navigate('/')` cannot be made to work easily (D51394323)

Reviewed By: lblasa

Differential Revision: D51466697

fbshipit-source-id: fd6c2f37504807b4b634b85cb10e837523dadba8
2023-11-20 07:14:09 -08:00

90 lines
2.4 KiB
TypeScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {DeviceDescription, DeviceLogEntry} from 'flipper-common';
import {DeviceListener, NoopListener} from '../utils/DeviceListener';
import {FlipperServerImpl} from '../FlipperServerImpl';
export abstract class ServerDevice {
readonly info: DeviceDescription;
readonly flipperServer: FlipperServerImpl;
connected = true;
protected stopCrashWatcherCb?: () => void;
readonly logListener: DeviceListener = new NoopListener(() => this.connected);
readonly crashWatcher: DeviceListener = new NoopListener(
() => this.connected,
);
constructor(flipperServer: FlipperServerImpl, info: DeviceDescription) {
this.flipperServer = flipperServer;
this.info = info;
}
get serial(): string {
return this.info.serial;
}
addLogEntry(entry: DeviceLogEntry) {
this.flipperServer.emit('device-log', {
serial: this.serial,
entry,
});
}
/**
* The device might have no active connection
*/
disconnect(): void {
this.connected = false;
this.info.features.screenCaptureAvailable = false;
this.info.features.screenshotAvailable = false;
this.logListener.stop();
this.crashWatcher.stop();
this.flipperServer.pluginManager.stopAllServerAddOns(this.info.serial);
}
screenshot(): Promise<Buffer> {
return Promise.reject(
new Error('No screenshot support for current device'),
);
}
async startScreenCapture(_destination: string): Promise<void> {
throw new Error('startScreenCapture not implemented');
}
async stopScreenCapture(): Promise<string> {
throw new Error('stopScreenCapture not implemented');
}
async executeShell(_command: string): Promise<string> {
throw new Error('executeShell not implemented');
}
async forwardPort(_local: string, _remote: string): Promise<boolean> {
throw new Error('forwardPort not implemented');
}
async clearLogs(): Promise<void> {}
async navigateToLocation(_location: string) {
throw new Error('navigateLocation not implemented');
}
async installApp(_appBundlePath: string): Promise<void> {
throw new Error('installApp not implemented');
}
async openApp(_name: string): Promise<void> {
throw new Error('openApp not implemented');
}
}