Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/client/plugin/chromoting_instance.h" | 5 #include "remoting/client/plugin/chromoting_instance.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 149 view_proxy_ = new PepperViewProxy(this, view_.get(), plugin_message_loop_); | 149 view_proxy_ = new PepperViewProxy(this, view_.get(), plugin_message_loop_); |
| 150 rectangle_decoder_ = new RectangleUpdateDecoder( | 150 rectangle_decoder_ = new RectangleUpdateDecoder( |
| 151 context_.decode_message_loop(), view_proxy_); | 151 context_.decode_message_loop(), view_proxy_); |
| 152 | 152 |
| 153 // Default to a medium grey. | 153 // Default to a medium grey. |
| 154 view_->SetSolidFill(0xFFCDCDCD); | 154 view_->SetSolidFill(0xFFCDCDCD); |
| 155 | 155 |
| 156 return true; | 156 return true; |
| 157 } | 157 } |
| 158 | 158 |
| 159 void ChromotingInstance::Connect(const ClientConfig& config, bool use_p2p_api) { | 159 void ChromotingInstance::Connect(const ClientConfig& config) { |
| 160 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 160 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 161 | 161 |
| 162 // This can only happen at initialization if the Javascript connect call | 162 // This can only happen at initialization if the Javascript connect call |
| 163 // occurs before the enterprise policy is read. We are guaranteed that the | 163 // occurs before the enterprise policy is read. We are guaranteed that the |
| 164 // enterprise policy is pushed at least once, we we delay the connect call. | 164 // enterprise policy is pushed at least once, we we delay the connect call. |
| 165 if (!initial_policy_received_) { | 165 if (!initial_policy_received_) { |
| 166 LOG(INFO) << "Delaying connect until initial policy is read."; | 166 LOG(INFO) << "Delaying connect until initial policy is read."; |
| 167 delayed_connect_.reset( | 167 delayed_connect_.reset( |
| 168 task_factory_.NewRunnableMethod(&ChromotingInstance::Connect, | 168 task_factory_.NewRunnableMethod(&ChromotingInstance::Connect, config)); |
| 169 config, use_p2p_api)); | |
| 170 return; | 169 return; |
| 171 } | 170 } |
| 172 | 171 |
| 173 webkit::ppapi::PluginInstance* plugin_instance = | 172 host_connection_.reset(new protocol::ConnectionToHost( |
| 174 webkit::ppapi::ResourceTracker::Get()->GetInstance(pp_instance()); | 173 context_.network_message_loop(), this, NULL, NULL, NULL, NULL, |
| 175 | 174 enable_client_nat_traversal_)); |
|
Wez
2011/09/22 11:24:56
Will the ConnectionToHost be updated in a subseque
Sergey Ulanov
2011/09/22 17:07:45
Yes.
| |
| 176 if (use_p2p_api) { | |
| 177 host_connection_.reset(new protocol::ConnectionToHost( | |
| 178 context_.network_message_loop(), this, NULL, NULL, NULL, NULL, | |
| 179 enable_client_nat_traversal_)); | |
| 180 } else { | |
| 181 content::P2PSocketDispatcher* socket_dispatcher = | |
| 182 plugin_instance->delegate()->GetP2PSocketDispatcher(); | |
| 183 | |
| 184 content::IpcNetworkManager* network_manager = NULL; | |
| 185 content::IpcPacketSocketFactory* socket_factory = NULL; | |
| 186 HostResolverFactory* host_resolver_factory = NULL; | |
| 187 PortAllocatorSessionFactory* session_factory = | |
| 188 CreatePepperPortAllocatorSessionFactory( | |
| 189 this, plugin_message_loop_, context_.network_message_loop()); | |
| 190 | |
| 191 // If we don't have socket dispatcher for IPC (e.g. P2P API is | |
| 192 // disabled), then JingleSessionManager will try to use physical sockets. | |
| 193 if (socket_dispatcher) { | |
| 194 VLOG(1) << "Creating IpcNetworkManager and IpcPacketSocketFactory."; | |
| 195 network_manager = new content::IpcNetworkManager(socket_dispatcher); | |
| 196 socket_factory = new content::IpcPacketSocketFactory(socket_dispatcher); | |
| 197 host_resolver_factory = new IpcHostResolverFactory(socket_dispatcher); | |
| 198 } | |
| 199 | |
| 200 host_connection_.reset(new protocol::ConnectionToHost( | |
| 201 context_.network_message_loop(), NULL, network_manager, socket_factory, | |
| 202 host_resolver_factory, session_factory, enable_client_nat_traversal_)); | |
| 203 } | |
| 204 | 175 |
| 205 input_handler_.reset(new PepperInputHandler(&context_, | 176 input_handler_.reset(new PepperInputHandler(&context_, |
| 206 host_connection_.get(), | 177 host_connection_.get(), |
| 207 view_proxy_)); | 178 view_proxy_)); |
| 208 | 179 |
| 209 client_.reset(new ChromotingClient(config, &context_, host_connection_.get(), | 180 client_.reset(new ChromotingClient(config, &context_, host_connection_.get(), |
| 210 view_proxy_, rectangle_decoder_.get(), | 181 view_proxy_, rectangle_decoder_.get(), |
| 211 input_handler_.get(), NULL)); | 182 input_handler_.get(), NULL)); |
| 212 | 183 |
| 213 LOG(INFO) << "Connecting."; | 184 LOG(INFO) << "Connecting."; |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 } | 526 } |
| 556 | 527 |
| 557 initial_policy_received_ = true; | 528 initial_policy_received_ = true; |
| 558 enable_client_nat_traversal_ = traversal_policy; | 529 enable_client_nat_traversal_ = traversal_policy; |
| 559 | 530 |
| 560 if (delayed_connect_.get()) | 531 if (delayed_connect_.get()) |
| 561 plugin_message_loop_->PostTask(FROM_HERE, delayed_connect_.release()); | 532 plugin_message_loop_->PostTask(FROM_HERE, delayed_connect_.release()); |
| 562 } | 533 } |
| 563 | 534 |
| 564 } // namespace remoting | 535 } // namespace remoting |
| OLD | NEW |