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

Side by Side Diff: remoting/host/remoting_me2me_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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // This file implements a standalone host process for Me2Me. 5 // This file implements a standalone host process for Me2Me.
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory>
10 #include <string> 11 #include <string>
11 #include <utility> 12 #include <utility>
12 13
13 #include "base/bind.h" 14 #include "base/bind.h"
14 #include "base/callback.h" 15 #include "base/callback.h"
15 #include "base/command_line.h" 16 #include "base/command_line.h"
16 #include "base/debug/alias.h" 17 #include "base/debug/alias.h"
17 #include "base/files/file_path.h" 18 #include "base/files/file_path.h"
18 #include "base/files/file_util.h" 19 #include "base/files/file_util.h"
19 #include "base/macros.h" 20 #include "base/macros.h"
20 #include "base/memory/scoped_ptr.h" 21 #include "base/memory/ptr_util.h"
21 #include "base/message_loop/message_loop.h" 22 #include "base/message_loop/message_loop.h"
22 #include "base/single_thread_task_runner.h" 23 #include "base/single_thread_task_runner.h"
23 #include "base/strings/string_number_conversions.h" 24 #include "base/strings/string_number_conversions.h"
24 #include "base/strings/string_util.h" 25 #include "base/strings/string_util.h"
25 #include "base/strings/stringize_macros.h" 26 #include "base/strings/stringize_macros.h"
26 #include "base/strings/utf_string_conversions.h" 27 #include "base/strings/utf_string_conversions.h"
27 #include "build/build_config.h" 28 #include "build/build_config.h"
28 #include "ipc/attachment_broker_unprivileged.h" 29 #include "ipc/attachment_broker_unprivileged.h"
29 #include "ipc/ipc_channel.h" 30 #include "ipc/ipc_channel.h"
30 #include "ipc/ipc_channel_proxy.h" 31 #include "ipc/ipc_channel_proxy.h"
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 bool started() const override { return done_; } 196 bool started() const override { return done_; }
196 RejectionReason rejection_reason() const override { 197 RejectionReason rejection_reason() const override {
197 NOTREACHED(); 198 NOTREACHED();
198 return INVALID_CREDENTIALS; 199 return INVALID_CREDENTIALS;
199 } 200 }
200 void ProcessMessage(const buzz::XmlElement* message, 201 void ProcessMessage(const buzz::XmlElement* message,
201 const base::Closure& resume_callback) override { 202 const base::Closure& resume_callback) override {
202 done_ = true; 203 done_ = true;
203 resume_callback.Run(); 204 resume_callback.Run();
204 } 205 }
205 scoped_ptr<buzz::XmlElement> GetNextMessage() override { 206 std::unique_ptr<buzz::XmlElement> GetNextMessage() override {
206 NOTREACHED(); 207 NOTREACHED();
207 return nullptr; 208 return nullptr;
208 } 209 }
209 const std::string& GetAuthKey() const override { return auth_key_; } 210 const std::string& GetAuthKey() const override { return auth_key_; }
210 scoped_ptr<protocol::ChannelAuthenticator> CreateChannelAuthenticator() 211 std::unique_ptr<protocol::ChannelAuthenticator> CreateChannelAuthenticator()
211 const override { 212 const override {
212 NOTREACHED(); 213 NOTREACHED();
213 return nullptr; 214 return nullptr;
214 }; 215 };
215 216
216 private: 217 private:
217 bool done_ = false; 218 bool done_ = false;
218 std::string auth_key_ = "NOKEY"; 219 std::string auth_key_ = "NOKEY";
219 }; 220 };
220 221
221 // Factory for Authenticator instances. 222 // Factory for Authenticator instances.
222 class NoopAuthenticatorFactory : public protocol::AuthenticatorFactory { 223 class NoopAuthenticatorFactory : public protocol::AuthenticatorFactory {
223 public: 224 public:
224 NoopAuthenticatorFactory() {} 225 NoopAuthenticatorFactory() {}
225 ~NoopAuthenticatorFactory() override {} 226 ~NoopAuthenticatorFactory() override {}
226 227
227 scoped_ptr<protocol::Authenticator> CreateAuthenticator( 228 std::unique_ptr<protocol::Authenticator> CreateAuthenticator(
228 const std::string& local_jid, 229 const std::string& local_jid,
229 const std::string& remote_jid) override { 230 const std::string& remote_jid) override {
230 return make_scoped_ptr(new NoopAuthenticator()); 231 return base::WrapUnique(new NoopAuthenticator());
231 } 232 }
232 }; 233 };
233 234
234 #endif // !defined(NDEBUG) 235 #endif // !defined(NDEBUG)
235 236
236 class HostProcess : public ConfigWatcher::Delegate, 237 class HostProcess : public ConfigWatcher::Delegate,
237 public HostChangeNotificationListener::Listener, 238 public HostChangeNotificationListener::Listener,
238 public IPC::Listener, 239 public IPC::Listener,
239 public base::RefCountedThreadSafe<HostProcess> { 240 public base::RefCountedThreadSafe<HostProcess> {
240 public: 241 public:
241 // |shutdown_watchdog| is armed when shutdown is started, and should be kept 242 // |shutdown_watchdog| is armed when shutdown is started, and should be kept
242 // alive as long as possible until the process exits (since destroying the 243 // alive as long as possible until the process exits (since destroying the
243 // watchdog disarms it). 244 // watchdog disarms it).
244 HostProcess(scoped_ptr<ChromotingHostContext> context, 245 HostProcess(std::unique_ptr<ChromotingHostContext> context,
245 int* exit_code_out, 246 int* exit_code_out,
246 ShutdownWatchdog* shutdown_watchdog); 247 ShutdownWatchdog* shutdown_watchdog);
247 248
248 // ConfigWatcher::Delegate interface. 249 // ConfigWatcher::Delegate interface.
249 void OnConfigUpdated(const std::string& serialized_config) override; 250 void OnConfigUpdated(const std::string& serialized_config) override;
250 void OnConfigWatcherError() override; 251 void OnConfigWatcherError() override;
251 252
252 // IPC::Listener implementation. 253 // IPC::Listener implementation.
253 bool OnMessageReceived(const IPC::Message& message) override; 254 bool OnMessageReceived(const IPC::Message& message) override;
254 void OnChannelError() override; 255 void OnChannelError() override;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 // Called on the network thread to set the host's Authenticator factory. 324 // Called on the network thread to set the host's Authenticator factory.
324 void CreateAuthenticatorFactory(); 325 void CreateAuthenticatorFactory();
325 326
326 // Tear down resources that run on the UI thread. 327 // Tear down resources that run on the UI thread.
327 void ShutdownOnUiThread(); 328 void ShutdownOnUiThread();
328 329
329 // Applies the host config, returning true if successful. 330 // Applies the host config, returning true if successful.
330 bool ApplyConfig(const base::DictionaryValue& config); 331 bool ApplyConfig(const base::DictionaryValue& config);
331 332
332 // Handles policy updates, by calling On*PolicyUpdate methods. 333 // Handles policy updates, by calling On*PolicyUpdate methods.
333 void OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies); 334 void OnPolicyUpdate(std::unique_ptr<base::DictionaryValue> policies);
334 void OnPolicyError(); 335 void OnPolicyError();
335 void ReportPolicyErrorAndRestartHost(); 336 void ReportPolicyErrorAndRestartHost();
336 void ApplyHostDomainPolicy(); 337 void ApplyHostDomainPolicy();
337 void ApplyUsernamePolicy(); 338 void ApplyUsernamePolicy();
338 bool OnClientDomainPolicyUpdate(base::DictionaryValue* policies); 339 bool OnClientDomainPolicyUpdate(base::DictionaryValue* policies);
339 bool OnHostDomainPolicyUpdate(base::DictionaryValue* policies); 340 bool OnHostDomainPolicyUpdate(base::DictionaryValue* policies);
340 bool OnUsernamePolicyUpdate(base::DictionaryValue* policies); 341 bool OnUsernamePolicyUpdate(base::DictionaryValue* policies);
341 bool OnNatPolicyUpdate(base::DictionaryValue* policies); 342 bool OnNatPolicyUpdate(base::DictionaryValue* policies);
342 bool OnRelayPolicyUpdate(base::DictionaryValue* policies); 343 bool OnRelayPolicyUpdate(base::DictionaryValue* policies);
343 bool OnUdpPortPolicyUpdate(base::DictionaryValue* policies); 344 bool OnUdpPortPolicyUpdate(base::DictionaryValue* policies);
(...skipping 30 matching lines...) Expand all
374 IPC::PlatformFileForTransit unprivileged_key); 375 IPC::PlatformFileForTransit unprivileged_key);
375 #endif // defined(OS_WIN) 376 #endif // defined(OS_WIN)
376 377
377 // Crashes the process in response to a daemon's request. The daemon passes 378 // Crashes the process in response to a daemon's request. The daemon passes
378 // the location of the code that detected the fatal error resulted in this 379 // the location of the code that detected the fatal error resulted in this
379 // request. 380 // request.
380 void OnCrash(const std::string& function_name, 381 void OnCrash(const std::string& function_name,
381 const std::string& file_name, 382 const std::string& file_name,
382 const int& line_number); 383 const int& line_number);
383 384
384 scoped_ptr<ChromotingHostContext> context_; 385 std::unique_ptr<ChromotingHostContext> context_;
385 386
386 // XMPP server/remoting bot configuration (initialized from the command line). 387 // XMPP server/remoting bot configuration (initialized from the command line).
387 XmppSignalStrategy::XmppServerConfig xmpp_server_config_; 388 XmppSignalStrategy::XmppServerConfig xmpp_server_config_;
388 std::string directory_bot_jid_; 389 std::string directory_bot_jid_;
389 390
390 // Created on the UI thread but used from the network thread. 391 // Created on the UI thread but used from the network thread.
391 base::FilePath host_config_path_; 392 base::FilePath host_config_path_;
392 std::string host_config_; 393 std::string host_config_;
393 scoped_ptr<DesktopEnvironmentFactory> desktop_environment_factory_; 394 std::unique_ptr<DesktopEnvironmentFactory> desktop_environment_factory_;
394 395
395 // Accessed on the network thread. 396 // Accessed on the network thread.
396 HostState state_ = HOST_STARTING; 397 HostState state_ = HOST_STARTING;
397 398
398 scoped_ptr<ConfigWatcher> config_watcher_; 399 std::unique_ptr<ConfigWatcher> config_watcher_;
399 400
400 std::string host_id_; 401 std::string host_id_;
401 std::string pin_hash_; 402 std::string pin_hash_;
402 scoped_refptr<RsaKeyPair> key_pair_; 403 scoped_refptr<RsaKeyPair> key_pair_;
403 std::string oauth_refresh_token_; 404 std::string oauth_refresh_token_;
404 std::string serialized_config_; 405 std::string serialized_config_;
405 std::string host_owner_; 406 std::string host_owner_;
406 std::string host_owner_email_; 407 std::string host_owner_email_;
407 bool use_service_account_ = false; 408 bool use_service_account_ = false;
408 bool enable_vp9_ = false; 409 bool enable_vp9_ = false;
409 410
410 scoped_ptr<PolicyWatcher> policy_watcher_; 411 std::unique_ptr<PolicyWatcher> policy_watcher_;
411 PolicyState policy_state_ = POLICY_INITIALIZING; 412 PolicyState policy_state_ = POLICY_INITIALIZING;
412 std::string client_domain_; 413 std::string client_domain_;
413 std::string host_domain_; 414 std::string host_domain_;
414 bool host_username_match_required_ = false; 415 bool host_username_match_required_ = false;
415 bool allow_nat_traversal_ = true; 416 bool allow_nat_traversal_ = true;
416 bool allow_relay_ = true; 417 bool allow_relay_ = true;
417 PortRange udp_port_range_; 418 PortRange udp_port_range_;
418 std::string talkgadget_prefix_; 419 std::string talkgadget_prefix_;
419 bool allow_pairing_ = true; 420 bool allow_pairing_ = true;
420 421
421 bool curtain_required_ = false; 422 bool curtain_required_ = false;
422 ThirdPartyAuthConfig third_party_auth_config_; 423 ThirdPartyAuthConfig third_party_auth_config_;
423 bool gnubby_auth_policy_enabled_ = false; 424 bool gnubby_auth_policy_enabled_ = false;
424 bool gnubby_extension_supported_ = false; 425 bool gnubby_extension_supported_ = false;
425 426
426 // Boolean to change flow, where necessary, if we're 427 // Boolean to change flow, where necessary, if we're
427 // capturing a window instead of the entire desktop. 428 // capturing a window instead of the entire desktop.
428 bool enable_window_capture_ = false; 429 bool enable_window_capture_ = false;
429 430
430 // Used to specify which window to stream, if enabled. 431 // Used to specify which window to stream, if enabled.
431 webrtc::WindowId window_id_ = 0; 432 webrtc::WindowId window_id_ = 0;
432 433
433 // Must outlive |gcd_state_updater_| and |signaling_connector_|. 434 // Must outlive |gcd_state_updater_| and |signaling_connector_|.
434 scoped_ptr<OAuthTokenGetter> oauth_token_getter_; 435 std::unique_ptr<OAuthTokenGetter> oauth_token_getter_;
435 436
436 // Must outlive |signaling_connector_|, |gcd_subscriber_|, and 437 // Must outlive |signaling_connector_|, |gcd_subscriber_|, and
437 // |heartbeat_sender_|. 438 // |heartbeat_sender_|.
438 scoped_ptr<SignalStrategy> signal_strategy_; 439 std::unique_ptr<SignalStrategy> signal_strategy_;
439 440
440 scoped_ptr<SignalingConnector> signaling_connector_; 441 std::unique_ptr<SignalingConnector> signaling_connector_;
441 scoped_ptr<HeartbeatSender> heartbeat_sender_; 442 std::unique_ptr<HeartbeatSender> heartbeat_sender_;
442 #if defined(USE_GCD) 443 #if defined(USE_GCD)
443 scoped_ptr<GcdStateUpdater> gcd_state_updater_; 444 std::unique_ptr<GcdStateUpdater> gcd_state_updater_;
444 scoped_ptr<PushNotificationSubscriber> gcd_subscriber_; 445 std::unique_ptr<PushNotificationSubscriber> gcd_subscriber_;
445 #endif // defined(USE_GCD) 446 #endif // defined(USE_GCD)
446 447
447 scoped_ptr<HostChangeNotificationListener> host_change_notification_listener_; 448 std::unique_ptr<HostChangeNotificationListener>
448 scoped_ptr<HostStatusLogger> host_status_logger_; 449 host_change_notification_listener_;
449 scoped_ptr<HostEventLogger> host_event_logger_; 450 std::unique_ptr<HostStatusLogger> host_status_logger_;
451 std::unique_ptr<HostEventLogger> host_event_logger_;
450 452
451 scoped_ptr<ChromotingHost> host_; 453 std::unique_ptr<ChromotingHost> host_;
452 454
453 // Used to keep this HostProcess alive until it is shutdown. 455 // Used to keep this HostProcess alive until it is shutdown.
454 scoped_refptr<HostProcess> self_; 456 scoped_refptr<HostProcess> self_;
455 457
456 #if defined(REMOTING_MULTI_PROCESS) 458 #if defined(REMOTING_MULTI_PROCESS)
457 // Accessed on the UI thread. 459 // Accessed on the UI thread.
458 scoped_ptr<IPC::ChannelProxy> daemon_channel_; 460 std::unique_ptr<IPC::ChannelProxy> daemon_channel_;
459 461
460 // Owned as |desktop_environment_factory_|. 462 // Owned as |desktop_environment_factory_|.
461 DesktopSessionConnector* desktop_session_connector_ = nullptr; 463 DesktopSessionConnector* desktop_session_connector_ = nullptr;
462 #endif // defined(REMOTING_MULTI_PROCESS) 464 #endif // defined(REMOTING_MULTI_PROCESS)
463 465
464 int* exit_code_out_; 466 int* exit_code_out_;
465 bool signal_parent_ = false; 467 bool signal_parent_ = false;
466 468
467 scoped_refptr<PairingRegistry> pairing_registry_; 469 scoped_refptr<PairingRegistry> pairing_registry_;
468 470
469 ShutdownWatchdog* shutdown_watchdog_; 471 ShutdownWatchdog* shutdown_watchdog_;
470 472
471 DISALLOW_COPY_AND_ASSIGN(HostProcess); 473 DISALLOW_COPY_AND_ASSIGN(HostProcess);
472 }; 474 };
473 475
474 HostProcess::HostProcess(scoped_ptr<ChromotingHostContext> context, 476 HostProcess::HostProcess(std::unique_ptr<ChromotingHostContext> context,
475 int* exit_code_out, 477 int* exit_code_out,
476 ShutdownWatchdog* shutdown_watchdog) 478 ShutdownWatchdog* shutdown_watchdog)
477 : context_(std::move(context)), 479 : context_(std::move(context)),
478 self_(this), 480 self_(this),
479 exit_code_out_(exit_code_out), 481 exit_code_out_(exit_code_out),
480 shutdown_watchdog_(shutdown_watchdog) { 482 shutdown_watchdog_(shutdown_watchdog) {
481 StartOnUiThread(); 483 StartOnUiThread();
482 } 484 }
483 485
484 HostProcess::~HostProcess() { 486 HostProcess::~HostProcess() {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 if (broker && !broker->IsPrivilegedBroker()) 531 if (broker && !broker->IsPrivilegedBroker())
530 broker->RegisterBrokerCommunicationChannel(daemon_channel_.get()); 532 broker->RegisterBrokerCommunicationChannel(daemon_channel_.get());
531 533
532 #else // !defined(REMOTING_MULTI_PROCESS) 534 #else // !defined(REMOTING_MULTI_PROCESS)
533 if (cmd_line->HasSwitch(kHostConfigSwitchName)) { 535 if (cmd_line->HasSwitch(kHostConfigSwitchName)) {
534 host_config_path_ = cmd_line->GetSwitchValuePath(kHostConfigSwitchName); 536 host_config_path_ = cmd_line->GetSwitchValuePath(kHostConfigSwitchName);
535 537
536 // Read config from stdin if necessary. 538 // Read config from stdin if necessary.
537 if (host_config_path_ == base::FilePath(kStdinConfigPath)) { 539 if (host_config_path_ == base::FilePath(kStdinConfigPath)) {
538 const size_t kBufferSize = 4096; 540 const size_t kBufferSize = 4096;
539 scoped_ptr<char[]> buf(new char[kBufferSize]); 541 std::unique_ptr<char[]> buf(new char[kBufferSize]);
540 size_t len; 542 size_t len;
541 while ((len = fread(buf.get(), 1, kBufferSize, stdin)) > 0) { 543 while ((len = fread(buf.get(), 1, kBufferSize, stdin)) > 0) {
542 host_config_.append(buf.get(), len); 544 host_config_.append(buf.get(), len);
543 } 545 }
544 } 546 }
545 } else { 547 } else {
546 base::FilePath default_config_dir = remoting::GetConfigDir(); 548 base::FilePath default_config_dir = remoting::GetConfigDir();
547 host_config_path_ = default_config_dir.Append(kDefaultHostConfigFile); 549 host_config_path_ = default_config_dir.Append(kDefaultHostConfigFile);
548 } 550 }
549 551
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 return; 606 return;
605 } 607 }
606 608
607 // Filter out duplicates. 609 // Filter out duplicates.
608 if (serialized_config_ == serialized_config) 610 if (serialized_config_ == serialized_config)
609 return; 611 return;
610 612
611 HOST_LOG << "Processing new host configuration."; 613 HOST_LOG << "Processing new host configuration.";
612 614
613 serialized_config_ = serialized_config; 615 serialized_config_ = serialized_config;
614 scoped_ptr<base::DictionaryValue> config( 616 std::unique_ptr<base::DictionaryValue> config(
615 HostConfigFromJson(serialized_config)); 617 HostConfigFromJson(serialized_config));
616 if (!config) { 618 if (!config) {
617 LOG(ERROR) << "Invalid configuration."; 619 LOG(ERROR) << "Invalid configuration.";
618 ShutdownHost(kInvalidHostConfigurationExitCode); 620 ShutdownHost(kInvalidHostConfigurationExitCode);
619 return; 621 return;
620 } 622 }
621 623
622 if (!ApplyConfig(*config)) { 624 if (!ApplyConfig(*config)) {
623 LOG(ERROR) << "Failed to apply the configuration."; 625 LOG(ERROR) << "Failed to apply the configuration.";
624 ShutdownHost(kInvalidHostConfigurationExitCode); 626 ShutdownHost(kInvalidHostConfigurationExitCode);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 if (state_ != HOST_STARTED) 735 if (state_ != HOST_STARTED)
734 return; 736 return;
735 737
736 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 738 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
737 kDisableAuthenticationSwitchName)) { 739 kDisableAuthenticationSwitchName)) {
738 #if defined(NDEBUG) 740 #if defined(NDEBUG)
739 LOG(ERROR) << "Authentication can be disabled only in debug builds."; 741 LOG(ERROR) << "Authentication can be disabled only in debug builds.";
740 ShutdownHost(kInitializationFailed); 742 ShutdownHost(kInitializationFailed);
741 #else // defined(NDEBUG) 743 #else // defined(NDEBUG)
742 host_->SetAuthenticatorFactory( 744 host_->SetAuthenticatorFactory(
743 make_scoped_ptr(new NoopAuthenticatorFactory())); 745 base::WrapUnique(new NoopAuthenticatorFactory()));
744 #endif // !defined(NDEBUG) 746 #endif // !defined(NDEBUG)
745 return; 747 return;
746 } 748 }
747 749
748 std::string local_certificate = key_pair_->GenerateCertificate(); 750 std::string local_certificate = key_pair_->GenerateCertificate();
749 if (local_certificate.empty()) { 751 if (local_certificate.empty()) {
750 LOG(ERROR) << "Failed to generate host certificate."; 752 LOG(ERROR) << "Failed to generate host certificate.";
751 ShutdownHost(kInitializationFailed); 753 ShutdownHost(kInitializationFailed);
752 return; 754 return;
753 } 755 }
754 756
755 scoped_ptr<protocol::AuthenticatorFactory> factory; 757 std::unique_ptr<protocol::AuthenticatorFactory> factory;
756 758
757 if (third_party_auth_config_.is_null()) { 759 if (third_party_auth_config_.is_null()) {
758 scoped_refptr<PairingRegistry> pairing_registry; 760 scoped_refptr<PairingRegistry> pairing_registry;
759 if (allow_pairing_) { 761 if (allow_pairing_) {
760 // On Windows |pairing_registry_| is initialized in 762 // On Windows |pairing_registry_| is initialized in
761 // InitializePairingRegistry(). 763 // InitializePairingRegistry().
762 #if !defined(OS_WIN) 764 #if !defined(OS_WIN)
763 if (!pairing_registry_) { 765 if (!pairing_registry_) {
764 scoped_ptr<PairingRegistry::Delegate> delegate = 766 std::unique_ptr<PairingRegistry::Delegate> delegate =
765 CreatePairingRegistryDelegate(); 767 CreatePairingRegistryDelegate();
766 768
767 if (delegate) 769 if (delegate)
768 pairing_registry_ = new PairingRegistry(context_->file_task_runner(), 770 pairing_registry_ = new PairingRegistry(context_->file_task_runner(),
769 std::move(delegate)); 771 std::move(delegate));
770 } 772 }
771 #endif // defined(OS_WIN) 773 #endif // defined(OS_WIN)
772 774
773 pairing_registry = pairing_registry_; 775 pairing_registry = pairing_registry_;
774 } 776 }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 // |privileged_key| can be nullptr but not |unprivileged_key|. 971 // |privileged_key| can be nullptr but not |unprivileged_key|.
970 DCHECK(unprivileged_key.IsValid()); 972 DCHECK(unprivileged_key.IsValid());
971 // |pairing_registry_| should only be initialized once. 973 // |pairing_registry_| should only be initialized once.
972 DCHECK(!pairing_registry_); 974 DCHECK(!pairing_registry_);
973 975
974 HKEY privileged_hkey = reinterpret_cast<HKEY>( 976 HKEY privileged_hkey = reinterpret_cast<HKEY>(
975 IPC::PlatformFileForTransitToPlatformFile(privileged_key)); 977 IPC::PlatformFileForTransitToPlatformFile(privileged_key));
976 HKEY unprivileged_hkey = reinterpret_cast<HKEY>( 978 HKEY unprivileged_hkey = reinterpret_cast<HKEY>(
977 IPC::PlatformFileForTransitToPlatformFile(unprivileged_key)); 979 IPC::PlatformFileForTransitToPlatformFile(unprivileged_key));
978 980
979 scoped_ptr<PairingRegistryDelegateWin> delegate( 981 std::unique_ptr<PairingRegistryDelegateWin> delegate(
980 new PairingRegistryDelegateWin()); 982 new PairingRegistryDelegateWin());
981 delegate->SetRootKeys(privileged_hkey, unprivileged_hkey); 983 delegate->SetRootKeys(privileged_hkey, unprivileged_hkey);
982 984
983 pairing_registry_ = new PairingRegistry(context_->file_task_runner(), 985 pairing_registry_ = new PairingRegistry(context_->file_task_runner(),
984 std::move(delegate)); 986 std::move(delegate));
985 987
986 // (Re)Create the authenticator factory now that |pairing_registry_| has been 988 // (Re)Create the authenticator factory now that |pairing_registry_| has been
987 // initialized. 989 // initialized.
988 CreateAuthenticatorFactory(); 990 CreateAuthenticatorFactory();
989 } 991 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 // Allow offering of VP9 encoding to be overridden by the command-line. 1045 // Allow offering of VP9 encoding to be overridden by the command-line.
1044 if (base::CommandLine::ForCurrentProcess()->HasSwitch(kEnableVp9SwitchName)) { 1046 if (base::CommandLine::ForCurrentProcess()->HasSwitch(kEnableVp9SwitchName)) {
1045 enable_vp9_ = true; 1047 enable_vp9_ = true;
1046 } else { 1048 } else {
1047 config.GetBoolean(kEnableVp9ConfigPath, &enable_vp9_); 1049 config.GetBoolean(kEnableVp9ConfigPath, &enable_vp9_);
1048 } 1050 }
1049 1051
1050 return true; 1052 return true;
1051 } 1053 }
1052 1054
1053 void HostProcess::OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies) { 1055 void HostProcess::OnPolicyUpdate(
1056 std::unique_ptr<base::DictionaryValue> policies) {
1054 if (!context_->network_task_runner()->BelongsToCurrentThread()) { 1057 if (!context_->network_task_runner()->BelongsToCurrentThread()) {
1055 context_->network_task_runner()->PostTask( 1058 context_->network_task_runner()->PostTask(
1056 FROM_HERE, base::Bind(&HostProcess::OnPolicyUpdate, this, 1059 FROM_HERE, base::Bind(&HostProcess::OnPolicyUpdate, this,
1057 base::Passed(&policies))); 1060 base::Passed(&policies)));
1058 return; 1061 return;
1059 } 1062 }
1060 1063
1061 bool restart_required = false; 1064 bool restart_required = false;
1062 restart_required |= OnClientDomainPolicyUpdate(policies.get()); 1065 restart_required |= OnClientDomainPolicyUpdate(policies.get());
1063 restart_required |= OnHostDomainPolicyUpdate(policies.get()); 1066 restart_required |= OnHostDomainPolicyUpdate(policies.get());
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 #endif // defined(USE_GCD) 1387 #endif // defined(USE_GCD)
1385 DCHECK(!heartbeat_sender_); 1388 DCHECK(!heartbeat_sender_);
1386 1389
1387 // Create SignalStrategy. 1390 // Create SignalStrategy.
1388 XmppSignalStrategy* xmpp_signal_strategy = new XmppSignalStrategy( 1391 XmppSignalStrategy* xmpp_signal_strategy = new XmppSignalStrategy(
1389 net::ClientSocketFactory::GetDefaultFactory(), 1392 net::ClientSocketFactory::GetDefaultFactory(),
1390 context_->url_request_context_getter(), xmpp_server_config_); 1393 context_->url_request_context_getter(), xmpp_server_config_);
1391 signal_strategy_.reset(xmpp_signal_strategy); 1394 signal_strategy_.reset(xmpp_signal_strategy);
1392 1395
1393 // Create SignalingConnector. 1396 // Create SignalingConnector.
1394 scoped_ptr<DnsBlackholeChecker> dns_blackhole_checker(new DnsBlackholeChecker( 1397 std::unique_ptr<DnsBlackholeChecker> dns_blackhole_checker(
1395 context_->url_request_context_getter(), talkgadget_prefix_)); 1398 new DnsBlackholeChecker(context_->url_request_context_getter(),
1396 scoped_ptr<OAuthTokenGetter::OAuthCredentials> oauth_credentials( 1399 talkgadget_prefix_));
1400 std::unique_ptr<OAuthTokenGetter::OAuthCredentials> oauth_credentials(
1397 new OAuthTokenGetter::OAuthCredentials(xmpp_server_config_.username, 1401 new OAuthTokenGetter::OAuthCredentials(xmpp_server_config_.username,
1398 oauth_refresh_token_, 1402 oauth_refresh_token_,
1399 use_service_account_)); 1403 use_service_account_));
1400 oauth_token_getter_.reset( 1404 oauth_token_getter_.reset(
1401 new OAuthTokenGetterImpl(std::move(oauth_credentials), 1405 new OAuthTokenGetterImpl(std::move(oauth_credentials),
1402 context_->url_request_context_getter(), false)); 1406 context_->url_request_context_getter(), false));
1403 signaling_connector_.reset(new SignalingConnector( 1407 signaling_connector_.reset(new SignalingConnector(
1404 xmpp_signal_strategy, std::move(dns_blackhole_checker), 1408 xmpp_signal_strategy, std::move(dns_blackhole_checker),
1405 oauth_token_getter_.get(), 1409 oauth_token_getter_.get(),
1406 base::Bind(&HostProcess::OnAuthFailed, base::Unretained(this)))); 1410 base::Bind(&HostProcess::OnAuthFailed, base::Unretained(this))));
1407 1411
1408 #if defined(USE_GCD) 1412 #if defined(USE_GCD)
1409 // Create objects to manage GCD state. 1413 // Create objects to manage GCD state.
1410 ServiceUrls* service_urls = ServiceUrls::GetInstance(); 1414 ServiceUrls* service_urls = ServiceUrls::GetInstance();
1411 scoped_ptr<GcdRestClient> gcd_rest_client(new GcdRestClient( 1415 std::unique_ptr<GcdRestClient> gcd_rest_client(new GcdRestClient(
1412 service_urls->gcd_base_url(), host_id_, 1416 service_urls->gcd_base_url(), host_id_,
1413 context_->url_request_context_getter(), oauth_token_getter_.get())); 1417 context_->url_request_context_getter(), oauth_token_getter_.get()));
1414 gcd_state_updater_.reset(new GcdStateUpdater( 1418 gcd_state_updater_.reset(new GcdStateUpdater(
1415 base::Bind(&HostProcess::OnHeartbeatSuccessful, base::Unretained(this)), 1419 base::Bind(&HostProcess::OnHeartbeatSuccessful, base::Unretained(this)),
1416 base::Bind(&HostProcess::OnUnknownHostIdError, base::Unretained(this)), 1420 base::Bind(&HostProcess::OnUnknownHostIdError, base::Unretained(this)),
1417 signal_strategy_.get(), std::move(gcd_rest_client))); 1421 signal_strategy_.get(), std::move(gcd_rest_client)));
1418 PushNotificationSubscriber::Subscription sub; 1422 PushNotificationSubscriber::Subscription sub;
1419 sub.channel = "cloud_devices"; 1423 sub.channel = "cloud_devices";
1420 PushNotificationSubscriber::SubscriptionList subs; 1424 PushNotificationSubscriber::SubscriptionList subs;
1421 subs.push_back(sub); 1425 subs.push_back(sub);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 // For legacy reasons we have to restrict the port range to a set of default 1472 // For legacy reasons we have to restrict the port range to a set of default
1469 // values when nat traversal is disabled, even if the port range was not 1473 // values when nat traversal is disabled, even if the port range was not
1470 // set in policy. 1474 // set in policy.
1471 network_settings.port_range.min_port = NetworkSettings::kDefaultMinPort; 1475 network_settings.port_range.min_port = NetworkSettings::kDefaultMinPort;
1472 network_settings.port_range.max_port = NetworkSettings::kDefaultMaxPort; 1476 network_settings.port_range.max_port = NetworkSettings::kDefaultMaxPort;
1473 } 1477 }
1474 1478
1475 scoped_refptr<protocol::TransportContext> transport_context = 1479 scoped_refptr<protocol::TransportContext> transport_context =
1476 new protocol::TransportContext( 1480 new protocol::TransportContext(
1477 signal_strategy_.get(), 1481 signal_strategy_.get(),
1478 make_scoped_ptr(new protocol::ChromiumPortAllocatorFactory()), 1482 base::WrapUnique(new protocol::ChromiumPortAllocatorFactory()),
1479 make_scoped_ptr(new ChromiumUrlRequestFactory( 1483 base::WrapUnique(new ChromiumUrlRequestFactory(
1480 context_->url_request_context_getter())), 1484 context_->url_request_context_getter())),
1481 network_settings, protocol::TransportRole::SERVER); 1485 network_settings, protocol::TransportRole::SERVER);
1482 transport_context->set_ice_config_url( 1486 transport_context->set_ice_config_url(
1483 ServiceUrls::GetInstance()->ice_config_url()); 1487 ServiceUrls::GetInstance()->ice_config_url());
1484 1488
1485 scoped_ptr<protocol::SessionManager> session_manager( 1489 std::unique_ptr<protocol::SessionManager> session_manager(
1486 new protocol::JingleSessionManager(signal_strategy_.get())); 1490 new protocol::JingleSessionManager(signal_strategy_.get()));
1487 1491
1488 scoped_ptr<protocol::CandidateSessionConfig> protocol_config = 1492 std::unique_ptr<protocol::CandidateSessionConfig> protocol_config =
1489 protocol::CandidateSessionConfig::CreateDefault(); 1493 protocol::CandidateSessionConfig::CreateDefault();
1490 if (!desktop_environment_factory_->SupportsAudioCapture()) 1494 if (!desktop_environment_factory_->SupportsAudioCapture())
1491 protocol_config->DisableAudioChannel(); 1495 protocol_config->DisableAudioChannel();
1492 if (enable_vp9_) 1496 if (enable_vp9_)
1493 protocol_config->set_vp9_experiment_enabled(true); 1497 protocol_config->set_vp9_experiment_enabled(true);
1494 protocol_config->set_webrtc_supported(true); 1498 protocol_config->set_webrtc_supported(true);
1495 session_manager->set_protocol_config(std::move(protocol_config)); 1499 session_manager->set_protocol_config(std::move(protocol_config));
1496 1500
1497 host_.reset(new ChromotingHost(desktop_environment_factory_.get(), 1501 host_.reset(new ChromotingHost(desktop_environment_factory_.get(),
1498 std::move(session_manager), transport_context, 1502 std::move(session_manager), transport_context,
1499 context_->audio_task_runner(), 1503 context_->audio_task_runner(),
1500 context_->video_encode_task_runner())); 1504 context_->video_encode_task_runner()));
1501 1505
1502 if (gnubby_auth_policy_enabled_ && gnubby_extension_supported_) { 1506 if (gnubby_auth_policy_enabled_ && gnubby_extension_supported_) {
1503 host_->AddExtension(make_scoped_ptr(new GnubbyExtension())); 1507 host_->AddExtension(base::WrapUnique(new GnubbyExtension()));
1504 } 1508 }
1505 1509
1506 // TODO(simonmorris): Get the maximum session duration from a policy. 1510 // TODO(simonmorris): Get the maximum session duration from a policy.
1507 #if defined(OS_LINUX) 1511 #if defined(OS_LINUX)
1508 host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20)); 1512 host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
1509 #endif 1513 #endif
1510 1514
1511 host_change_notification_listener_.reset(new HostChangeNotificationListener( 1515 host_change_notification_listener_.reset(new HostChangeNotificationListener(
1512 this, host_id_, signal_strategy_.get(), directory_bot_jid_)); 1516 this, host_id_, signal_strategy_.get(), directory_bot_jid_));
1513 1517
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 // network thread. base::GetLinuxDistro() caches the result. 1676 // network thread. base::GetLinuxDistro() caches the result.
1673 base::GetLinuxDistro(); 1677 base::GetLinuxDistro();
1674 #endif 1678 #endif
1675 1679
1676 // Enable support for SSL server sockets, which must be done while still 1680 // Enable support for SSL server sockets, which must be done while still
1677 // single-threaded. 1681 // single-threaded.
1678 net::EnableSSLServerSockets(); 1682 net::EnableSSLServerSockets();
1679 1683
1680 // Create the main message loop and start helper threads. 1684 // Create the main message loop and start helper threads.
1681 base::MessageLoopForUI message_loop; 1685 base::MessageLoopForUI message_loop;
1682 scoped_ptr<ChromotingHostContext> context = ChromotingHostContext::Create( 1686 std::unique_ptr<ChromotingHostContext> context =
1683 new AutoThreadTaskRunner(message_loop.task_runner(), 1687 ChromotingHostContext::Create(
1684 base::MessageLoop::QuitWhenIdleClosure())); 1688 new AutoThreadTaskRunner(message_loop.task_runner(),
1689 base::MessageLoop::QuitWhenIdleClosure()));
1685 if (!context) 1690 if (!context)
1686 return kInitializationFailed; 1691 return kInitializationFailed;
1687 1692
1688 // NetworkChangeNotifier must be initialized after MessageLoop. 1693 // NetworkChangeNotifier must be initialized after MessageLoop.
1689 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier( 1694 std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier(
1690 net::NetworkChangeNotifier::Create()); 1695 net::NetworkChangeNotifier::Create());
1691 1696
1692 // Create & start the HostProcess using these threads. 1697 // Create & start the HostProcess using these threads.
1693 // TODO(wez): The HostProcess holds a reference to itself until Shutdown(). 1698 // TODO(wez): The HostProcess holds a reference to itself until Shutdown().
1694 // Remove this hack as part of the multi-process refactoring. 1699 // Remove this hack as part of the multi-process refactoring.
1695 int exit_code = kSuccessExitCode; 1700 int exit_code = kSuccessExitCode;
1696 ShutdownWatchdog shutdown_watchdog( 1701 ShutdownWatchdog shutdown_watchdog(
1697 base::TimeDelta::FromSeconds(kShutdownTimeoutSeconds)); 1702 base::TimeDelta::FromSeconds(kShutdownTimeoutSeconds));
1698 new HostProcess(std::move(context), &exit_code, &shutdown_watchdog); 1703 new HostProcess(std::move(context), &exit_code, &shutdown_watchdog);
1699 1704
1700 // Run the main (also UI) message loop until the host no longer needs it. 1705 // Run the main (also UI) message loop until the host no longer needs it.
1701 message_loop.Run(); 1706 message_loop.Run();
1702 1707
1703 return exit_code; 1708 return exit_code;
1704 } 1709 }
1705 1710
1706 } // namespace remoting 1711 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/register_support_host_request_unittest.cc ('k') | remoting/host/resizing_host_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698