Use the config to control adb subprocesses.

Test: build and run locally
Bug: 123592422
Change-Id: Idbc51260de38762de564d92971f874bf61063d5c
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index 9ebb926..d985529 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -241,7 +241,7 @@
 }
 
 bool AdbVsockTunnelEnabled(const vsoc::CuttlefishConfig& config) {
-  return FLAGS_vsock_guest_cid > 2
+  return config.vsock_guest_cid() > 2
       && AdbModeEnabled(config, kAdbModeVsockTunnel);
 }
 
@@ -257,7 +257,7 @@
 }
 
 bool AdbConnectorEnabled(const vsoc::CuttlefishConfig& config) {
-  return FLAGS_run_adb_connector
+  return config.run_adb_connector()
       && (AdbTunnelEnabled(config) || AdbVsockTunnelEnabled(config));
 }
 
@@ -283,7 +283,7 @@
                << usb_v1_server->StrError();
     std::exit(cvd::LauncherExitCodes::kUsbV1SocketError);
   }
-  cvd::Command usb_server(FLAGS_virtual_usb_manager_binary);
+  cvd::Command usb_server(config.virtual_usb_manager_binary());
   usb_server.AddParameter("-usb_v1_fd=", usb_v1_server);
   process_monitor->StartSubprocess(std::move(usb_server),
                                    GetOnSubprocessExitCallback(config));
@@ -401,7 +401,7 @@
 void LaunchAdbConnectorIfEnabled(cvd::ProcessMonitor* process_monitor,
                                  const vsoc::CuttlefishConfig& config) {
   if (AdbConnectorEnabled(config)) {
-    cvd::Command adb_connector(FLAGS_adb_connector_binary);
+    cvd::Command adb_connector(config.adb_connector_binary());
     adb_connector.AddParameter(GetAdbConnectorPortArg());
     process_monitor->StartSubprocess(std::move(adb_connector),
                                      GetOnSubprocessExitCallback(config));
@@ -411,7 +411,7 @@
 void LaunchSocketForwardProxyIfEnabled(cvd::ProcessMonitor* process_monitor,
                                  const vsoc::CuttlefishConfig& config) {
   if (AdbTunnelEnabled(config)) {
-    cvd::Command adb_tunnel(FLAGS_socket_forward_proxy_binary);
+    cvd::Command adb_tunnel(config.socket_forward_proxy_binary());
     adb_tunnel.AddParameter(GetGuestPortArg());
     adb_tunnel.AddParameter(GetHostPortArg());
     process_monitor->StartSubprocess(std::move(adb_tunnel),
@@ -422,7 +422,7 @@
 void LaunchSocketVsockProxyIfEnabled(cvd::ProcessMonitor* process_monitor,
                                  const vsoc::CuttlefishConfig& config) {
   if (AdbVsockTunnelEnabled(config)) {
-    cvd::Command adb_tunnel(FLAGS_socket_vsock_proxy_binary);
+    cvd::Command adb_tunnel(config.socket_vsock_proxy_binary());
     adb_tunnel.AddParameter("--guest_port=5555");
     adb_tunnel.AddParameter(
         std::string{"--host_port="} + std::to_string(GetHostPort()));
@@ -643,6 +643,13 @@
   tmp_config_obj.set_stream_audio_port(FLAGS_stream_audio_port);
 
   tmp_config_obj.set_restart_subprocesses(FLAGS_restart_subprocesses);
+  tmp_config_obj.set_run_adb_connector(FLAGS_run_adb_connector);
+  tmp_config_obj.set_adb_connector_binary(FLAGS_adb_connector_binary);
+  tmp_config_obj.set_virtual_usb_manager_binary(
+      FLAGS_virtual_usb_manager_binary);
+  tmp_config_obj.set_socket_forward_proxy_binary(
+      FLAGS_socket_forward_proxy_binary);
+  tmp_config_obj.set_socket_vsock_proxy_binary(FLAGS_socket_vsock_proxy_binary);
 
   if(!AdbUsbEnabled(tmp_config_obj)) {
     tmp_config_obj.disable_usb_adb();
diff --git a/host/libs/config/cuttlefish_config.cpp b/host/libs/config/cuttlefish_config.cpp
index 620f9eb..59f2d4a 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -132,6 +132,11 @@
 const char* kStreamAudioPort = "stream_audio_port";
 
 const char* kRestartSubprocesses = "restart_subprocesses";
+const char* kRunAdbConnector = "run_adb_connector";
+const char* kAdbConnectorBinary = "adb_connector_binary";
+const char* kVirtualUsbManagerBinary = "virtual_usb_manager_binary";
+const char* kSocketForwardProxyBinary = "socket_forward_proxy_binary";
+const char* kSocketVsockProxyBinary = "socket_vsock_proxy_binary";
 }  // namespace
 
 namespace vsoc {
@@ -610,6 +615,50 @@
   (*dictionary_)[kRestartSubprocesses] = restart_subprocesses;
 }
 
+bool CuttlefishConfig::run_adb_connector() const {
+  return (*dictionary_)[kRestartSubprocesses].asBool();
+}
+
+void CuttlefishConfig::set_run_adb_connector(bool run_adb_connector) {
+  (*dictionary_)[kRunAdbConnector] = run_adb_connector;
+}
+
+std::string CuttlefishConfig::adb_connector_binary() const {
+  return (*dictionary_)[kAdbConnectorBinary].asString();
+}
+
+void CuttlefishConfig::set_adb_connector_binary(
+    const std::string& adb_connector_binary) {
+  (*dictionary_)[kAdbConnectorBinary] = adb_connector_binary;
+}
+
+std::string CuttlefishConfig::virtual_usb_manager_binary() const {
+  return (*dictionary_)[kVirtualUsbManagerBinary].asString();
+}
+
+void CuttlefishConfig::set_virtual_usb_manager_binary(
+    const std::string& virtual_usb_manager_binary) {
+  (*dictionary_)[kVirtualUsbManagerBinary] = virtual_usb_manager_binary;
+}
+
+std::string CuttlefishConfig::socket_forward_proxy_binary() const {
+  return (*dictionary_)[kSocketForwardProxyBinary].asString();
+}
+
+void CuttlefishConfig::set_socket_forward_proxy_binary(
+    const std::string& socket_forward_proxy_binary) {
+  (*dictionary_)[kSocketForwardProxyBinary] = socket_forward_proxy_binary;
+}
+
+std::string CuttlefishConfig::socket_vsock_proxy_binary() const {
+  return (*dictionary_)[kSocketVsockProxyBinary].asString();
+}
+
+void CuttlefishConfig::set_socket_vsock_proxy_binary(
+    const std::string& socket_vsock_proxy_binary) {
+  (*dictionary_)[kSocketVsockProxyBinary] = socket_vsock_proxy_binary;
+}
+
 // Creates the (initially empty) config object and populates it with values from
 // the config file if the CUTTLEFISH_CONFIG_FILE env variable is present.
 // Returns nullptr if there was an error loading from file
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index 3c3c4de..c5d5aff 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -233,6 +233,21 @@
   void set_restart_subprocesses(bool restart_subprocesses);
   bool restart_subprocesses() const;
 
+  void set_run_adb_connector(bool run_adb_connector);
+  bool run_adb_connector() const;
+
+  void set_adb_connector_binary(const std::string& adb_connector_binary);
+  std::string adb_connector_binary() const;
+
+  void set_virtual_usb_manager_binary(const std::string& binary);
+  std::string virtual_usb_manager_binary() const;
+
+  void set_socket_forward_proxy_binary(const std::string& binary);
+  std::string socket_forward_proxy_binary() const;
+
+  void set_socket_vsock_proxy_binary(const std::string& binary);
+  std::string socket_vsock_proxy_binary() const;
+
  private:
   std::unique_ptr<Json::Value> dictionary_;