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

Side by Side Diff: content/renderer/media/webrtc/peer_connection_dependency_factory.cc

Issue 1417663004: Create an experiment to study whether too many bindings cause NAT failure (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove StunProberWithWeakPtr and replace with a timer Created 5 years, 1 month 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 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698