Index: remoting/host/it2me/it2me_host.h |
diff --git a/remoting/host/it2me/it2me_host.h b/remoting/host/it2me/it2me_host.h |
index 349232d27a1c4505ff5b5c756f3e1ff8bb68a633..b2eb7490315161f370e0c6a457688193c1280c4f 100644 |
--- a/remoting/host/it2me/it2me_host.h |
+++ b/remoting/host/it2me/it2me_host.h |
@@ -16,6 +16,10 @@ namespace base { |
class DictionaryValue; |
} |
+namespace policy { |
+class PolicyService; |
+} // namespace policy |
+ |
namespace remoting { |
class ChromotingHost; |
@@ -28,9 +32,7 @@ class RegisterSupportHostRequest; |
class RsaKeyPair; |
namespace policy_hack { |
- |
class PolicyWatcher; |
- |
} // namespace policy_hack |
// These state values are duplicated in host_session.js. Remember to update |
@@ -60,8 +62,8 @@ class It2MeHost : public base::RefCountedThreadSafe<It2MeHost>, |
}; |
It2MeHost( |
- ChromotingHostContext* context, |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
+ scoped_ptr<ChromotingHostContext> context, |
+ scoped_ptr<policy_hack::PolicyWatcher> policy_watcher, |
base::WeakPtr<It2MeHost::Observer> observer, |
const XmppSignalStrategy::XmppServerConfig& xmpp_server_config, |
const std::string& directory_bot_jid); |
@@ -91,7 +93,7 @@ class It2MeHost : public base::RefCountedThreadSafe<It2MeHost>, |
~It2MeHost() override; |
- ChromotingHostContext* host_context() { return host_context_; } |
+ ChromotingHostContext* host_context() { return host_context_.get(); } |
scoped_refptr<base::SingleThreadTaskRunner> task_runner() { |
return task_runner_; |
} |
@@ -123,6 +125,10 @@ class It2MeHost : public base::RefCountedThreadSafe<It2MeHost>, |
// the UI thread. |
void ShutdownOnUiThread(); |
+ // Called when |policy_watcher_| has stopped listening for changes and it is |
+ // safe to delete it. |
+ void OnPolicyWatcherShutdown(); |
+ |
// Called when initial policies are read, and when they change. |
void OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies); |
@@ -131,10 +137,7 @@ class It2MeHost : public base::RefCountedThreadSafe<It2MeHost>, |
void UpdateHostDomainPolicy(const std::string& host_domain); |
// Caller supplied fields. |
- |
- // The creator of the It2MeHost object owns the the host context and is |
- // responsible for keeping it alive throughout the liftime of the host. |
- ChromotingHostContext* host_context_; |
+ scoped_ptr<ChromotingHostContext> host_context_; |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
base::WeakPtr<It2MeHost::Observer> observer_; |
XmppSignalStrategy::XmppServerConfig xmpp_server_config_; |
@@ -181,14 +184,21 @@ class It2MeHostFactory { |
It2MeHostFactory(); |
virtual ~It2MeHostFactory(); |
+ // |policy_service| is used for creating the policy watcher for new |
+ // instances of It2MeHost on ChromeOS. The caller must ensure that |
+ // |policy_service| is valid throughout the lifetime of the It2MeHostFactory |
+ // and each created It2MeHost object. This is currently possible because |
+ // |policy_service| is a global singleton available from the browser process. |
+ virtual void set_policy_service(policy::PolicyService* policy_service); |
+ |
virtual scoped_refptr<It2MeHost> CreateIt2MeHost( |
- ChromotingHostContext* context, |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
+ scoped_ptr<ChromotingHostContext> context, |
base::WeakPtr<It2MeHost::Observer> observer, |
const XmppSignalStrategy::XmppServerConfig& xmpp_server_config, |
const std::string& directory_bot_jid); |
private: |
+ policy::PolicyService* policy_service_; |
DISALLOW_COPY_AND_ASSIGN(It2MeHostFactory); |
}; |