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

Side by Side Diff: webrtc/pc/rtpsenderreceiver_unittest.cc

Issue 2666853002: Move DTMF sender to RtpSender (as opposed to WebRtcSession). (Closed)
Patch Set: Created 3 years, 10 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 /* 1 /*
2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <utility> 13 #include <utility>
14 14
15 #include "webrtc/base/gunit.h" 15 #include "webrtc/base/gunit.h"
16 #include "webrtc/base/sigslot.h"
16 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" 17 #include "webrtc/logging/rtc_event_log/rtc_event_log.h"
17 #include "webrtc/media/base/fakemediaengine.h" 18 #include "webrtc/media/base/fakemediaengine.h"
18 #include "webrtc/media/base/mediachannel.h" 19 #include "webrtc/media/base/mediachannel.h"
19 #include "webrtc/media/engine/fakewebrtccall.h" 20 #include "webrtc/media/engine/fakewebrtccall.h"
20 #include "webrtc/p2p/base/faketransportcontroller.h" 21 #include "webrtc/p2p/base/faketransportcontroller.h"
21 #include "webrtc/pc/audiotrack.h" 22 #include "webrtc/pc/audiotrack.h"
22 #include "webrtc/pc/channelmanager.h" 23 #include "webrtc/pc/channelmanager.h"
23 #include "webrtc/pc/fakemediacontroller.h" 24 #include "webrtc/pc/fakemediacontroller.h"
24 #include "webrtc/pc/localaudiosource.h" 25 #include "webrtc/pc/localaudiosource.h"
25 #include "webrtc/pc/mediastream.h" 26 #include "webrtc/pc/mediastream.h"
(...skipping 15 matching lines...) Expand all
41 static const char kStreamLabel1[] = "local_stream_1"; 42 static const char kStreamLabel1[] = "local_stream_1";
42 static const char kVideoTrackId[] = "video_1"; 43 static const char kVideoTrackId[] = "video_1";
43 static const char kAudioTrackId[] = "audio_1"; 44 static const char kAudioTrackId[] = "audio_1";
44 static const uint32_t kVideoSsrc = 98; 45 static const uint32_t kVideoSsrc = 98;
45 static const uint32_t kVideoSsrc2 = 100; 46 static const uint32_t kVideoSsrc2 = 100;
46 static const uint32_t kAudioSsrc = 99; 47 static const uint32_t kAudioSsrc = 99;
47 static const uint32_t kAudioSsrc2 = 101; 48 static const uint32_t kAudioSsrc2 = 101;
48 49
49 namespace webrtc { 50 namespace webrtc {
50 51
51 class RtpSenderReceiverTest : public testing::Test { 52 class RtpSenderReceiverTest : public testing::Test,
53 public sigslot::has_slots<> {
52 public: 54 public:
53 RtpSenderReceiverTest() 55 RtpSenderReceiverTest()
54 : // Create fake media engine/etc. so we can create channels to use to 56 : // Create fake media engine/etc. so we can create channels to use to
55 // test RtpSenders/RtpReceivers. 57 // test RtpSenders/RtpReceivers.
56 media_engine_(new cricket::FakeMediaEngine()), 58 media_engine_(new cricket::FakeMediaEngine()),
57 channel_manager_(media_engine_, 59 channel_manager_(media_engine_,
58 rtc::Thread::Current(), 60 rtc::Thread::Current(),
59 rtc::Thread::Current()), 61 rtc::Thread::Current()),
60 fake_call_(Call::Config(&event_log_)), 62 fake_call_(Call::Config(&event_log_)),
61 fake_media_controller_(&channel_manager_, &fake_call_), 63 fake_media_controller_(&channel_manager_, &fake_call_),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 video_media_channel_->AddSendStream( 99 video_media_channel_->AddSendStream(
98 cricket::StreamParams::CreateLegacy(kVideoSsrc)); 100 cricket::StreamParams::CreateLegacy(kVideoSsrc));
99 video_media_channel_->AddRecvStream( 101 video_media_channel_->AddRecvStream(
100 cricket::StreamParams::CreateLegacy(kVideoSsrc)); 102 cricket::StreamParams::CreateLegacy(kVideoSsrc));
101 video_media_channel_->AddSendStream( 103 video_media_channel_->AddSendStream(
102 cricket::StreamParams::CreateLegacy(kVideoSsrc2)); 104 cricket::StreamParams::CreateLegacy(kVideoSsrc2));
103 video_media_channel_->AddRecvStream( 105 video_media_channel_->AddRecvStream(
104 cricket::StreamParams::CreateLegacy(kVideoSsrc2)); 106 cricket::StreamParams::CreateLegacy(kVideoSsrc2));
105 } 107 }
106 108
107 void TearDown() override { channel_manager_.Terminate(); }
108
109 void AddVideoTrack() { AddVideoTrack(false); } 109 void AddVideoTrack() { AddVideoTrack(false); }
110 110
111 void AddVideoTrack(bool is_screencast) { 111 void AddVideoTrack(bool is_screencast) {
112 rtc::scoped_refptr<VideoTrackSourceInterface> source( 112 rtc::scoped_refptr<VideoTrackSourceInterface> source(
113 FakeVideoTrackSource::Create(is_screencast)); 113 FakeVideoTrackSource::Create(is_screencast));
114 video_track_ = VideoTrack::Create(kVideoTrackId, source); 114 video_track_ = VideoTrack::Create(kVideoTrackId, source);
115 EXPECT_TRUE(stream_->AddTrack(video_track_)); 115 EXPECT_TRUE(stream_->AddTrack(video_track_));
116 } 116 }
117 117
118 void CreateAudioRtpSender() { CreateAudioRtpSender(nullptr); } 118 void CreateAudioRtpSender() { CreateAudioRtpSender(nullptr); }
119 119
120 void CreateAudioRtpSender(rtc::scoped_refptr<LocalAudioSource> source) { 120 void CreateAudioRtpSender(rtc::scoped_refptr<LocalAudioSource> source) {
121 audio_track_ = AudioTrack::Create(kAudioTrackId, source); 121 audio_track_ = AudioTrack::Create(kAudioTrackId, source);
122 EXPECT_TRUE(stream_->AddTrack(audio_track_)); 122 EXPECT_TRUE(stream_->AddTrack(audio_track_));
123 audio_rtp_sender_ = 123 audio_rtp_sender_ =
124 new AudioRtpSender(stream_->GetAudioTracks()[0], stream_->label(), 124 new AudioRtpSender(stream_->GetAudioTracks()[0], stream_->label(),
125 voice_channel_, nullptr); 125 voice_channel_, nullptr);
126 audio_rtp_sender_->SetSsrc(kAudioSsrc); 126 audio_rtp_sender_->SetSsrc(kAudioSsrc);
127 audio_rtp_sender_->GetOnDestroyedSignal()->connect(
128 this, &RtpSenderReceiverTest::OnAudioSenderDestroyed);
127 VerifyVoiceChannelInput(); 129 VerifyVoiceChannelInput();
128 } 130 }
129 131
132 void OnAudioSenderDestroyed() { audio_sender_destroyed_signal_fired_ = true; }
133
130 void CreateVideoRtpSender() { CreateVideoRtpSender(false); } 134 void CreateVideoRtpSender() { CreateVideoRtpSender(false); }
131 135
132 void CreateVideoRtpSender(bool is_screencast) { 136 void CreateVideoRtpSender(bool is_screencast) {
133 AddVideoTrack(is_screencast); 137 AddVideoTrack(is_screencast);
134 video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0], 138 video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0],
135 stream_->label(), video_channel_); 139 stream_->label(), video_channel_);
136 video_rtp_sender_->SetSsrc(kVideoSsrc); 140 video_rtp_sender_->SetSsrc(kVideoSsrc);
137 VerifyVideoChannelInput(); 141 VerifyVideoChannelInput();
138 } 142 }
139 143
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 cricket::VideoChannel* video_channel_; 244 cricket::VideoChannel* video_channel_;
241 cricket::FakeVoiceMediaChannel* voice_media_channel_; 245 cricket::FakeVoiceMediaChannel* voice_media_channel_;
242 cricket::FakeVideoMediaChannel* video_media_channel_; 246 cricket::FakeVideoMediaChannel* video_media_channel_;
243 rtc::scoped_refptr<AudioRtpSender> audio_rtp_sender_; 247 rtc::scoped_refptr<AudioRtpSender> audio_rtp_sender_;
244 rtc::scoped_refptr<VideoRtpSender> video_rtp_sender_; 248 rtc::scoped_refptr<VideoRtpSender> video_rtp_sender_;
245 rtc::scoped_refptr<AudioRtpReceiver> audio_rtp_receiver_; 249 rtc::scoped_refptr<AudioRtpReceiver> audio_rtp_receiver_;
246 rtc::scoped_refptr<VideoRtpReceiver> video_rtp_receiver_; 250 rtc::scoped_refptr<VideoRtpReceiver> video_rtp_receiver_;
247 rtc::scoped_refptr<MediaStreamInterface> stream_; 251 rtc::scoped_refptr<MediaStreamInterface> stream_;
248 rtc::scoped_refptr<VideoTrackInterface> video_track_; 252 rtc::scoped_refptr<VideoTrackInterface> video_track_;
249 rtc::scoped_refptr<AudioTrackInterface> audio_track_; 253 rtc::scoped_refptr<AudioTrackInterface> audio_track_;
254 bool audio_sender_destroyed_signal_fired_ = false;
250 }; 255 };
251 256
252 // Test that |voice_channel_| is updated when an audio track is associated 257 // Test that |voice_channel_| is updated when an audio track is associated
253 // and disassociated with an AudioRtpSender. 258 // and disassociated with an AudioRtpSender.
254 TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpSender) { 259 TEST_F(RtpSenderReceiverTest, AddAndDestroyAudioRtpSender) {
255 CreateAudioRtpSender(); 260 CreateAudioRtpSender();
256 DestroyAudioRtpSender(); 261 DestroyAudioRtpSender();
257 } 262 }
258 263
259 // Test that |video_channel_| is updated when a video track is associated and 264 // Test that |video_channel_| is updated when a video track is associated and
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 719
715 // And removing the hint should go back to false (to verify that false was 720 // And removing the hint should go back to false (to verify that false was
716 // default correctly). 721 // default correctly).
717 video_track_->set_content_hint(VideoTrackInterface::ContentHint::kNone); 722 video_track_->set_content_hint(VideoTrackInterface::ContentHint::kNone);
718 EXPECT_EQ(rtc::Optional<bool>(false), 723 EXPECT_EQ(rtc::Optional<bool>(false),
719 video_media_channel_->options().is_screencast); 724 video_media_channel_->options().is_screencast);
720 725
721 DestroyVideoRtpSender(); 726 DestroyVideoRtpSender();
722 } 727 }
723 728
729 // There are end-to-end tests for DTMF, but here just ensure the DTMF sender is
730 // provided based on sender type.
731 TEST_F(RtpSenderReceiverTest, AudioSenderHasDtmfSender) {
732 CreateAudioRtpSender();
733 EXPECT_NE(nullptr, audio_rtp_sender_->GetDtmfSender());
734 }
735
736 TEST_F(RtpSenderReceiverTest, VideoSenderDoesNotHaveDtmfSender) {
737 CreateVideoRtpSender();
738 EXPECT_EQ(nullptr, video_rtp_sender_->GetDtmfSender());
739 }
740
741 // Make sure the signal from "GetOnDestroyedSignal()" fires when the sender is
742 // destroyed, which is needed for the DTMF sender.
743 TEST_F(RtpSenderReceiverTest, TestOnDestroyedSignal) {
744 CreateAudioRtpSender();
745 EXPECT_FALSE(audio_sender_destroyed_signal_fired_);
746 audio_rtp_sender_ = nullptr;
747 EXPECT_TRUE(audio_sender_destroyed_signal_fired_);
748 }
749
724 } // namespace webrtc 750 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698