From c7492a83c7dc69e9fd0863b1ce60a265282fb4de Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Wed, 2 Feb 2022 03:05:34 -0800 Subject: [PATCH] Remove global access to adb client and idb config Summary: Idb and adb sholuld not really be accessed out side of Adnroid and iOS device managers Reviewed By: lawrencelomax Differential Revision: D33915162 fbshipit-source-id: 0d1bb028b9a53254cf5b0ce6289ae76339c5a254 --- .../src/FlipperServerImpl.tsx | 8 +++---- .../src/devices/android/adbClient.tsx | 15 ++++--------- .../devices/ios/iOSCertificateProvider.tsx | 3 +-- .../src/devices/ios/iOSContainerUtility.tsx | 5 +++++ .../src/devices/ios/iOSDeviceManager.tsx | 3 +-- .../src/devices/ios/idbConfig.tsx | 22 ------------------- 6 files changed, 14 insertions(+), 42 deletions(-) delete mode 100644 desktop/flipper-server-core/src/devices/ios/idbConfig.tsx diff --git a/desktop/flipper-server-core/src/FlipperServerImpl.tsx b/desktop/flipper-server-core/src/FlipperServerImpl.tsx index 269d3883b..226b97b40 100644 --- a/desktop/flipper-server-core/src/FlipperServerImpl.tsx +++ b/desktop/flipper-server-core/src/FlipperServerImpl.tsx @@ -46,8 +46,7 @@ import {promises} from 'fs'; // Electron 11 runs on Node 12 which does not support fs.promises.rm import rm from 'rimraf'; import assert from 'assert'; -import {setAdbClient} from './devices/android/adbClient'; -import {setIdbConfig} from './devices/ios/idbConfig'; +import {initializeAdbClient} from './devices/android/adbClient'; import {assertNotNull} from './comms/Utilities'; const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} = @@ -163,7 +162,7 @@ export class FlipperServerImpl implements FlipperServer { const asyncDeviceListenersPromises: Array> = []; if (this.config.settings.enableAndroid) { asyncDeviceListenersPromises.push( - setAdbClient(this.config.settings) + initializeAdbClient(this.config.settings) .then((adbClient) => { if (!adbClient) { return; @@ -180,8 +179,7 @@ export class FlipperServerImpl implements FlipperServer { ); } if (this.config.settings.enableIOS) { - const idbConfig = setIdbConfig(this.config.settings); - this.ios = new IOSDeviceManager(this, idbConfig); + this.ios = new IOSDeviceManager(this, this.config.settings); asyncDeviceListenersPromises.push( this.ios.watchIOSDevices().catch((e) => { console.error( diff --git a/desktop/flipper-server-core/src/devices/android/adbClient.tsx b/desktop/flipper-server-core/src/devices/android/adbClient.tsx index 86bf40a05..1d55546ae 100644 --- a/desktop/flipper-server-core/src/devices/android/adbClient.tsx +++ b/desktop/flipper-server-core/src/devices/android/adbClient.tsx @@ -13,20 +13,14 @@ import adbConfig from './adbConfig'; import adbkit, {Client} from 'adbkit'; import path from 'path'; -let instance: Client | undefined; - type Config = { androidHome: string; }; -export function getAdbClient(): Client | undefined { - return instance; -} - -export async function setAdbClient( +export async function initializeAdbClient( config: Config, -): Promise { - instance = await reportPlatformFailures( +): Promise { + const adbClient = await reportPlatformFailures( createClient(config), 'createADBClient', ).catch((e) => { @@ -34,9 +28,8 @@ export async function setAdbClient( 'Failed to initialize ADB. Please disable Android support in settings, or configure a correct path.', e, ); - return undefined; }); - return instance; + return adbClient; } /* Adbkit will attempt to start the adb server if it's not already running, diff --git a/desktop/flipper-server-core/src/devices/ios/iOSCertificateProvider.tsx b/desktop/flipper-server-core/src/devices/ios/iOSCertificateProvider.tsx index 86150066a..4520b322b 100644 --- a/desktop/flipper-server-core/src/devices/ios/iOSCertificateProvider.tsx +++ b/desktop/flipper-server-core/src/devices/ios/iOSCertificateProvider.tsx @@ -7,9 +7,8 @@ * @format */ -import {IdbConfig} from './idbConfig'; import CertificateProvider from '../../utils/CertificateProvider'; -import iosUtil from './iOSContainerUtility'; +import iosUtil, {IdbConfig} from './iOSContainerUtility'; import fs from 'fs-extra'; import {promisify} from 'util'; import tmp, {DirOptions} from 'tmp'; diff --git a/desktop/flipper-server-core/src/devices/ios/iOSContainerUtility.tsx b/desktop/flipper-server-core/src/devices/ios/iOSContainerUtility.tsx index f4c4b94b3..b77b09608 100644 --- a/desktop/flipper-server-core/src/devices/ios/iOSContainerUtility.tsx +++ b/desktop/flipper-server-core/src/devices/ios/iOSContainerUtility.tsx @@ -19,6 +19,11 @@ import fs from 'fs-extra'; import path from 'path'; const exec = promisify(child_process.exec); +export type IdbConfig = { + idbPath: string; + enablePhysicalIOS: boolean; +}; + // Use debug to get helpful logs when idb fails const idbLogLevel = 'DEBUG'; const operationPrefix = 'iosContainerUtility'; diff --git a/desktop/flipper-server-core/src/devices/ios/iOSDeviceManager.tsx b/desktop/flipper-server-core/src/devices/ios/iOSDeviceManager.tsx index 31cebbd88..1fc0a97f8 100644 --- a/desktop/flipper-server-core/src/devices/ios/iOSDeviceManager.tsx +++ b/desktop/flipper-server-core/src/devices/ios/iOSDeviceManager.tsx @@ -12,7 +12,7 @@ import type {IOSDeviceParams} from 'flipper-common'; import path from 'path'; import childProcess from 'child_process'; import {exec} from 'promisify-child-process'; -import iosUtil from './iOSContainerUtility'; +import iosUtil, {IdbConfig} from './iOSContainerUtility'; import IOSDevice from './IOSDevice'; import { ERR_NO_IDB_OR_XCODE_AVAILABLE, @@ -22,7 +22,6 @@ import { } from './IOSBridge'; import {FlipperServerImpl} from '../../FlipperServerImpl'; import {getFlipperServerConfig} from '../../FlipperServerConfig'; -import {IdbConfig} from './idbConfig'; import iOSCertificateProvider from './iOSCertificateProvider'; export class IOSDeviceManager { diff --git a/desktop/flipper-server-core/src/devices/ios/idbConfig.tsx b/desktop/flipper-server-core/src/devices/ios/idbConfig.tsx deleted file mode 100644 index 6daf3df77..000000000 --- a/desktop/flipper-server-core/src/devices/ios/idbConfig.tsx +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 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 - */ - -export type IdbConfig = { - idbPath: string; - enablePhysicalIOS: boolean; -}; - -let idbConfig: IdbConfig | undefined; - -export const getIdbConfig = () => idbConfig; - -export const setIdbConfig = (newIdbConfig: IdbConfig) => { - idbConfig = newIdbConfig; - return idbConfig; -};