Index: remoting/host/plugin/host_script_object.cc |
diff --git a/remoting/host/plugin/host_script_object.cc b/remoting/host/plugin/host_script_object.cc |
index ac8f9af8ae1cbd658f96649972e78224e23d0bc7..99f7b86c7ef80b531ab2758ba0ee32d7aa5af1ff 100644 |
--- a/remoting/host/plugin/host_script_object.cc |
+++ b/remoting/host/plugin/host_script_object.cc |
@@ -26,7 +26,7 @@ |
#include "remoting/host/pin_hash.h" |
#include "remoting/host/plugin/daemon_controller.h" |
#include "remoting/host/plugin/host_log_handler.h" |
-#include "remoting/host/policy_hack/nat_policy.h" |
+#include "remoting/host/policy_hack/policy_watcher.h" |
#include "remoting/host/register_support_host_request.h" |
#include "remoting/host/session_manager_factory.h" |
#include "remoting/jingle_glue/xmpp_signal_strategy.h" |
@@ -104,11 +104,11 @@ HostNPScriptObject::~HostNPScriptObject() { |
plugin_task_runner_->Detach(); |
// Stop listening for policy updates. |
- if (nat_policy_.get()) { |
- base::WaitableEvent nat_policy_stopped_(true, false); |
- nat_policy_->StopWatching(&nat_policy_stopped_); |
- nat_policy_stopped_.Wait(); |
- nat_policy_.reset(); |
+ if (policy_watcher_.get()) { |
+ base::WaitableEvent policy_watcher_stopped_(true, false); |
+ policy_watcher_->StopWatching(&policy_watcher_stopped_); |
+ policy_watcher_stopped_.Wait(); |
+ policy_watcher_.reset(); |
} |
if (host_context_.get()) { |
@@ -144,10 +144,10 @@ bool HostNPScriptObject::Init() { |
return false; |
} |
- nat_policy_.reset( |
- policy_hack::NatPolicy::Create(host_context_->network_task_runner())); |
- nat_policy_->StartWatching( |
- base::Bind(&HostNPScriptObject::OnNatPolicyUpdate, |
+ policy_watcher_.reset( |
+ policy_hack::PolicyWatcher::Create(host_context_->network_task_runner())); |
+ policy_watcher_->StartWatching( |
+ base::Bind(&HostNPScriptObject::OnPolicyUpdate, |
base::Unretained(this))); |
return true; |
} |
@@ -891,6 +891,23 @@ void HostNPScriptObject::OnShutdownFinished() { |
disconnected_event_.Signal(); |
} |
+void HostNPScriptObject::OnPolicyUpdate( |
+ scoped_ptr<base::DictionaryValue> policies) { |
+ if (!host_context_->network_task_runner()->BelongsToCurrentThread()) { |
+ host_context_->network_task_runner()->PostTask( |
+ FROM_HERE, |
+ base::Bind(&HostNPScriptObject::OnPolicyUpdate, |
+ base::Unretained(this), base::Passed(&policies))); |
+ return; |
+ } |
+ |
+ bool bool_value; |
+ if (policies->GetBoolean(policy_hack::PolicyWatcher::kNatPolicyName, |
+ &bool_value)) { |
+ OnNatPolicyUpdate(bool_value); |
+ } |
+} |
+ |
void HostNPScriptObject::OnNatPolicyUpdate(bool nat_traversal_enabled) { |
if (!host_context_->network_task_runner()->BelongsToCurrentThread()) { |
host_context_->network_task_runner()->PostTask( |