| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 5 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 *thread = jingle_glue::JingleThreadWrapper::current(); | 649 *thread = jingle_glue::JingleThreadWrapper::current(); |
| 650 event->Signal(); | 650 event->Signal(); |
| 651 } | 651 } |
| 652 | 652 |
| 653 void PeerConnectionDependencyFactory::TryScheduleStunProbeTrial() { | 653 void PeerConnectionDependencyFactory::TryScheduleStunProbeTrial() { |
| 654 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | 654 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| 655 | 655 |
| 656 if (!cmd_line->HasSwitch(switches::kWebRtcStunProbeTrialParameter)) | 656 if (!cmd_line->HasSwitch(switches::kWebRtcStunProbeTrialParameter)) |
| 657 return; | 657 return; |
| 658 | 658 |
| 659 GetPcFactory(); | |
| 660 | |
| 661 // The underneath IPC channel has to be connected before sending any IPC | 659 // The underneath IPC channel has to be connected before sending any IPC |
| 662 // message. | 660 // message. |
| 663 if (!p2p_socket_dispatcher_->connected()) { | 661 if (!p2p_socket_dispatcher_->connected()) { |
| 664 base::MessageLoop::current()->PostDelayedTask( | 662 base::MessageLoop::current()->PostDelayedTask( |
| 665 FROM_HERE, | 663 FROM_HERE, |
| 666 base::Bind(&PeerConnectionDependencyFactory::TryScheduleStunProbeTrial, | 664 base::Bind(&PeerConnectionDependencyFactory::TryScheduleStunProbeTrial, |
| 667 base::Unretained(this)), | 665 base::Unretained(this)), |
| 668 base::TimeDelta::FromSeconds(1)); | 666 base::TimeDelta::FromSeconds(1)); |
| 669 return; | 667 return; |
| 670 } | 668 } |
| 671 | 669 |
| 670 // GetPcFactory could trigger an IPC message. If done before |
| 671 // |p2p_socket_dispatcher_| is connected, that'll put the |
| 672 // |p2p_socket_dispatcher_| in a bad state such that no other IPC message can |
| 673 // be processed. |
| 674 GetPcFactory(); |
| 675 |
| 672 const std::string params = | 676 const std::string params = |
| 673 cmd_line->GetSwitchValueASCII(switches::kWebRtcStunProbeTrialParameter); | 677 cmd_line->GetSwitchValueASCII(switches::kWebRtcStunProbeTrialParameter); |
| 674 | 678 |
| 675 chrome_worker_thread_.task_runner()->PostDelayedTask( | 679 chrome_worker_thread_.task_runner()->PostDelayedTask( |
| 676 FROM_HERE, | 680 FROM_HERE, |
| 677 base::Bind( | 681 base::Bind( |
| 678 &PeerConnectionDependencyFactory::StartStunProbeTrialOnWorkerThread, | 682 &PeerConnectionDependencyFactory::StartStunProbeTrialOnWorkerThread, |
| 679 base::Unretained(this), params), | 683 base::Unretained(this), params), |
| 680 base::TimeDelta::FromMilliseconds(kExperimentStartDelayMs)); | 684 base::TimeDelta::FromMilliseconds(kExperimentStartDelayMs)); |
| 681 } | 685 } |
| 682 | 686 |
| 683 void PeerConnectionDependencyFactory::StartStunProbeTrialOnWorkerThread( | 687 void PeerConnectionDependencyFactory::StartStunProbeTrialOnWorkerThread( |
| 684 const std::string& params) { | 688 const std::string& params) { |
| 689 DCHECK(network_manager_); |
| 685 DCHECK(chrome_worker_thread_.task_runner()->BelongsToCurrentThread()); | 690 DCHECK(chrome_worker_thread_.task_runner()->BelongsToCurrentThread()); |
| 686 rtc::NetworkManager::NetworkList networks; | 691 stun_trial_.reset( |
| 687 network_manager_->GetNetworks(&networks); | 692 new StunProberTrial(network_manager_, params, socket_factory_.get())); |
| 688 stun_prober_ = StartStunProbeTrial(networks, params, socket_factory_.get()); | |
| 689 } | 693 } |
| 690 | 694 |
| 691 void PeerConnectionDependencyFactory::CreateIpcNetworkManagerOnWorkerThread( | 695 void PeerConnectionDependencyFactory::CreateIpcNetworkManagerOnWorkerThread( |
| 692 base::WaitableEvent* event) { | 696 base::WaitableEvent* event) { |
| 693 DCHECK(chrome_worker_thread_.task_runner()->BelongsToCurrentThread()); | 697 DCHECK(chrome_worker_thread_.task_runner()->BelongsToCurrentThread()); |
| 694 network_manager_ = new IpcNetworkManager(p2p_socket_dispatcher_.get()); | 698 network_manager_ = new IpcNetworkManager(p2p_socket_dispatcher_.get()); |
| 695 event->Signal(); | 699 event->Signal(); |
| 696 } | 700 } |
| 697 | 701 |
| 698 void PeerConnectionDependencyFactory::DeleteIpcNetworkManager() { | 702 void PeerConnectionDependencyFactory::DeleteIpcNetworkManager() { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 } | 759 } |
| 756 | 760 |
| 757 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { | 761 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { |
| 758 if (audio_device_.get()) | 762 if (audio_device_.get()) |
| 759 return; | 763 return; |
| 760 | 764 |
| 761 audio_device_ = new WebRtcAudioDeviceImpl(); | 765 audio_device_ = new WebRtcAudioDeviceImpl(); |
| 762 } | 766 } |
| 763 | 767 |
| 764 } // namespace content | 768 } // namespace content |
| OLD | NEW |