summaryrefslogtreecommitdiffstats
path: root/remoting/client
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-13 00:08:02 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-13 00:08:02 +0000
commit43129860c569ddf6176858e2e010645bbadaf554 (patch)
treebbeec76e402d052e8de17b3afc82ccb28c838282 /remoting/client
parent5e557a2246cbf79caeec1dc0b0e277821c2bb1dc (diff)
downloadchromium_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.cc51
-rw-r--r--remoting/client/plugin/chromoting_instance.h2
-rw-r--r--remoting/client/plugin/chromoting_scriptable_object.cc12
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();
}