Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7087)

Unified Diff: chrome/service/service_main.cc

Issue 3110004: Revert 55507 - Start chromoting host in the service process though a method ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/service/service_process.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/service/service_main.cc
===================================================================
--- chrome/service/service_main.cc (revision 55524)
+++ chrome/service/service_main.cc (working copy)
@@ -11,6 +11,22 @@
#include "chrome/service/cloud_print/cloud_print_proxy.h"
#include "chrome/service/service_process.h"
+#if defined(ENABLE_REMOTING)
+#include "remoting/host/json_host_config.h"
+#include "remoting/host/chromoting_host.h"
+#include "remoting/host/chromoting_host_context.h"
+
+// This method is called as a signal that the Chromoting Host Process is
+// shutting down because of failure or a request made by the user.
+// We'll then post a task to |message_loop| to stop the chromoting host
+// context to finish the final cleanup.
+static void OnChromotingHostShutdown(
+ MessageLoop* message_loop, remoting::ChromotingHostContext* context) {
+ message_loop->PostTask(FROM_HERE,
+ NewRunnableMethod(context, &remoting::ChromotingHostContext::Stop));
+}
+#endif
+
// Mainline routine for running as the service process.
int ServiceProcessMain(const MainFunctionParams& parameters) {
MessageLoopForUI main_message_loop;
@@ -24,7 +40,7 @@
#endif // defined(OS_WIN)
ServiceProcess service_process;
- service_process.Initialize(&main_message_loop);
+ service_process.Initialize();
// Enable Cloud Print if needed.
if (parameters.command_line_.HasSwitch(switches::kEnableCloudPrintProxy)) {
@@ -34,7 +50,47 @@
service_process.GetCloudPrintProxy()->EnableForUser(lsid);
}
+#if defined(ENABLE_REMOTING)
+ // Enable Chromoting Host if needed.
+ // TODO(hclam): Merge this config file with Cloud Printing.
+ // TODO(hclam): There is only start but not stop of the chromoting host
+ // process.
+ FilePath user_data_dir;
+ PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
+ FilePath chromoting_config_path =
+ user_data_dir.Append(FILE_PATH_LITERAL(".ChromotingConfig.json"));
+ scoped_refptr<remoting::JsonHostConfig> chromoting_config;
+ scoped_ptr<remoting::ChromotingHostContext> chromoting_context;
+ scoped_refptr<remoting::ChromotingHost> chromoting_host;
+ if (parameters.command_line_.HasSwitch(switches::kEnableRemoting)) {
+ chromoting_config = new remoting::JsonHostConfig(
+ chromoting_config_path,
+ service_process.file_thread()->message_loop_proxy());
+ if (!chromoting_config->Read()) {
+ LOG(ERROR) << "Failed to read chromoting config file.";
+ } else {
+ chromoting_context.reset(new remoting::ChromotingHostContext());
+
+ // Create the Chromoting Host Process with the context and config.
+ chromoting_host = service_process.CreateChromotingHost(
+ chromoting_context.get(), chromoting_config);
+
+ // And start the context and the host process.
+ chromoting_context->Start();
+
+ // When ChromotingHost is shutdown because of failure or a request that
+ // we made. ShutdownChromotingTask() is calls.
+ // ShutdownChromotingTask() will then post a task to
+ // |main_message_loop| to shutdown the chromoting context.
+ chromoting_host->Start(
+ NewRunnableFunction(&OnChromotingHostShutdown,
+ &main_message_loop, chromoting_context.get()));
+ }
+ }
+#endif
+
MessageLoop::current()->Run();
service_process.Teardown();
+
return 0;
}
« no previous file with comments | « no previous file | chrome/service/service_process.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698