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

Side by Side Diff: remoting/host/it2me/it2me_host.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « remoting/host/it2me/it2me_host.h ('k') | remoting/host/it2me/it2me_native_messaging_host.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/host/it2me/it2me_host.h" 5 #include "remoting/host/it2me/it2me_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/callback_helpers.h" 12 #include "base/callback_helpers.h"
13 #include "base/memory/ptr_util.h"
13 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
14 #include "base/threading/platform_thread.h" 15 #include "base/threading/platform_thread.h"
15 #include "net/socket/client_socket_factory.h" 16 #include "net/socket/client_socket_factory.h"
16 #include "net/url_request/url_request_context_getter.h" 17 #include "net/url_request/url_request_context_getter.h"
17 #include "policy/policy_constants.h" 18 #include "policy/policy_constants.h"
18 #include "remoting/base/auto_thread.h" 19 #include "remoting/base/auto_thread.h"
19 #include "remoting/base/chromium_url_request.h" 20 #include "remoting/base/chromium_url_request.h"
20 #include "remoting/base/logging.h" 21 #include "remoting/base/logging.h"
21 #include "remoting/base/rsa_key_pair.h" 22 #include "remoting/base/rsa_key_pair.h"
22 #include "remoting/host/chromoting_host.h" 23 #include "remoting/host/chromoting_host.h"
(...skipping 19 matching lines...) Expand all
42 43
43 namespace { 44 namespace {
44 45
45 // This is used for tagging system event logs. 46 // This is used for tagging system event logs.
46 const char kApplicationName[] = "chromoting"; 47 const char kApplicationName[] = "chromoting";
47 const int kMaxLoginAttempts = 5; 48 const int kMaxLoginAttempts = 5;
48 49
49 } // namespace 50 } // namespace
50 51
51 It2MeHost::It2MeHost( 52 It2MeHost::It2MeHost(
52 scoped_ptr<ChromotingHostContext> host_context, 53 std::unique_ptr<ChromotingHostContext> host_context,
53 scoped_ptr<PolicyWatcher> policy_watcher, 54 std::unique_ptr<PolicyWatcher> policy_watcher,
54 scoped_ptr<It2MeConfirmationDialogFactory> confirmation_dialog_factory, 55 std::unique_ptr<It2MeConfirmationDialogFactory> confirmation_dialog_factory,
55 base::WeakPtr<It2MeHost::Observer> observer, 56 base::WeakPtr<It2MeHost::Observer> observer,
56 const XmppSignalStrategy::XmppServerConfig& xmpp_server_config, 57 const XmppSignalStrategy::XmppServerConfig& xmpp_server_config,
57 const std::string& directory_bot_jid) 58 const std::string& directory_bot_jid)
58 : host_context_(std::move(host_context)), 59 : host_context_(std::move(host_context)),
59 task_runner_(host_context_->ui_task_runner()), 60 task_runner_(host_context_->ui_task_runner()),
60 observer_(observer), 61 observer_(observer),
61 xmpp_server_config_(xmpp_server_config), 62 xmpp_server_config_(xmpp_server_config),
62 directory_bot_jid_(directory_bot_jid), 63 directory_bot_jid_(directory_bot_jid),
63 state_(kDisconnected), 64 state_(kDisconnected),
64 failed_login_attempts_(0), 65 failed_login_attempts_(0),
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 133
133 if (policy_received_) 134 if (policy_received_)
134 UpdateNatPolicy(nat_traversal_enabled_); 135 UpdateNatPolicy(nat_traversal_enabled_);
135 } 136 }
136 137
137 void It2MeHost::ShowConfirmationPrompt() { 138 void It2MeHost::ShowConfirmationPrompt() {
138 DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread()); 139 DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread());
139 140
140 SetState(kStarting, ""); 141 SetState(kStarting, "");
141 142
142 scoped_ptr<It2MeConfirmationDialog> confirmation_dialog = 143 std::unique_ptr<It2MeConfirmationDialog> confirmation_dialog =
143 confirmation_dialog_factory_->Create(); 144 confirmation_dialog_factory_->Create();
144 145
145 // TODO(dcaiafa): Remove after dialog implementations for all platforms exist. 146 // TODO(dcaiafa): Remove after dialog implementations for all platforms exist.
146 if (!confirmation_dialog) { 147 if (!confirmation_dialog) {
147 ReadPolicyAndConnect(); 148 ReadPolicyAndConnect();
148 return; 149 return;
149 } 150 }
150 151
151 confirmation_dialog_proxy_.reset( 152 confirmation_dialog_proxy_.reset(
152 new It2MeConfirmationDialogProxy(host_context_->ui_task_runner(), 153 new It2MeConfirmationDialogProxy(host_context_->ui_task_runner(),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 base::CompareCase::INSENSITIVE_ASCII)) { 203 base::CompareCase::INSENSITIVE_ASCII)) {
203 SetState(kInvalidDomainError, ""); 204 SetState(kInvalidDomainError, "");
204 return; 205 return;
205 } 206 }
206 207
207 // Generate a key pair for the Host to use. 208 // Generate a key pair for the Host to use.
208 // TODO(wez): Move this to the worker thread. 209 // TODO(wez): Move this to the worker thread.
209 host_key_pair_ = RsaKeyPair::Generate(); 210 host_key_pair_ = RsaKeyPair::Generate();
210 211
211 // Create XMPP connection. 212 // Create XMPP connection.
212 scoped_ptr<SignalStrategy> signal_strategy( 213 std::unique_ptr<SignalStrategy> signal_strategy(new XmppSignalStrategy(
213 new XmppSignalStrategy(net::ClientSocketFactory::GetDefaultFactory(), 214 net::ClientSocketFactory::GetDefaultFactory(),
214 host_context_->url_request_context_getter(), 215 host_context_->url_request_context_getter(), xmpp_server_config_));
215 xmpp_server_config_));
216 216
217 // Request registration of the host for support. 217 // Request registration of the host for support.
218 scoped_ptr<RegisterSupportHostRequest> register_request( 218 std::unique_ptr<RegisterSupportHostRequest> register_request(
219 new RegisterSupportHostRequest( 219 new RegisterSupportHostRequest(
220 signal_strategy.get(), host_key_pair_, directory_bot_jid_, 220 signal_strategy.get(), host_key_pair_, directory_bot_jid_,
221 base::Bind(&It2MeHost::OnReceivedSupportID, 221 base::Bind(&It2MeHost::OnReceivedSupportID, base::Unretained(this))));
222 base::Unretained(this))));
223 222
224 // Beyond this point nothing can fail, so save the config and request. 223 // Beyond this point nothing can fail, so save the config and request.
225 signal_strategy_ = std::move(signal_strategy); 224 signal_strategy_ = std::move(signal_strategy);
226 register_request_ = std::move(register_request); 225 register_request_ = std::move(register_request);
227 226
228 // If NAT traversal is off then limit port range to allow firewall pin-holing. 227 // If NAT traversal is off then limit port range to allow firewall pin-holing.
229 HOST_LOG << "NAT state: " << nat_traversal_enabled_; 228 HOST_LOG << "NAT state: " << nat_traversal_enabled_;
230 protocol::NetworkSettings network_settings( 229 protocol::NetworkSettings network_settings(
231 nat_traversal_enabled_ ? 230 nat_traversal_enabled_ ?
232 protocol::NetworkSettings::NAT_TRAVERSAL_FULL : 231 protocol::NetworkSettings::NAT_TRAVERSAL_FULL :
233 protocol::NetworkSettings::NAT_TRAVERSAL_DISABLED); 232 protocol::NetworkSettings::NAT_TRAVERSAL_DISABLED);
234 if (!nat_traversal_enabled_) { 233 if (!nat_traversal_enabled_) {
235 network_settings.port_range.min_port = 234 network_settings.port_range.min_port =
236 protocol::NetworkSettings::kDefaultMinPort; 235 protocol::NetworkSettings::kDefaultMinPort;
237 network_settings.port_range.max_port = 236 network_settings.port_range.max_port =
238 protocol::NetworkSettings::kDefaultMaxPort; 237 protocol::NetworkSettings::kDefaultMaxPort;
239 } 238 }
240 239
241 scoped_refptr<protocol::TransportContext> transport_context = 240 scoped_refptr<protocol::TransportContext> transport_context =
242 new protocol::TransportContext( 241 new protocol::TransportContext(
243 signal_strategy_.get(), 242 signal_strategy_.get(),
244 make_scoped_ptr(new protocol::ChromiumPortAllocatorFactory()), 243 base::WrapUnique(new protocol::ChromiumPortAllocatorFactory()),
245 make_scoped_ptr(new ChromiumUrlRequestFactory( 244 base::WrapUnique(new ChromiumUrlRequestFactory(
246 host_context_->url_request_context_getter())), 245 host_context_->url_request_context_getter())),
247 network_settings, protocol::TransportRole::SERVER); 246 network_settings, protocol::TransportRole::SERVER);
248 transport_context->set_ice_config_url( 247 transport_context->set_ice_config_url(
249 ServiceUrls::GetInstance()->ice_config_url()); 248 ServiceUrls::GetInstance()->ice_config_url());
250 249
251 scoped_ptr<protocol::SessionManager> session_manager( 250 std::unique_ptr<protocol::SessionManager> session_manager(
252 new protocol::JingleSessionManager(signal_strategy_.get())); 251 new protocol::JingleSessionManager(signal_strategy_.get()));
253 252
254 scoped_ptr<protocol::CandidateSessionConfig> protocol_config = 253 std::unique_ptr<protocol::CandidateSessionConfig> protocol_config =
255 protocol::CandidateSessionConfig::CreateDefault(); 254 protocol::CandidateSessionConfig::CreateDefault();
256 // Disable audio by default. 255 // Disable audio by default.
257 // TODO(sergeyu): Add UI to enable it. 256 // TODO(sergeyu): Add UI to enable it.
258 protocol_config->DisableAudioChannel(); 257 protocol_config->DisableAudioChannel();
259 session_manager->set_protocol_config(std::move(protocol_config)); 258 session_manager->set_protocol_config(std::move(protocol_config));
260 259
261 // Create the host. 260 // Create the host.
262 host_.reset(new ChromotingHost(desktop_environment_factory_.get(), 261 host_.reset(new ChromotingHost(desktop_environment_factory_.get(),
263 std::move(session_manager), transport_context, 262 std::move(session_manager), transport_context,
264 host_context_->audio_task_runner(), 263 host_context_->audio_task_runner(),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 309
311 SetState(kConnected, ""); 310 SetState(kConnected, "");
312 } 311 }
313 312
314 void It2MeHost::OnClientDisconnected(const std::string& jid) { 313 void It2MeHost::OnClientDisconnected(const std::string& jid) {
315 DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread()); 314 DCHECK(host_context_->network_task_runner()->BelongsToCurrentThread());
316 315
317 Shutdown(); 316 Shutdown();
318 } 317 }
319 318
320 void It2MeHost::OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies) { 319 void It2MeHost::OnPolicyUpdate(
320 std::unique_ptr<base::DictionaryValue> policies) {
321 // The policy watcher runs on the |ui_task_runner|. 321 // The policy watcher runs on the |ui_task_runner|.
322 if (!host_context_->network_task_runner()->BelongsToCurrentThread()) { 322 if (!host_context_->network_task_runner()->BelongsToCurrentThread()) {
323 host_context_->network_task_runner()->PostTask( 323 host_context_->network_task_runner()->PostTask(
324 FROM_HERE, 324 FROM_HERE,
325 base::Bind(&It2MeHost::OnPolicyUpdate, this, base::Passed(&policies))); 325 base::Bind(&It2MeHost::OnPolicyUpdate, this, base::Passed(&policies)));
326 return; 326 return;
327 } 327 }
328 328
329 bool nat_policy; 329 bool nat_policy;
330 if (policies->GetBoolean(policy::key::kRemoteAccessHostFirewallTraversal, 330 if (policies->GetBoolean(policy::key::kRemoteAccessHostFirewallTraversal,
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 473
474 std::string local_certificate = host_key_pair_->GenerateCertificate(); 474 std::string local_certificate = host_key_pair_->GenerateCertificate();
475 if (local_certificate.empty()) { 475 if (local_certificate.empty()) {
476 std::string error_message = "Failed to generate host certificate."; 476 std::string error_message = "Failed to generate host certificate.";
477 LOG(ERROR) << error_message; 477 LOG(ERROR) << error_message;
478 SetState(kError, error_message); 478 SetState(kError, error_message);
479 Shutdown(); 479 Shutdown();
480 return; 480 return;
481 } 481 }
482 482
483 scoped_ptr<protocol::AuthenticatorFactory> factory( 483 std::unique_ptr<protocol::AuthenticatorFactory> factory(
484 new protocol::It2MeHostAuthenticatorFactory( 484 new protocol::It2MeHostAuthenticatorFactory(
485 local_certificate, host_key_pair_, access_code_hash, 485 local_certificate, host_key_pair_, access_code_hash,
486 required_client_domain_)); 486 required_client_domain_));
487 host_->SetAuthenticatorFactory(std::move(factory)); 487 host_->SetAuthenticatorFactory(std::move(factory));
488 488
489 // Pass the Access Code to the script object before changing state. 489 // Pass the Access Code to the script object before changing state.
490 task_runner_->PostTask( 490 task_runner_->PostTask(
491 FROM_HERE, base::Bind(&It2MeHost::Observer::OnStoreAccessCode, 491 FROM_HERE, base::Bind(&It2MeHost::Observer::OnStoreAccessCode,
492 observer_, access_code, lifetime)); 492 observer_, access_code, lifetime));
493 493
494 SetState(kReceivedAccessCode, ""); 494 SetState(kReceivedAccessCode, "");
495 } 495 }
496 496
497 It2MeHostFactory::It2MeHostFactory() : policy_service_(nullptr) { 497 It2MeHostFactory::It2MeHostFactory() : policy_service_(nullptr) {
498 } 498 }
499 499
500 It2MeHostFactory::~It2MeHostFactory() {} 500 It2MeHostFactory::~It2MeHostFactory() {}
501 501
502 void It2MeHostFactory::set_policy_service( 502 void It2MeHostFactory::set_policy_service(
503 policy::PolicyService* policy_service) { 503 policy::PolicyService* policy_service) {
504 DCHECK(policy_service); 504 DCHECK(policy_service);
505 DCHECK(!policy_service_) << "|policy_service| can only be set once."; 505 DCHECK(!policy_service_) << "|policy_service| can only be set once.";
506 policy_service_ = policy_service; 506 policy_service_ = policy_service;
507 } 507 }
508 508
509 scoped_refptr<It2MeHost> It2MeHostFactory::CreateIt2MeHost( 509 scoped_refptr<It2MeHost> It2MeHostFactory::CreateIt2MeHost(
510 scoped_ptr<ChromotingHostContext> context, 510 std::unique_ptr<ChromotingHostContext> context,
511 base::WeakPtr<It2MeHost::Observer> observer, 511 base::WeakPtr<It2MeHost::Observer> observer,
512 const XmppSignalStrategy::XmppServerConfig& xmpp_server_config, 512 const XmppSignalStrategy::XmppServerConfig& xmpp_server_config,
513 const std::string& directory_bot_jid) { 513 const std::string& directory_bot_jid) {
514 DCHECK(context->ui_task_runner()->BelongsToCurrentThread()); 514 DCHECK(context->ui_task_runner()->BelongsToCurrentThread());
515 515
516 scoped_ptr<It2MeConfirmationDialogFactory> confirmation_dialog_factory( 516 std::unique_ptr<It2MeConfirmationDialogFactory> confirmation_dialog_factory(
517 new It2MeConfirmationDialogFactory()); 517 new It2MeConfirmationDialogFactory());
518 scoped_ptr<PolicyWatcher> policy_watcher = 518 std::unique_ptr<PolicyWatcher> policy_watcher =
519 PolicyWatcher::Create(policy_service_, context->file_task_runner()); 519 PolicyWatcher::Create(policy_service_, context->file_task_runner());
520 return new It2MeHost(std::move(context), std::move(policy_watcher), 520 return new It2MeHost(std::move(context), std::move(policy_watcher),
521 std::move(confirmation_dialog_factory), observer, 521 std::move(confirmation_dialog_factory), observer,
522 xmpp_server_config, directory_bot_jid); 522 xmpp_server_config, directory_bot_jid);
523 } 523 }
524 524
525 } // namespace remoting 525 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/it2me/it2me_host.h ('k') | remoting/host/it2me/it2me_native_messaging_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698