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

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

Issue 1818963002: Use a FakeVideoTrackSource instead of nullptr in all VideoTrack tests. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 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 | « webrtc/api/peerconnectioninterface_unittest.cc ('k') | webrtc/api/statscollector_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 11 #include <string>
12 #include <utility> 12 #include <utility>
13 13
14 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "webrtc/api/audiotrack.h" 16 #include "webrtc/api/audiotrack.h"
17 #include "webrtc/api/mediastream.h" 17 #include "webrtc/api/mediastream.h"
18 #include "webrtc/api/remoteaudiosource.h" 18 #include "webrtc/api/remoteaudiosource.h"
19 #include "webrtc/api/rtpreceiver.h" 19 #include "webrtc/api/rtpreceiver.h"
20 #include "webrtc/api/rtpsender.h" 20 #include "webrtc/api/rtpsender.h"
21 #include "webrtc/api/streamcollection.h" 21 #include "webrtc/api/streamcollection.h"
22 #include "webrtc/api/test/fakevideotracksource.h"
22 #include "webrtc/api/videotracksource.h" 23 #include "webrtc/api/videotracksource.h"
23 #include "webrtc/api/videotrack.h" 24 #include "webrtc/api/videotrack.h"
24 #include "webrtc/base/gunit.h" 25 #include "webrtc/base/gunit.h"
25 #include "webrtc/media/base/fakevideocapturer.h"
26 #include "webrtc/media/base/mediachannel.h" 26 #include "webrtc/media/base/mediachannel.h"
27 27
28 using ::testing::_; 28 using ::testing::_;
29 using ::testing::Exactly; 29 using ::testing::Exactly;
30 using ::testing::Return; 30 using ::testing::Return;
31 31
32 static const char kStreamLabel1[] = "local_stream_1"; 32 static const char kStreamLabel1[] = "local_stream_1";
33 static const char kVideoTrackId[] = "video_1"; 33 static const char kVideoTrackId[] = "video_1";
34 static const char kAudioTrackId[] = "audio_1"; 34 static const char kAudioTrackId[] = "audio_1";
35 static const uint32_t kVideoSsrc = 98; 35 static const uint32_t kVideoSsrc = 98;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 MOCK_METHOD3(SetVideoSend, 79 MOCK_METHOD3(SetVideoSend,
80 void(uint32_t ssrc, 80 void(uint32_t ssrc,
81 bool enable, 81 bool enable,
82 const cricket::VideoOptions* options)); 82 const cricket::VideoOptions* options));
83 83
84 MOCK_CONST_METHOD1(GetVideoRtpParameters, RtpParameters(uint32_t ssrc)); 84 MOCK_CONST_METHOD1(GetVideoRtpParameters, RtpParameters(uint32_t ssrc));
85 MOCK_METHOD2(SetVideoRtpParameters, 85 MOCK_METHOD2(SetVideoRtpParameters,
86 bool(uint32_t ssrc, const RtpParameters&)); 86 bool(uint32_t ssrc, const RtpParameters&));
87 }; 87 };
88 88
89 class FakeVideoTrackSource : public VideoTrackSource {
90 public:
91 static rtc::scoped_refptr<FakeVideoTrackSource> Create(bool remote) {
92 return new rtc::RefCountedObject<FakeVideoTrackSource>(remote);
93 }
94 cricket::VideoCapturer* GetVideoCapturer() { return &fake_capturer_; }
95
96 protected:
97 explicit FakeVideoTrackSource(bool remote)
98 : VideoTrackSource(&fake_capturer_, rtc::Thread::Current(), remote) {}
99 ~FakeVideoTrackSource() {}
100
101 private:
102 cricket::FakeVideoCapturer fake_capturer_;
103 };
104
105 class RtpSenderReceiverTest : public testing::Test { 89 class RtpSenderReceiverTest : public testing::Test {
106 public: 90 public:
107 virtual void SetUp() { 91 virtual void SetUp() {
108 stream_ = MediaStream::Create(kStreamLabel1); 92 stream_ = MediaStream::Create(kStreamLabel1);
109 } 93 }
110 94
111 void AddVideoTrack(bool remote) { 95 void AddVideoTrack() {
112 rtc::scoped_refptr<VideoTrackSourceInterface> source( 96 rtc::scoped_refptr<VideoTrackSourceInterface> source(
113 FakeVideoTrackSource::Create(remote)); 97 FakeVideoTrackSource::Create());
114 video_track_ = VideoTrack::Create(kVideoTrackId, source); 98 video_track_ = VideoTrack::Create(kVideoTrackId, source);
115 EXPECT_TRUE(stream_->AddTrack(video_track_)); 99 EXPECT_TRUE(stream_->AddTrack(video_track_));
116 } 100 }
117 101
118 void CreateAudioRtpSender() { 102 void CreateAudioRtpSender() {
119 audio_track_ = AudioTrack::Create(kAudioTrackId, NULL); 103 audio_track_ = AudioTrack::Create(kAudioTrackId, NULL);
120 EXPECT_TRUE(stream_->AddTrack(audio_track_)); 104 EXPECT_TRUE(stream_->AddTrack(audio_track_));
121 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _)); 105 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
122 audio_rtp_sender_ = 106 audio_rtp_sender_ =
123 new AudioRtpSender(stream_->GetAudioTracks()[0], stream_->label(), 107 new AudioRtpSender(stream_->GetAudioTracks()[0], stream_->label(),
124 &audio_provider_, nullptr); 108 &audio_provider_, nullptr);
125 audio_rtp_sender_->SetSsrc(kAudioSsrc); 109 audio_rtp_sender_->SetSsrc(kAudioSsrc);
126 } 110 }
127 111
128 void CreateVideoRtpSender() { 112 void CreateVideoRtpSender() {
129 AddVideoTrack(false); 113 AddVideoTrack();
130 EXPECT_CALL(video_provider_, 114 EXPECT_CALL(video_provider_,
131 SetCaptureDevice( 115 SetCaptureDevice(
132 kVideoSsrc, video_track_->GetSource()->GetVideoCapturer())); 116 kVideoSsrc, video_track_->GetSource()->GetVideoCapturer()));
133 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 117 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
134 video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0], 118 video_rtp_sender_ = new VideoRtpSender(stream_->GetVideoTracks()[0],
135 stream_->label(), &video_provider_); 119 stream_->label(), &video_provider_);
136 video_rtp_sender_->SetSsrc(kVideoSsrc); 120 video_rtp_sender_->SetSsrc(kVideoSsrc);
137 } 121 }
138 122
139 void DestroyAudioRtpSender() { 123 void DestroyAudioRtpSender() {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
349 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _)); 333 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
350 sender->SetSsrc(kAudioSsrc); 334 sender->SetSsrc(kAudioSsrc);
351 335
352 // Calls expected from destructor. 336 // Calls expected from destructor.
353 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1); 337 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1);
354 } 338 }
355 339
356 // Test that a video sender calls the expected methods on the provider once 340 // Test that a video sender calls the expected methods on the provider once
357 // it has a track and SSRC, when the SSRC is set first. 341 // it has a track and SSRC, when the SSRC is set first.
358 TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupSsrcThenTrack) { 342 TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupSsrcThenTrack) {
359 AddVideoTrack(false); 343 AddVideoTrack();
360 rtc::scoped_refptr<VideoRtpSender> sender = 344 rtc::scoped_refptr<VideoRtpSender> sender =
361 new VideoRtpSender(&video_provider_); 345 new VideoRtpSender(&video_provider_);
362 sender->SetSsrc(kVideoSsrc); 346 sender->SetSsrc(kVideoSsrc);
363 EXPECT_CALL(video_provider_, 347 EXPECT_CALL(video_provider_,
364 SetCaptureDevice(kVideoSsrc, 348 SetCaptureDevice(kVideoSsrc,
365 video_track_->GetSource()->GetVideoCapturer())); 349 video_track_->GetSource()->GetVideoCapturer()));
366 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 350 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
367 sender->SetTrack(video_track_); 351 sender->SetTrack(video_track_);
368 352
369 // Calls expected from destructor. 353 // Calls expected from destructor.
370 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1); 354 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1);
371 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1); 355 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1);
372 } 356 }
373 357
374 // Test that a video sender calls the expected methods on the provider once 358 // Test that a video sender calls the expected methods on the provider once
375 // it has a track and SSRC, when the SSRC is set last. 359 // it has a track and SSRC, when the SSRC is set last.
376 TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupTrackThenSsrc) { 360 TEST_F(RtpSenderReceiverTest, VideoSenderEarlyWarmupTrackThenSsrc) {
377 AddVideoTrack(false); 361 AddVideoTrack();
378 rtc::scoped_refptr<VideoRtpSender> sender = 362 rtc::scoped_refptr<VideoRtpSender> sender =
379 new VideoRtpSender(&video_provider_); 363 new VideoRtpSender(&video_provider_);
380 sender->SetTrack(video_track_); 364 sender->SetTrack(video_track_);
381 EXPECT_CALL(video_provider_, 365 EXPECT_CALL(video_provider_,
382 SetCaptureDevice(kVideoSsrc, 366 SetCaptureDevice(kVideoSsrc,
383 video_track_->GetSource()->GetVideoCapturer())); 367 video_track_->GetSource()->GetVideoCapturer()));
384 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 368 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
385 sender->SetSsrc(kVideoSsrc); 369 sender->SetSsrc(kVideoSsrc);
386 370
387 // Calls expected from destructor. 371 // Calls expected from destructor.
(...skipping 15 matching lines...) Expand all
403 sender->SetSsrc(0); 387 sender->SetSsrc(0);
404 388
405 // Make sure it's SetSsrc that called methods on the provider, and not the 389 // Make sure it's SetSsrc that called methods on the provider, and not the
406 // destructor. 390 // destructor.
407 EXPECT_CALL(audio_provider_, SetAudioSend(_, _, _, _)).Times(0); 391 EXPECT_CALL(audio_provider_, SetAudioSend(_, _, _, _)).Times(0);
408 } 392 }
409 393
410 // Test that the sender is disconnected from the provider when its SSRC is 394 // Test that the sender is disconnected from the provider when its SSRC is
411 // set to 0. 395 // set to 0.
412 TEST_F(RtpSenderReceiverTest, VideoSenderSsrcSetToZero) { 396 TEST_F(RtpSenderReceiverTest, VideoSenderSsrcSetToZero) {
413 AddVideoTrack(false); 397 AddVideoTrack();
414 EXPECT_CALL(video_provider_, 398 EXPECT_CALL(video_provider_,
415 SetCaptureDevice(kVideoSsrc, 399 SetCaptureDevice(kVideoSsrc,
416 video_track_->GetSource()->GetVideoCapturer())); 400 video_track_->GetSource()->GetVideoCapturer()));
417 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 401 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
418 rtc::scoped_refptr<VideoRtpSender> sender = 402 rtc::scoped_refptr<VideoRtpSender> sender =
419 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_); 403 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_);
420 sender->SetSsrc(kVideoSsrc); 404 sender->SetSsrc(kVideoSsrc);
421 405
422 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1); 406 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1);
423 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1); 407 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1);
(...skipping 15 matching lines...) Expand all
439 423
440 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1); 424 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1);
441 EXPECT_TRUE(sender->SetTrack(nullptr)); 425 EXPECT_TRUE(sender->SetTrack(nullptr));
442 426
443 // Make sure it's SetTrack that called methods on the provider, and not the 427 // Make sure it's SetTrack that called methods on the provider, and not the
444 // destructor. 428 // destructor.
445 EXPECT_CALL(audio_provider_, SetAudioSend(_, _, _, _)).Times(0); 429 EXPECT_CALL(audio_provider_, SetAudioSend(_, _, _, _)).Times(0);
446 } 430 }
447 431
448 TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) { 432 TEST_F(RtpSenderReceiverTest, VideoSenderTrackSetToNull) {
449 AddVideoTrack(false); 433 AddVideoTrack();
450 EXPECT_CALL(video_provider_, 434 EXPECT_CALL(video_provider_,
451 SetCaptureDevice(kVideoSsrc, 435 SetCaptureDevice(kVideoSsrc,
452 video_track_->GetSource()->GetVideoCapturer())); 436 video_track_->GetSource()->GetVideoCapturer()));
453 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 437 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
454 rtc::scoped_refptr<VideoRtpSender> sender = 438 rtc::scoped_refptr<VideoRtpSender> sender =
455 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_); 439 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_);
456 sender->SetSsrc(kVideoSsrc); 440 sender->SetSsrc(kVideoSsrc);
457 441
458 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1); 442 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1);
459 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1); 443 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1);
460 EXPECT_TRUE(sender->SetTrack(nullptr)); 444 EXPECT_TRUE(sender->SetTrack(nullptr));
461 445
462 // Make sure it's SetTrack that called methods on the provider, and not the 446 // Make sure it's SetTrack that called methods on the provider, and not the
463 // destructor. 447 // destructor.
464 EXPECT_CALL(video_provider_, SetCaptureDevice(_, _)).Times(0); 448 EXPECT_CALL(video_provider_, SetCaptureDevice(_, _)).Times(0);
465 EXPECT_CALL(video_provider_, SetVideoSend(_, _, _)).Times(0); 449 EXPECT_CALL(video_provider_, SetVideoSend(_, _, _)).Times(0);
466 } 450 }
467 451
468 TEST_F(RtpSenderReceiverTest, AudioSenderSsrcChanged) { 452 TEST_F(RtpSenderReceiverTest, AudioSenderSsrcChanged) {
469 AddVideoTrack(false); 453 AddVideoTrack();
470 rtc::scoped_refptr<AudioTrackInterface> track = 454 rtc::scoped_refptr<AudioTrackInterface> track =
471 AudioTrack::Create(kAudioTrackId, nullptr); 455 AudioTrack::Create(kAudioTrackId, nullptr);
472 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _)); 456 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, true, _, _));
473 rtc::scoped_refptr<AudioRtpSender> sender = 457 rtc::scoped_refptr<AudioRtpSender> sender =
474 new AudioRtpSender(track, kStreamLabel1, &audio_provider_, nullptr); 458 new AudioRtpSender(track, kStreamLabel1, &audio_provider_, nullptr);
475 sender->SetSsrc(kAudioSsrc); 459 sender->SetSsrc(kAudioSsrc);
476 460
477 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1); 461 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc, false, _, _)).Times(1);
478 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc2, true, _, _)).Times(1); 462 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc2, true, _, _)).Times(1);
479 sender->SetSsrc(kAudioSsrc2); 463 sender->SetSsrc(kAudioSsrc2);
480 464
481 // Calls expected from destructor. 465 // Calls expected from destructor.
482 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc2, false, _, _)).Times(1); 466 EXPECT_CALL(audio_provider_, SetAudioSend(kAudioSsrc2, false, _, _)).Times(1);
483 } 467 }
484 468
485 TEST_F(RtpSenderReceiverTest, VideoSenderSsrcChanged) { 469 TEST_F(RtpSenderReceiverTest, VideoSenderSsrcChanged) {
486 AddVideoTrack(false); 470 AddVideoTrack();
487 EXPECT_CALL(video_provider_, 471 EXPECT_CALL(video_provider_,
488 SetCaptureDevice(kVideoSsrc, 472 SetCaptureDevice(kVideoSsrc,
489 video_track_->GetSource()->GetVideoCapturer())); 473 video_track_->GetSource()->GetVideoCapturer()));
490 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _)); 474 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, true, _));
491 rtc::scoped_refptr<VideoRtpSender> sender = 475 rtc::scoped_refptr<VideoRtpSender> sender =
492 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_); 476 new VideoRtpSender(video_track_, kStreamLabel1, &video_provider_);
493 sender->SetSsrc(kVideoSsrc); 477 sender->SetSsrc(kVideoSsrc);
494 478
495 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1); 479 EXPECT_CALL(video_provider_, SetCaptureDevice(kVideoSsrc, nullptr)).Times(1);
496 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1); 480 EXPECT_CALL(video_provider_, SetVideoSend(kVideoSsrc, false, _)).Times(1);
(...skipping 28 matching lines...) Expand all
525 .WillOnce(Return(RtpParameters())); 509 .WillOnce(Return(RtpParameters()));
526 EXPECT_CALL(video_provider_, SetVideoRtpParameters(kVideoSsrc, _)) 510 EXPECT_CALL(video_provider_, SetVideoRtpParameters(kVideoSsrc, _))
527 .WillOnce(Return(true)); 511 .WillOnce(Return(true));
528 RtpParameters params = video_rtp_sender_->GetParameters(); 512 RtpParameters params = video_rtp_sender_->GetParameters();
529 EXPECT_TRUE(video_rtp_sender_->SetParameters(params)); 513 EXPECT_TRUE(video_rtp_sender_->SetParameters(params));
530 514
531 DestroyVideoRtpSender(); 515 DestroyVideoRtpSender();
532 } 516 }
533 517
534 } // namespace webrtc 518 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/api/peerconnectioninterface_unittest.cc ('k') | webrtc/api/statscollector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698