Index: chrome/service/service_process.h |
diff --git a/chrome/service/service_process.h b/chrome/service/service_process.h |
index ce476c65c268ad0e9e554ce922c767064df93d75..482e12a53142c3f4da693bb630d33fc779b40212 100644 |
--- a/chrome/service/service_process.h |
+++ b/chrome/service/service_process.h |
@@ -10,6 +10,7 @@ |
#include "base/scoped_ptr.h" |
#include "base/thread.h" |
#include "base/waitable_event.h" |
+#include "testing/gtest/include/gtest/gtest_prod.h" |
class CloudPrintProxy; |
class JsonPrefStore; |
@@ -21,7 +22,7 @@ class NetworkChangeNotifier; |
namespace remoting { |
class ChromotingHost; |
class ChromotingHostContext; |
-class MutableHostConfig; |
+class JsonHostConfig; |
} |
// The ServiceProcess does not inherit from ChildProcess because this |
@@ -31,7 +32,8 @@ class ServiceProcess { |
ServiceProcess(); |
~ServiceProcess(); |
- bool Initialize(); |
+ // Initialize the ServiceProcess with the message loop that it should run on. |
+ bool Initialize(MessageLoop* message_loop); |
bool Teardown(); |
// TODO(sanjeevr): Change various parts of the code such as |
// net::ProxyService::CreateSystemProxyConfigService to take in |
@@ -64,26 +66,62 @@ class ServiceProcess { |
} |
CloudPrintProxy* GetCloudPrintProxy(); |
+ |
#if defined(ENABLE_REMOTING) |
- remoting::ChromotingHost* CreateChromotingHost( |
- remoting::ChromotingHostContext* context, |
- remoting::MutableHostConfig* config); |
+ // Return the reference to the chromoting host only if it has started. |
+ remoting::ChromotingHost* GetChromotingHost() { return chromoting_host_; } |
+ |
+ // Start running the chromoting host asynchronously. |
+ // Return true if chromoting host has started. |
+ bool StartChromotingHost(); |
+ |
+ // Shutdown chromoting host. Return true if chromoting host was shutdown. |
+ // The shutdown process will happen asynchronously. |
+ bool ShutdownChromotingHost(); |
#endif |
private: |
+#if defined(ENABLE_REMOTING) |
+ FRIEND_TEST(ServiceProcessTest, RunChromoting); |
+ FRIEND_TEST(ServiceProcessTest, RunChromotingUntilShutdown); |
+ |
+ // Save authenication token to the json config file. |
+ void SaveChromotingConfig( |
+ const std::string& login, |
+ const std::string& token, |
+ const std::string& host_id, |
+ const std::string& host_name, |
+ const std::string& private_key); |
+ |
+ // Load settings for chromoting from json file. |
+ void LoadChromotingConfig(); |
+ |
+ // This method is called when chromoting is shutting down. This is virtual |
+ // for used in the test. |
+ virtual void OnChromotingHostShutdown(); |
+#endif |
+ |
scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
scoped_ptr<base::Thread> io_thread_; |
scoped_ptr<base::Thread> file_thread_; |
scoped_ptr<CloudPrintProxy> cloud_print_proxy_; |
scoped_ptr<JsonPrefStore> service_prefs_; |
scoped_ptr<ServiceIPCServer> ipc_server_; |
+ |
+#if defined(ENABLE_REMOTING) |
+ scoped_refptr<remoting::JsonHostConfig> chromoting_config_; |
+ scoped_ptr<remoting::ChromotingHostContext> chromoting_context_; |
+ scoped_refptr<remoting::ChromotingHost> chromoting_host_; |
+#endif |
// An event that will be signalled when we shutdown. |
base::WaitableEvent shutdown_event_; |
+ // The main message loop for the service process. |
+ MessageLoop* main_message_loop_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ServiceProcess); |
}; |
extern ServiceProcess* g_service_process; |
#endif // CHROME_SERVICE_SERVICE_PROCESS_H_ |
- |