diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-13 00:08:02 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-13 00:08:02 +0000 |
commit | 43129860c569ddf6176858e2e010645bbadaf554 (patch) | |
tree | bbeec76e402d052e8de17b3afc82ccb28c838282 /remoting/client | |
parent | 5e557a2246cbf79caeec1dc0b0e277821c2bb1dc (diff) | |
download | chromium_src-43129860c569ddf6176858e2e010645bbadaf554.zip chromium_src-43129860c569ddf6176858e2e010645bbadaf554.tar.gz chromium_src-43129860c569ddf6176858e2e010645bbadaf554.tar.bz2 |
Add flag to use P2P Transport API.
BUG=51198
TEST=Manual
Review URL: http://codereview.chromium.org/7740061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100811 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/client')
-rw-r--r-- | remoting/client/plugin/chromoting_instance.cc | 51 | ||||
-rw-r--r-- | remoting/client/plugin/chromoting_instance.h | 2 | ||||
-rw-r--r-- | remoting/client/plugin/chromoting_scriptable_object.cc | 12 |
3 files changed, 41 insertions, 24 deletions
diff --git a/remoting/client/plugin/chromoting_instance.cc b/remoting/client/plugin/chromoting_instance.cc index bb4599f..b0d81cc 100644 --- a/remoting/client/plugin/chromoting_instance.cc +++ b/remoting/client/plugin/chromoting_instance.cc @@ -156,7 +156,7 @@ bool ChromotingInstance::Init(uint32_t argc, return true; } -void ChromotingInstance::Connect(const ClientConfig& config) { +void ChromotingInstance::Connect(const ClientConfig& config, bool use_p2p_api) { DCHECK(plugin_message_loop_->BelongsToCurrentThread()); // This can only happen at initialization if the Javascript connect call @@ -166,35 +166,42 @@ void ChromotingInstance::Connect(const ClientConfig& config) { LOG(INFO) << "Delaying connect until initial policy is read."; delayed_connect_.reset( task_factory_.NewRunnableMethod(&ChromotingInstance::Connect, - config)); + config, use_p2p_api)); return; } webkit::ppapi::PluginInstance* plugin_instance = webkit::ppapi::ResourceTracker::Get()->GetInstance(pp_instance()); - content::P2PSocketDispatcher* socket_dispatcher = - plugin_instance->delegate()->GetP2PSocketDispatcher(); - - content::IpcNetworkManager* network_manager = NULL; - content::IpcPacketSocketFactory* socket_factory = NULL; - HostResolverFactory* host_resolver_factory = NULL; - PortAllocatorSessionFactory* session_factory = - CreatePepperPortAllocatorSessionFactory( - this, plugin_message_loop_, context_.network_message_loop()); - - // If we don't have socket dispatcher for IPC (e.g. P2P API is - // disabled), then JingleSessionManager will try to use physical sockets. - if (socket_dispatcher) { - VLOG(1) << "Creating IpcNetworkManager and IpcPacketSocketFactory."; - network_manager = new content::IpcNetworkManager(socket_dispatcher); - socket_factory = new content::IpcPacketSocketFactory(socket_dispatcher); - host_resolver_factory = new IpcHostResolverFactory(socket_dispatcher); + if (use_p2p_api) { + host_connection_.reset(new protocol::ConnectionToHost( + context_.network_message_loop(), this, NULL, NULL, NULL, NULL, + enable_client_nat_traversal_)); + } else { + content::P2PSocketDispatcher* socket_dispatcher = + plugin_instance->delegate()->GetP2PSocketDispatcher(); + + content::IpcNetworkManager* network_manager = NULL; + content::IpcPacketSocketFactory* socket_factory = NULL; + HostResolverFactory* host_resolver_factory = NULL; + PortAllocatorSessionFactory* session_factory = + CreatePepperPortAllocatorSessionFactory( + this, plugin_message_loop_, context_.network_message_loop()); + + // If we don't have socket dispatcher for IPC (e.g. P2P API is + // disabled), then JingleSessionManager will try to use physical sockets. + if (socket_dispatcher) { + VLOG(1) << "Creating IpcNetworkManager and IpcPacketSocketFactory."; + network_manager = new content::IpcNetworkManager(socket_dispatcher); + socket_factory = new content::IpcPacketSocketFactory(socket_dispatcher); + host_resolver_factory = new IpcHostResolverFactory(socket_dispatcher); + } + + host_connection_.reset(new protocol::ConnectionToHost( + context_.network_message_loop(), NULL, network_manager, socket_factory, + host_resolver_factory, session_factory, enable_client_nat_traversal_)); } - host_connection_.reset(new protocol::ConnectionToHost( - context_.network_message_loop(), network_manager, socket_factory, - host_resolver_factory, session_factory, enable_client_nat_traversal_)); input_handler_.reset(new PepperInputHandler(&context_, host_connection_.get(), view_proxy_)); diff --git a/remoting/client/plugin/chromoting_instance.h b/remoting/client/plugin/chromoting_instance.h index e1b62cc..981e082 100644 --- a/remoting/client/plugin/chromoting_instance.h +++ b/remoting/client/plugin/chromoting_instance.h @@ -77,7 +77,7 @@ class ChromotingInstance : public pp::InstancePrivate { ChromotingScriptableObject* GetScriptableObject(); // Initiates and cancels connections. - void Connect(const ClientConfig& config); + void Connect(const ClientConfig& config, bool use_p2p_api); void Disconnect(); // Called by ChromotingScriptableObject to provide username and password. diff --git a/remoting/client/plugin/chromoting_scriptable_object.cc b/remoting/client/plugin/chromoting_scriptable_object.cc index 28c6303..ce63288 100644 --- a/remoting/client/plugin/chromoting_scriptable_object.cc +++ b/remoting/client/plugin/chromoting_scriptable_object.cc @@ -365,6 +365,7 @@ Var ChromotingScriptableObject::DoConnect(const std::vector<Var>& args, // host_public_key // client_jid // access_code (optional) + // use_p2p_api (optional) unsigned int arg = 0; if (!args[arg].is_string()) { *exception = Var("The host_jid must be a string."); @@ -393,6 +394,15 @@ Var ChromotingScriptableObject::DoConnect(const std::vector<Var>& args, access_code = args[arg++].AsString(); } + bool use_p2p_api = false; + if (args.size() > arg) { + if (!args[arg].is_bool()) { + *exception = Var("The use_p2p_api parameter must be a boolean."); + return Var(); + } + use_p2p_api = args[arg++].AsBool(); + } + if (args.size() != arg) { *exception = Var("Too many agruments passed to connect()."); return Var(); @@ -406,7 +416,7 @@ Var ChromotingScriptableObject::DoConnect(const std::vector<Var>& args, config.host_jid = host_jid; config.host_public_key = host_public_key; config.access_code = access_code; - instance_->Connect(config); + instance_->Connect(config, use_p2p_api); return Var(); } |