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

Unified Diff: remoting/host/plugin/host_script_object.h

Issue 7599017: Framework to allow Chromoting host to respect NAT traversal policy in linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 9 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
Index: remoting/host/plugin/host_script_object.h
diff --git a/remoting/host/plugin/host_script_object.h b/remoting/host/plugin/host_script_object.h
index 03d14c32c32540bb39b95a67ab367cd0bba428af..04e0daaa04ba5a454c4475881883f2c5667f82f7 100644
--- a/remoting/host/plugin/host_script_object.h
+++ b/remoting/host/plugin/host_script_object.h
@@ -34,6 +34,10 @@ class RegisterSupportHostRequest;
class SignalStrategy;
class SupportAccessVerifier;
+namespace policy_hack {
+class NatPolicy;
+} // namespace policy_hack
+
// NPAPI plugin implementation for remoting host script object.
// HostNPScriptObject creates threads that are required to run
// ChromotingHost and starts/stops the host on those threads. When
@@ -110,11 +114,17 @@ class HostNPScriptObject : public HostStatusObserver {
void ConnectInternal(const std::string& uid,
const std::string& auth_token,
const std::string& auth_service);
+ void ReadPolicyAndConnect(const std::string& uid,
+ const std::string& auth_token,
+ const std::string& auth_service);
void DisconnectInternal();
// Callback for ChromotingHost::Shutdown().
void OnShutdownFinished();
+ // Called when the nat traversal policy is updated.
+ void OnNatPolicyUpdate(bool nat_traversal_enabled);
+
// Helper function for executing InvokeDefault on an NPObject, and ignoring
// the return value.
bool InvokeAndIgnoreResult(NPObject* func,
@@ -151,6 +161,22 @@ class HostNPScriptObject : public HostStatusObserver {
base::WaitableEvent disconnected_event_;
base::CancellationFlag destructing_;
+
+ scoped_ptr<policy_hack::NatPolicy> nat_policy_;
+
+ // Host the current nat traversal policy setting.
+ bool nat_traversal_enabled_;
+
+ // Indiciates whether or not a policy has ever been read. This is to ensure
+ // that on startup, we do not accidentally start a connection before we have
+ // queried our policy restrictions.
+ bool policy_received_;
+
+ // On startup, it is possible to have Connect() called before the policy read
+ // is completed. Rather than just failing, we thunk the connection call so
+ // it can be executed after at least one successful policy read. This
+ // variable contains the thunk if it is necessary.
+ base::Closure pending_connect_;
};
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698