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

Side by Side Diff: content/renderer/media/rtc_peer_connection_handler_unittest.cc

Issue 2924563002: Make RTCPeerConnectionHandlerTest use the webrtc signaling thread. (Closed)
Patch Set: Created 3 years, 6 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 | « content/renderer/media/rtc_peer_connection_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "content/renderer/media/rtc_peer_connection_handler.h" 5 #include "content/renderer/media/rtc_peer_connection_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
11 #include <set> 11 #include <set>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/run_loop.h" 17 #include "base/run_loop.h"
18 #include "base/single_thread_task_runner.h" 18 #include "base/single_thread_task_runner.h"
19 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
20 #include "base/synchronization/waitable_event.h"
20 #include "base/threading/thread_task_runner_handle.h" 21 #include "base/threading/thread_task_runner_handle.h"
21 #include "base/values.h" 22 #include "base/values.h"
22 #include "content/child/child_process.h" 23 #include "content/child/child_process.h"
23 #include "content/renderer/media/media_stream.h" 24 #include "content/renderer/media/media_stream.h"
24 #include "content/renderer/media/media_stream_audio_source.h" 25 #include "content/renderer/media/media_stream_audio_source.h"
25 #include "content/renderer/media/media_stream_audio_track.h" 26 #include "content/renderer/media/media_stream_audio_track.h"
26 #include "content/renderer/media/media_stream_source.h" 27 #include "content/renderer/media/media_stream_source.h"
27 #include "content/renderer/media/media_stream_video_track.h" 28 #include "content/renderer/media/media_stream_video_track.h"
28 #include "content/renderer/media/mock_audio_device_factory.h" 29 #include "content/renderer/media/mock_audio_device_factory.h"
29 #include "content/renderer/media/mock_constraint_factory.h" 30 #include "content/renderer/media/mock_constraint_factory.h"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 243 }
243 244
244 MockPeerConnectionImpl* native_peer_connection() { 245 MockPeerConnectionImpl* native_peer_connection() {
245 return static_cast<MockPeerConnectionImpl*>( 246 return static_cast<MockPeerConnectionImpl*>(
246 RTCPeerConnectionHandler::native_peer_connection()); 247 RTCPeerConnectionHandler::native_peer_connection());
247 } 248 }
248 249
249 webrtc::PeerConnectionObserver* observer() { 250 webrtc::PeerConnectionObserver* observer() {
250 return native_peer_connection()->observer(); 251 return native_peer_connection()->observer();
251 } 252 }
252
253 scoped_refptr<base::SingleThreadTaskRunner>
254 signaling_thread() const override {
255 return base::ThreadTaskRunnerHandle::Get();
256 }
257 }; 253 };
258 254
259 class RTCPeerConnectionHandlerTest : public ::testing::Test { 255 class RTCPeerConnectionHandlerTest : public ::testing::Test {
260 public: 256 public:
261 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) { 257 RTCPeerConnectionHandlerTest() : mock_peer_connection_(NULL) {
262 child_process_.reset(new ChildProcess()); 258 child_process_.reset(new ChildProcess());
263 } 259 }
264 260
265 void SetUp() override { 261 void SetUp() override {
266 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>()); 262 mock_client_.reset(new NiceMock<MockWebRTCPeerConnectionHandlerClient>());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 366 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
371 stream.VideoTracks(video_tracks); 367 stream.VideoTracks(video_tracks);
372 for (const auto& track : video_tracks) 368 for (const auto& track : video_tracks)
373 MediaStreamVideoTrack::GetVideoTrack(track)->Stop(); 369 MediaStreamVideoTrack::GetVideoTrack(track)->Stop();
374 } 370 }
375 371
376 static void OnAudioSourceStarted(MediaStreamSource* source, 372 static void OnAudioSourceStarted(MediaStreamSource* source,
377 MediaStreamRequestResult result, 373 MediaStreamRequestResult result,
378 const blink::WebString& result_name) {} 374 const blink::WebString& result_name) {}
379 375
376 // Wait for all current posts to the webrtc signaling thread to run and then
377 // run the message loop until idle on the main thread.
378 void RunMessageLoopsUntilIdle() {
379 base::WaitableEvent waitable_event(
380 base::WaitableEvent::ResetPolicy::MANUAL,
381 base::WaitableEvent::InitialState::NOT_SIGNALED);
382 mock_dependency_factory_->GetWebRtcSignalingThread()->PostTask(
383 FROM_HERE,
384 base::Bind(&RTCPeerConnectionHandlerTest::SignalWaitableEvent,
385 base::Unretained(this), &waitable_event));
386 waitable_event.Wait();
387 base::RunLoop().RunUntilIdle();
388 }
389
390 private:
391 void SignalWaitableEvent(base::WaitableEvent* waitable_event) {
392 waitable_event->Signal();
393 }
394
395 public:
380 base::MessageLoop message_loop_; 396 base::MessageLoop message_loop_;
381 std::unique_ptr<ChildProcess> child_process_; 397 std::unique_ptr<ChildProcess> child_process_;
382 std::unique_ptr<MockWebRTCPeerConnectionHandlerClient> mock_client_; 398 std::unique_ptr<MockWebRTCPeerConnectionHandlerClient> mock_client_;
383 std::unique_ptr<MockPeerConnectionDependencyFactory> mock_dependency_factory_; 399 std::unique_ptr<MockPeerConnectionDependencyFactory> mock_dependency_factory_;
384 std::unique_ptr<NiceMock<MockPeerConnectionTracker>> mock_tracker_; 400 std::unique_ptr<NiceMock<MockPeerConnectionTracker>> mock_tracker_;
385 std::unique_ptr<RTCPeerConnectionHandlerUnderTest> pc_handler_; 401 std::unique_ptr<RTCPeerConnectionHandlerUnderTest> pc_handler_;
386 MockAudioDeviceFactory mock_audio_device_factory_; 402 MockAudioDeviceFactory mock_audio_device_factory_;
387 403
388 // Weak reference to the mocked native peer connection implementation. 404 // Weak reference to the mocked native peer connection implementation.
389 MockPeerConnectionImpl* mock_peer_connection_; 405 MockPeerConnectionImpl* mock_peer_connection_;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 442
427 EXPECT_CALL(*mock_client_.get(), DidRemoveRemoteStream(_)).Times(0); 443 EXPECT_CALL(*mock_client_.get(), DidRemoveRemoteStream(_)).Times(0);
428 pc_handler_->observer()->OnRemoveStream(remote_stream); 444 pc_handler_->observer()->OnRemoveStream(remote_stream);
429 445
430 EXPECT_CALL(*mock_client_.get(), DidAddRemoteDataChannel(_)).Times(0); 446 EXPECT_CALL(*mock_client_.get(), DidAddRemoteDataChannel(_)).Times(0);
431 webrtc::DataChannelInit config; 447 webrtc::DataChannelInit config;
432 rtc::scoped_refptr<webrtc::DataChannelInterface> remote_data_channel( 448 rtc::scoped_refptr<webrtc::DataChannelInterface> remote_data_channel(
433 new rtc::RefCountedObject<MockDataChannel>("dummy", &config)); 449 new rtc::RefCountedObject<MockDataChannel>("dummy", &config));
434 pc_handler_->observer()->OnDataChannel(remote_data_channel); 450 pc_handler_->observer()->OnDataChannel(remote_data_channel);
435 451
436 base::RunLoop().RunUntilIdle(); 452 RunMessageLoopsUntilIdle();
437 } 453 }
438 454
439 TEST_F(RTCPeerConnectionHandlerTest, DestructAllHandlers) { 455 TEST_F(RTCPeerConnectionHandlerTest, DestructAllHandlers) {
440 EXPECT_CALL(*mock_client_.get(), ReleasePeerConnectionHandler()).Times(1); 456 EXPECT_CALL(*mock_client_.get(), ReleasePeerConnectionHandler()).Times(1);
441 RTCPeerConnectionHandler::DestructAllHandlers(); 457 RTCPeerConnectionHandler::DestructAllHandlers();
442 } 458 }
443 459
444 TEST_F(RTCPeerConnectionHandlerTest, CreateOffer) { 460 TEST_F(RTCPeerConnectionHandlerTest, CreateOffer) {
445 blink::WebRTCSessionDescriptionRequest request; 461 blink::WebRTCSessionDescriptionRequest request;
446 blink::WebMediaConstraints options; 462 blink::WebMediaConstraints options;
(...skipping 26 matching lines...) Expand all
473 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 489 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
474 // before |mock_peer_connection| is called. 490 // before |mock_peer_connection| is called.
475 testing::InSequence sequence; 491 testing::InSequence sequence;
476 EXPECT_CALL(*mock_tracker_.get(), 492 EXPECT_CALL(*mock_tracker_.get(),
477 TrackSetSessionDescription(pc_handler_.get(), kDummySdp, 493 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
478 kDummySdpType, 494 kDummySdpType,
479 PeerConnectionTracker::SOURCE_LOCAL)); 495 PeerConnectionTracker::SOURCE_LOCAL));
480 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _)); 496 EXPECT_CALL(*mock_peer_connection_, SetLocalDescription(_, _));
481 497
482 pc_handler_->SetLocalDescription(request, description); 498 pc_handler_->SetLocalDescription(request, description);
483 base::RunLoop().RunUntilIdle(); 499 RunMessageLoopsUntilIdle();
484 EXPECT_EQ(description.GetType(), pc_handler_->LocalDescription().GetType()); 500 EXPECT_EQ(description.GetType(), pc_handler_->LocalDescription().GetType());
485 EXPECT_EQ(description.Sdp(), pc_handler_->LocalDescription().Sdp()); 501 EXPECT_EQ(description.Sdp(), pc_handler_->LocalDescription().Sdp());
486 502
487 std::string sdp_string; 503 std::string sdp_string;
488 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL); 504 ASSERT_TRUE(mock_peer_connection_->local_description() != NULL);
489 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type()); 505 EXPECT_EQ(kDummySdpType, mock_peer_connection_->local_description()->type());
490 mock_peer_connection_->local_description()->ToString(&sdp_string); 506 mock_peer_connection_->local_description()->ToString(&sdp_string);
491 EXPECT_EQ(kDummySdp, sdp_string); 507 EXPECT_EQ(kDummySdp, sdp_string);
492 508
493 // TODO(deadbeef): Also mock the "success" callback from the PeerConnection 509 // TODO(deadbeef): Also mock the "success" callback from the PeerConnection
(...skipping 15 matching lines...) Expand all
509 PeerConnectionTracker::SOURCE_LOCAL)); 525 PeerConnectionTracker::SOURCE_LOCAL));
510 EXPECT_CALL( 526 EXPECT_CALL(
511 *mock_tracker_.get(), 527 *mock_tracker_.get(),
512 TrackSessionDescriptionCallback( 528 TrackSessionDescriptionCallback(
513 pc_handler_.get(), 529 pc_handler_.get(),
514 PeerConnectionTracker::ACTION_SET_LOCAL_DESCRIPTION, "OnFailure", _)); 530 PeerConnectionTracker::ACTION_SET_LOCAL_DESCRIPTION, "OnFailure", _));
515 531
516 // Used to simulate a parse failure. 532 // Used to simulate a parse failure.
517 mock_dependency_factory_->SetFailToCreateSessionDescription(true); 533 mock_dependency_factory_->SetFailToCreateSessionDescription(true);
518 pc_handler_->SetLocalDescription(request, description); 534 pc_handler_->SetLocalDescription(request, description);
519 base::RunLoop().RunUntilIdle(); 535 RunMessageLoopsUntilIdle();
520 // A description that failed to be applied shouldn't be stored. 536 // A description that failed to be applied shouldn't be stored.
521 EXPECT_TRUE(pc_handler_->LocalDescription().Sdp().IsEmpty()); 537 EXPECT_TRUE(pc_handler_->LocalDescription().Sdp().IsEmpty());
522 } 538 }
523 539
524 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) { 540 TEST_F(RTCPeerConnectionHandlerTest, setRemoteDescription) {
525 blink::WebRTCVoidRequest request; 541 blink::WebRTCVoidRequest request;
526 blink::WebRTCSessionDescription description; 542 blink::WebRTCSessionDescription description;
527 description.Initialize(kDummySdpType, kDummySdp); 543 description.Initialize(kDummySdpType, kDummySdp);
528 544
529 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called 545 // PeerConnectionTracker::TrackSetSessionDescription is expected to be called
530 // before |mock_peer_connection| is called. 546 // before |mock_peer_connection| is called.
531 testing::InSequence sequence; 547 testing::InSequence sequence;
532 EXPECT_CALL(*mock_tracker_.get(), 548 EXPECT_CALL(*mock_tracker_.get(),
533 TrackSetSessionDescription(pc_handler_.get(), kDummySdp, 549 TrackSetSessionDescription(pc_handler_.get(), kDummySdp,
534 kDummySdpType, 550 kDummySdpType,
535 PeerConnectionTracker::SOURCE_REMOTE)); 551 PeerConnectionTracker::SOURCE_REMOTE));
536 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _)); 552 EXPECT_CALL(*mock_peer_connection_, SetRemoteDescription(_, _));
537 553
538 pc_handler_->SetRemoteDescription(request, description); 554 pc_handler_->SetRemoteDescription(request, description);
539 base::RunLoop().RunUntilIdle(); 555 RunMessageLoopsUntilIdle();
540 EXPECT_EQ(description.GetType(), pc_handler_->RemoteDescription().GetType()); 556 EXPECT_EQ(description.GetType(), pc_handler_->RemoteDescription().GetType());
541 EXPECT_EQ(description.Sdp(), pc_handler_->RemoteDescription().Sdp()); 557 EXPECT_EQ(description.Sdp(), pc_handler_->RemoteDescription().Sdp());
542 558
543 std::string sdp_string; 559 std::string sdp_string;
544 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL); 560 ASSERT_TRUE(mock_peer_connection_->remote_description() != NULL);
545 EXPECT_EQ(kDummySdpType, mock_peer_connection_->remote_description()->type()); 561 EXPECT_EQ(kDummySdpType, mock_peer_connection_->remote_description()->type());
546 mock_peer_connection_->remote_description()->ToString(&sdp_string); 562 mock_peer_connection_->remote_description()->ToString(&sdp_string);
547 EXPECT_EQ(kDummySdp, sdp_string); 563 EXPECT_EQ(kDummySdp, sdp_string);
548 564
549 // TODO(deadbeef): Also mock the "success" callback from the PeerConnection 565 // TODO(deadbeef): Also mock the "success" callback from the PeerConnection
(...skipping 15 matching lines...) Expand all
565 PeerConnectionTracker::SOURCE_REMOTE)); 581 PeerConnectionTracker::SOURCE_REMOTE));
566 EXPECT_CALL(*mock_tracker_.get(), 582 EXPECT_CALL(*mock_tracker_.get(),
567 TrackSessionDescriptionCallback( 583 TrackSessionDescriptionCallback(
568 pc_handler_.get(), 584 pc_handler_.get(),
569 PeerConnectionTracker::ACTION_SET_REMOTE_DESCRIPTION, 585 PeerConnectionTracker::ACTION_SET_REMOTE_DESCRIPTION,
570 "OnFailure", _)); 586 "OnFailure", _));
571 587
572 // Used to simulate a parse failure. 588 // Used to simulate a parse failure.
573 mock_dependency_factory_->SetFailToCreateSessionDescription(true); 589 mock_dependency_factory_->SetFailToCreateSessionDescription(true);
574 pc_handler_->SetRemoteDescription(request, description); 590 pc_handler_->SetRemoteDescription(request, description);
575 base::RunLoop().RunUntilIdle(); 591 RunMessageLoopsUntilIdle();
576 // A description that failed to be applied shouldn't be stored. 592 // A description that failed to be applied shouldn't be stored.
577 EXPECT_TRUE(pc_handler_->RemoteDescription().Sdp().IsEmpty()); 593 EXPECT_TRUE(pc_handler_->RemoteDescription().Sdp().IsEmpty());
578 } 594 }
579 595
580 TEST_F(RTCPeerConnectionHandlerTest, setConfiguration) { 596 TEST_F(RTCPeerConnectionHandlerTest, setConfiguration) {
581 blink::WebRTCConfiguration config; 597 blink::WebRTCConfiguration config;
582 598
583 EXPECT_CALL(*mock_tracker_.get(), 599 EXPECT_CALL(*mock_tracker_.get(),
584 TrackSetConfiguration(pc_handler_.get(), _)); 600 TrackSetConfiguration(pc_handler_.get(), _));
585 // TODO(perkj): Test that the parameters in |config| can be translated when a 601 // TODO(perkj): Test that the parameters in |config| can be translated when a
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 1u, 690 1u,
675 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size()); 691 mock_peer_connection_->local_streams()->at(0)->GetVideoTracks().size());
676 692
677 StopAllTracks(local_stream); 693 StopAllTracks(local_stream);
678 } 694 }
679 695
680 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) { 696 TEST_F(RTCPeerConnectionHandlerTest, GetStatsNoSelector) {
681 scoped_refptr<MockRTCStatsRequest> request( 697 scoped_refptr<MockRTCStatsRequest> request(
682 new rtc::RefCountedObject<MockRTCStatsRequest>()); 698 new rtc::RefCountedObject<MockRTCStatsRequest>());
683 pc_handler_->getStats(request.get()); 699 pc_handler_->getStats(request.get());
684 base::RunLoop().RunUntilIdle(); 700 RunMessageLoopsUntilIdle();
685 ASSERT_TRUE(request->result()); 701 ASSERT_TRUE(request->result());
686 EXPECT_LT(1, request->result()->report_count()); 702 EXPECT_LT(1, request->result()->report_count());
687 } 703 }
688 704
689 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) { 705 TEST_F(RTCPeerConnectionHandlerTest, GetStatsAfterClose) {
690 scoped_refptr<MockRTCStatsRequest> request( 706 scoped_refptr<MockRTCStatsRequest> request(
691 new rtc::RefCountedObject<MockRTCStatsRequest>()); 707 new rtc::RefCountedObject<MockRTCStatsRequest>());
692 pc_handler_->Stop(); 708 pc_handler_->Stop();
693 base::RunLoop().RunUntilIdle(); 709 RunMessageLoopsUntilIdle();
694 pc_handler_->getStats(request.get()); 710 pc_handler_->getStats(request.get());
695 base::RunLoop().RunUntilIdle(); 711 RunMessageLoopsUntilIdle();
696 ASSERT_TRUE(request->result()); 712 ASSERT_TRUE(request->result());
697 EXPECT_LT(1, request->result()->report_count()); 713 EXPECT_LT(1, request->result()->report_count());
698 } 714 }
699 715
700 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) { 716 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithLocalSelector) {
701 blink::WebMediaStream local_stream( 717 blink::WebMediaStream local_stream(
702 CreateLocalMediaStream("local_stream")); 718 CreateLocalMediaStream("local_stream"));
703 blink::WebMediaConstraints constraints; 719 blink::WebMediaConstraints constraints;
704 pc_handler_->AddStream(local_stream, constraints); 720 pc_handler_->AddStream(local_stream, constraints);
705 blink::WebVector<blink::WebMediaStreamTrack> tracks; 721 blink::WebVector<blink::WebMediaStreamTrack> tracks;
706 local_stream.AudioTracks(tracks); 722 local_stream.AudioTracks(tracks);
707 ASSERT_LE(1ul, tracks.size()); 723 ASSERT_LE(1ul, tracks.size());
708 724
709 scoped_refptr<MockRTCStatsRequest> request( 725 scoped_refptr<MockRTCStatsRequest> request(
710 new rtc::RefCountedObject<MockRTCStatsRequest>()); 726 new rtc::RefCountedObject<MockRTCStatsRequest>());
711 request->setSelector(tracks[0]); 727 request->setSelector(tracks[0]);
712 pc_handler_->getStats(request.get()); 728 pc_handler_->getStats(request.get());
713 base::RunLoop().RunUntilIdle(); 729 RunMessageLoopsUntilIdle();
714 EXPECT_EQ(1, request->result()->report_count()); 730 EXPECT_EQ(1, request->result()->report_count());
715 731
716 StopAllTracks(local_stream); 732 StopAllTracks(local_stream);
717 } 733 }
718 734
719 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { 735 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) {
720 rtc::scoped_refptr<webrtc::MediaStreamInterface> stream( 736 rtc::scoped_refptr<webrtc::MediaStreamInterface> stream(
721 AddRemoteMockMediaStream("remote_stream", "video", "audio")); 737 AddRemoteMockMediaStream("remote_stream", "video", "audio"));
722 pc_handler_->observer()->OnAddStream(stream); 738 pc_handler_->observer()->OnAddStream(stream);
723 base::RunLoop().RunUntilIdle(); 739 RunMessageLoopsUntilIdle();
724 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream(); 740 const blink::WebMediaStream& remote_stream = mock_client_->remote_stream();
725 741
726 blink::WebVector<blink::WebMediaStreamTrack> tracks; 742 blink::WebVector<blink::WebMediaStreamTrack> tracks;
727 remote_stream.AudioTracks(tracks); 743 remote_stream.AudioTracks(tracks);
728 ASSERT_LE(1ul, tracks.size()); 744 ASSERT_LE(1ul, tracks.size());
729 745
730 scoped_refptr<MockRTCStatsRequest> request( 746 scoped_refptr<MockRTCStatsRequest> request(
731 new rtc::RefCountedObject<MockRTCStatsRequest>()); 747 new rtc::RefCountedObject<MockRTCStatsRequest>());
732 request->setSelector(tracks[0]); 748 request->setSelector(tracks[0]);
733 pc_handler_->getStats(request.get()); 749 pc_handler_->getStats(request.get());
734 base::RunLoop().RunUntilIdle(); 750 RunMessageLoopsUntilIdle();
735 EXPECT_EQ(1, request->result()->report_count()); 751 EXPECT_EQ(1, request->result()->report_count());
736 } 752 }
737 753
738 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) { 754 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithBadSelector) {
739 // The setup is the same as GetStatsWithLocalSelector, but the stream is not 755 // The setup is the same as GetStatsWithLocalSelector, but the stream is not
740 // added to the PeerConnection. 756 // added to the PeerConnection.
741 blink::WebMediaStream local_stream( 757 blink::WebMediaStream local_stream(
742 CreateLocalMediaStream("local_stream_2")); 758 CreateLocalMediaStream("local_stream_2"));
743 blink::WebMediaConstraints constraints; 759 blink::WebMediaConstraints constraints;
744 blink::WebVector<blink::WebMediaStreamTrack> tracks; 760 blink::WebVector<blink::WebMediaStreamTrack> tracks;
745 761
746 local_stream.AudioTracks(tracks); 762 local_stream.AudioTracks(tracks);
747 blink::WebMediaStreamTrack component = tracks[0]; 763 blink::WebMediaStreamTrack component = tracks[0];
748 mock_peer_connection_->SetGetStatsResult(false); 764 mock_peer_connection_->SetGetStatsResult(false);
749 765
750 scoped_refptr<MockRTCStatsRequest> request( 766 scoped_refptr<MockRTCStatsRequest> request(
751 new rtc::RefCountedObject<MockRTCStatsRequest>()); 767 new rtc::RefCountedObject<MockRTCStatsRequest>());
752 request->setSelector(component); 768 request->setSelector(component);
753 pc_handler_->getStats(request.get()); 769 pc_handler_->getStats(request.get());
754 base::RunLoop().RunUntilIdle(); 770 RunMessageLoopsUntilIdle();
755 EXPECT_EQ(0, request->result()->report_count()); 771 EXPECT_EQ(0, request->result()->report_count());
756 772
757 StopAllTracks(local_stream); 773 StopAllTracks(local_stream);
758 } 774 }
759 775
760 TEST_F(RTCPeerConnectionHandlerTest, GetRTCStats) { 776 TEST_F(RTCPeerConnectionHandlerTest, GetRTCStats) {
761 WhitelistStatsForTesting(webrtc::RTCTestStats::kType); 777 WhitelistStatsForTesting(webrtc::RTCTestStats::kType);
762 778
763 rtc::scoped_refptr<webrtc::RTCStatsReport> report = 779 rtc::scoped_refptr<webrtc::RTCStatsReport> report =
764 webrtc::RTCStatsReport::Create(); 780 webrtc::RTCStatsReport::Create();
(...skipping 17 matching lines...) Expand all
782 stats_defined_members->m_sequence_uint64 = ToSequence<uint64_t>(42); 798 stats_defined_members->m_sequence_uint64 = ToSequence<uint64_t>(42);
783 stats_defined_members->m_sequence_double = ToSequence<double>(42); 799 stats_defined_members->m_sequence_double = ToSequence<double>(42);
784 stats_defined_members->m_sequence_string = ToSequence<std::string>("42"); 800 stats_defined_members->m_sequence_string = ToSequence<std::string>("42");
785 report->AddStats(std::unique_ptr<const webrtc::RTCStats>( 801 report->AddStats(std::unique_ptr<const webrtc::RTCStats>(
786 stats_defined_members.release())); 802 stats_defined_members.release()));
787 803
788 pc_handler_->native_peer_connection()->SetGetStatsReport(report); 804 pc_handler_->native_peer_connection()->SetGetStatsReport(report);
789 std::unique_ptr<blink::WebRTCStatsReport> result; 805 std::unique_ptr<blink::WebRTCStatsReport> result;
790 pc_handler_->GetStats(std::unique_ptr<blink::WebRTCStatsReportCallback>( 806 pc_handler_->GetStats(std::unique_ptr<blink::WebRTCStatsReportCallback>(
791 new MockRTCStatsReportCallback(&result))); 807 new MockRTCStatsReportCallback(&result)));
792 base::RunLoop().RunUntilIdle(); 808 RunMessageLoopsUntilIdle();
793 EXPECT_TRUE(result); 809 EXPECT_TRUE(result);
794 810
795 int undefined_stats_count = 0; 811 int undefined_stats_count = 0;
796 int defined_stats_count = 0; 812 int defined_stats_count = 0;
797 for (std::unique_ptr<blink::WebRTCStats> stats = result->Next(); stats; 813 for (std::unique_ptr<blink::WebRTCStats> stats = result->Next(); stats;
798 stats.reset(result->Next().release())) { 814 stats.reset(result->Next().release())) {
799 EXPECT_EQ(stats->GetType().Utf8(), webrtc::RTCTestStats::kType); 815 EXPECT_EQ(stats->GetType().Utf8(), webrtc::RTCTestStats::kType);
800 if (stats->Id().Utf8() == "RTCUndefinedStats") { 816 if (stats->Id().Utf8() == "RTCUndefinedStats") {
801 ++undefined_stats_count; 817 ++undefined_stats_count;
802 EXPECT_EQ(stats->Timestamp(), 1.0); 818 EXPECT_EQ(stats->Timestamp(), 1.0);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 } 892 }
877 EXPECT_EQ(undefined_stats_count, 1); 893 EXPECT_EQ(undefined_stats_count, 1);
878 EXPECT_EQ(defined_stats_count, 1); 894 EXPECT_EQ(defined_stats_count, 1);
879 } 895 }
880 896
881 TEST_F(RTCPeerConnectionHandlerTest, GetReceivers) { 897 TEST_F(RTCPeerConnectionHandlerTest, GetReceivers) {
882 std::vector<blink::WebMediaStream> remote_streams; 898 std::vector<blink::WebMediaStream> remote_streams;
883 899
884 pc_handler_->observer()->OnAddStream( 900 pc_handler_->observer()->OnAddStream(
885 AddRemoteMockMediaStream("stream0", "video0", "audio0")); 901 AddRemoteMockMediaStream("stream0", "video0", "audio0"));
886 base::RunLoop().RunUntilIdle(); 902 RunMessageLoopsUntilIdle();
887 remote_streams.push_back(mock_client_->remote_stream()); 903 remote_streams.push_back(mock_client_->remote_stream());
888 pc_handler_->observer()->OnAddStream( 904 pc_handler_->observer()->OnAddStream(
889 AddRemoteMockMediaStream("stream1", "video1", "audio1")); 905 AddRemoteMockMediaStream("stream1", "video1", "audio1"));
890 base::RunLoop().RunUntilIdle(); 906 RunMessageLoopsUntilIdle();
891 remote_streams.push_back(mock_client_->remote_stream()); 907 remote_streams.push_back(mock_client_->remote_stream());
892 pc_handler_->observer()->OnAddStream( 908 pc_handler_->observer()->OnAddStream(
893 AddRemoteMockMediaStream("stream2", "video2", "audio2")); 909 AddRemoteMockMediaStream("stream2", "video2", "audio2"));
894 base::RunLoop().RunUntilIdle(); 910 RunMessageLoopsUntilIdle();
895 remote_streams.push_back(mock_client_->remote_stream()); 911 remote_streams.push_back(mock_client_->remote_stream());
896 912
897 std::set<std::string> expected_remote_track_ids; 913 std::set<std::string> expected_remote_track_ids;
898 expected_remote_track_ids.insert("video0"); 914 expected_remote_track_ids.insert("video0");
899 expected_remote_track_ids.insert("audio0"); 915 expected_remote_track_ids.insert("audio0");
900 expected_remote_track_ids.insert("video1"); 916 expected_remote_track_ids.insert("video1");
901 expected_remote_track_ids.insert("audio1"); 917 expected_remote_track_ids.insert("audio1");
902 expected_remote_track_ids.insert("video2"); 918 expected_remote_track_ids.insert("video2");
903 expected_remote_track_ids.insert("audio2"); 919 expected_remote_track_ids.insert("audio2");
904 920
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 pc_handler_.get(), 1163 pc_handler_.get(),
1148 testing::Property(&blink::WebMediaStream::Id, 1164 testing::Property(&blink::WebMediaStream::Id,
1149 blink::WebString::FromASCII(remote_stream_label)), 1165 blink::WebString::FromASCII(remote_stream_label)),
1150 PeerConnectionTracker::SOURCE_REMOTE)); 1166 PeerConnectionTracker::SOURCE_REMOTE));
1151 EXPECT_CALL(*mock_client_.get(), 1167 EXPECT_CALL(*mock_client_.get(),
1152 DidRemoveRemoteStream(testing::Property( 1168 DidRemoveRemoteStream(testing::Property(
1153 &blink::WebMediaStream::Id, 1169 &blink::WebMediaStream::Id,
1154 blink::WebString::FromASCII(remote_stream_label)))); 1170 blink::WebString::FromASCII(remote_stream_label))));
1155 1171
1156 pc_handler_->observer()->OnAddStream(remote_stream); 1172 pc_handler_->observer()->OnAddStream(remote_stream);
1157 base::RunLoop().RunUntilIdle(); 1173 RunMessageLoopsUntilIdle();
1158 pc_handler_->observer()->OnRemoveStream(remote_stream); 1174 pc_handler_->observer()->OnRemoveStream(remote_stream);
1159 base::RunLoop().RunUntilIdle(); 1175 RunMessageLoopsUntilIdle();
1160 } 1176 }
1161 1177
1162 // This test that WebKit is notified about remote track state changes. 1178 // This test that WebKit is notified about remote track state changes.
1163 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { 1179 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) {
1164 std::string remote_stream_label("remote_stream"); 1180 std::string remote_stream_label("remote_stream");
1165 rtc::scoped_refptr<webrtc::MediaStreamInterface> remote_stream( 1181 rtc::scoped_refptr<webrtc::MediaStreamInterface> remote_stream(
1166 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); 1182 AddRemoteMockMediaStream(remote_stream_label, "video", "audio"));
1167 1183
1168 testing::InSequence sequence; 1184 testing::InSequence sequence;
1169 EXPECT_CALL(*mock_client_.get(), 1185 EXPECT_CALL(*mock_client_.get(),
1170 DidAddRemoteStream(testing::Property( 1186 DidAddRemoteStream(testing::Property(
1171 &blink::WebMediaStream::Id, 1187 &blink::WebMediaStream::Id,
1172 blink::WebString::FromASCII(remote_stream_label)))); 1188 blink::WebString::FromASCII(remote_stream_label))));
1173 pc_handler_->observer()->OnAddStream(remote_stream); 1189 pc_handler_->observer()->OnAddStream(remote_stream);
1174 base::RunLoop().RunUntilIdle(); 1190 RunMessageLoopsUntilIdle();
1175 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream(); 1191 const blink::WebMediaStream& webkit_stream = mock_client_->remote_stream();
1176 1192
1177 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 1193 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
1178 webkit_stream.AudioTracks(audio_tracks); 1194 webkit_stream.AudioTracks(audio_tracks);
1179 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, 1195 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive,
1180 audio_tracks[0].Source().GetReadyState()); 1196 audio_tracks[0].Source().GetReadyState());
1181 1197
1182 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 1198 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
1183 webkit_stream.VideoTracks(video_tracks); 1199 webkit_stream.VideoTracks(video_tracks);
1184 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive, 1200 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateLive,
1185 video_tracks[0].Source().GetReadyState()); 1201 video_tracks[0].Source().GetReadyState());
1186 1202
1187 static_cast<MockWebRtcAudioTrack*>(remote_stream->GetAudioTracks()[0].get()) 1203 static_cast<MockWebRtcAudioTrack*>(remote_stream->GetAudioTracks()[0].get())
1188 ->SetEnded(); 1204 ->SetEnded();
1189 base::RunLoop().RunUntilIdle(); 1205 RunMessageLoopsUntilIdle();
1190 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded, 1206 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded,
1191 audio_tracks[0].Source().GetReadyState()); 1207 audio_tracks[0].Source().GetReadyState());
1192 1208
1193 static_cast<MockWebRtcVideoTrack*>(remote_stream->GetVideoTracks()[0].get()) 1209 static_cast<MockWebRtcVideoTrack*>(remote_stream->GetVideoTracks()[0].get())
1194 ->SetEnded(); 1210 ->SetEnded();
1195 base::RunLoop().RunUntilIdle(); 1211 RunMessageLoopsUntilIdle();
1196 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded, 1212 EXPECT_EQ(blink::WebMediaStreamSource::kReadyStateEnded,
1197 video_tracks[0].Source().GetReadyState()); 1213 video_tracks[0].Source().GetReadyState());
1198 } 1214 }
1199 1215
1200 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { 1216 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) {
1201 std::string remote_stream_label("remote_stream"); 1217 std::string remote_stream_label("remote_stream");
1202 base::RunLoop run_loop; 1218 base::RunLoop run_loop;
1203 1219
1204 // Grab the added media stream when it's been successfully added to the PC. 1220 // Grab the added media stream when it's been successfully added to the PC.
1205 blink::WebMediaStream webkit_stream; 1221 blink::WebMediaStream webkit_stream;
(...skipping 14 matching lines...) Expand all
1220 // source later. 1236 // source later.
1221 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 1237 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
1222 webkit_stream.AudioTracks(audio_tracks); 1238 webkit_stream.AudioTracks(audio_tracks);
1223 EXPECT_EQ(1u, audio_tracks.size()); 1239 EXPECT_EQ(1u, audio_tracks.size());
1224 } 1240 }
1225 1241
1226 // Remove the Webrtc audio track from the Webrtc MediaStream. 1242 // Remove the Webrtc audio track from the Webrtc MediaStream.
1227 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = 1243 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track =
1228 remote_stream->GetAudioTracks()[0].get(); 1244 remote_stream->GetAudioTracks()[0].get();
1229 remote_stream->RemoveTrack(webrtc_track.get()); 1245 remote_stream->RemoveTrack(webrtc_track.get());
1230 base::RunLoop().RunUntilIdle(); 1246 RunMessageLoopsUntilIdle();
1231 1247
1232 { 1248 {
1233 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1; 1249 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks1;
1234 webkit_stream.AudioTracks(modified_audio_tracks1); 1250 webkit_stream.AudioTracks(modified_audio_tracks1);
1235 EXPECT_EQ(0u, modified_audio_tracks1.size()); 1251 EXPECT_EQ(0u, modified_audio_tracks1.size());
1236 } 1252 }
1237 1253
1238 blink::WebHeap::CollectGarbageForTesting(); 1254 blink::WebHeap::CollectGarbageForTesting();
1239 1255
1240 // Add the WebRtc audio track again. 1256 // Add the WebRtc audio track again.
1241 remote_stream->AddTrack(webrtc_track.get()); 1257 remote_stream->AddTrack(webrtc_track.get());
1242 base::RunLoop().RunUntilIdle(); 1258 RunMessageLoopsUntilIdle();
1243 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2; 1259 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks2;
1244 webkit_stream.AudioTracks(modified_audio_tracks2); 1260 webkit_stream.AudioTracks(modified_audio_tracks2);
1245 EXPECT_EQ(1u, modified_audio_tracks2.size()); 1261 EXPECT_EQ(1u, modified_audio_tracks2.size());
1246 } 1262 }
1247 1263
1248 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { 1264 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) {
1249 std::string remote_stream_label("remote_stream"); 1265 std::string remote_stream_label("remote_stream");
1250 base::RunLoop run_loop; 1266 base::RunLoop run_loop;
1251 1267
1252 // Grab the added media stream when it's been successfully added to the PC. 1268 // Grab the added media stream when it's been successfully added to the PC.
(...skipping 15 matching lines...) Expand all
1268 // source later. 1284 // source later.
1269 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 1285 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
1270 webkit_stream.VideoTracks(video_tracks); 1286 webkit_stream.VideoTracks(video_tracks);
1271 EXPECT_EQ(1u, video_tracks.size()); 1287 EXPECT_EQ(1u, video_tracks.size());
1272 } 1288 }
1273 1289
1274 // Remove the Webrtc video track from the Webrtc MediaStream. 1290 // Remove the Webrtc video track from the Webrtc MediaStream.
1275 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = 1291 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track =
1276 remote_stream->GetVideoTracks()[0].get(); 1292 remote_stream->GetVideoTracks()[0].get();
1277 remote_stream->RemoveTrack(webrtc_track.get()); 1293 remote_stream->RemoveTrack(webrtc_track.get());
1278 base::RunLoop().RunUntilIdle(); 1294 RunMessageLoopsUntilIdle();
1279 { 1295 {
1280 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1; 1296 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks1;
1281 webkit_stream.VideoTracks(modified_video_tracks1); 1297 webkit_stream.VideoTracks(modified_video_tracks1);
1282 EXPECT_EQ(0u, modified_video_tracks1.size()); 1298 EXPECT_EQ(0u, modified_video_tracks1.size());
1283 } 1299 }
1284 1300
1285 blink::WebHeap::CollectGarbageForTesting(); 1301 blink::WebHeap::CollectGarbageForTesting();
1286 1302
1287 // Add the WebRtc video track again. 1303 // Add the WebRtc video track again.
1288 remote_stream->AddTrack(webrtc_track.get()); 1304 remote_stream->AddTrack(webrtc_track.get());
1289 base::RunLoop().RunUntilIdle(); 1305 RunMessageLoopsUntilIdle();
1290 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2; 1306 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks2;
1291 webkit_stream.VideoTracks(modified_video_tracks2); 1307 webkit_stream.VideoTracks(modified_video_tracks2);
1292 EXPECT_EQ(1u, modified_video_tracks2.size()); 1308 EXPECT_EQ(1u, modified_video_tracks2.size());
1293 } 1309 }
1294 1310
1295 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddTracksFromRemoteStream) { 1311 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddTracksFromRemoteStream) {
1296 std::string remote_stream_label("remote_stream"); 1312 std::string remote_stream_label("remote_stream");
1297 base::RunLoop run_loop; 1313 base::RunLoop run_loop;
1298 1314
1299 // Grab the added media stream when it's been successfully added to the PC. 1315 // Grab the added media stream when it's been successfully added to the PC.
(...skipping 19 matching lines...) Expand all
1319 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 1335 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
1320 webkit_stream.VideoTracks(video_tracks); 1336 webkit_stream.VideoTracks(video_tracks);
1321 EXPECT_EQ(1u, video_tracks.size()); 1337 EXPECT_EQ(1u, video_tracks.size());
1322 } 1338 }
1323 1339
1324 // Remove the Webrtc tracks from the MediaStream. 1340 // Remove the Webrtc tracks from the MediaStream.
1325 auto audio_track = remote_stream->GetAudioTracks()[0]; 1341 auto audio_track = remote_stream->GetAudioTracks()[0];
1326 EXPECT_TRUE(remote_stream->RemoveTrack(audio_track.get())); 1342 EXPECT_TRUE(remote_stream->RemoveTrack(audio_track.get()));
1327 auto video_track = remote_stream->GetVideoTracks()[0]; 1343 auto video_track = remote_stream->GetVideoTracks()[0];
1328 EXPECT_TRUE(remote_stream->RemoveTrack(video_track.get())); 1344 EXPECT_TRUE(remote_stream->RemoveTrack(video_track.get()));
1329 base::RunLoop().RunUntilIdle(); 1345 RunMessageLoopsUntilIdle();
1330 1346
1331 { 1347 {
1332 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks; 1348 blink::WebVector<blink::WebMediaStreamTrack> modified_audio_tracks;
1333 webkit_stream.AudioTracks(modified_audio_tracks); 1349 webkit_stream.AudioTracks(modified_audio_tracks);
1334 EXPECT_EQ(0u, modified_audio_tracks.size()); 1350 EXPECT_EQ(0u, modified_audio_tracks.size());
1335 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks; 1351 blink::WebVector<blink::WebMediaStreamTrack> modified_video_tracks;
1336 webkit_stream.VideoTracks(modified_video_tracks); 1352 webkit_stream.VideoTracks(modified_video_tracks);
1337 EXPECT_EQ(0u, modified_video_tracks.size()); 1353 EXPECT_EQ(0u, modified_video_tracks.size());
1338 } 1354 }
1339 1355
1340 blink::WebHeap::CollectGarbageForTesting(); 1356 blink::WebHeap::CollectGarbageForTesting();
1341 1357
1342 // Add the tracks again. 1358 // Add the tracks again.
1343 remote_stream->AddTrack(audio_track.get()); 1359 remote_stream->AddTrack(audio_track.get());
1344 base::RunLoop().RunUntilIdle(); 1360 RunMessageLoopsUntilIdle();
1345 remote_stream->AddTrack(video_track.get()); 1361 remote_stream->AddTrack(video_track.get());
1346 base::RunLoop().RunUntilIdle(); 1362 RunMessageLoopsUntilIdle();
1347 1363
1348 blink::WebHeap::CollectGarbageForTesting(); 1364 blink::WebHeap::CollectGarbageForTesting();
1349 1365
1350 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; 1366 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks;
1351 webkit_stream.AudioTracks(audio_tracks); 1367 webkit_stream.AudioTracks(audio_tracks);
1352 EXPECT_EQ(1u, audio_tracks.size()); 1368 EXPECT_EQ(1u, audio_tracks.size());
1353 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; 1369 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
1354 webkit_stream.VideoTracks(video_tracks); 1370 webkit_stream.VideoTracks(video_tracks);
1355 EXPECT_EQ(1u, video_tracks.size()); 1371 EXPECT_EQ(1u, video_tracks.size());
1356 } 1372 }
1357 1373
1358 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { 1374 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) {
1359 testing::InSequence sequence; 1375 testing::InSequence sequence;
1360 EXPECT_CALL(*mock_tracker_.get(), 1376 EXPECT_CALL(*mock_tracker_.get(),
1361 TrackAddIceCandidate(pc_handler_.get(), _, 1377 TrackAddIceCandidate(pc_handler_.get(), _,
1362 PeerConnectionTracker::SOURCE_LOCAL, true)); 1378 PeerConnectionTracker::SOURCE_LOCAL, true));
1363 EXPECT_CALL(*mock_client_.get(), DidGenerateICECandidate(_)); 1379 EXPECT_CALL(*mock_client_.get(), DidGenerateICECandidate(_));
1364 1380
1365 std::unique_ptr<webrtc::IceCandidateInterface> native_candidate( 1381 std::unique_ptr<webrtc::IceCandidateInterface> native_candidate(
1366 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp)); 1382 mock_dependency_factory_->CreateIceCandidate("sdpMid", 1, kDummySdp));
1367 pc_handler_->observer()->OnIceCandidate(native_candidate.get()); 1383 pc_handler_->observer()->OnIceCandidate(native_candidate.get());
1368 base::RunLoop().RunUntilIdle(); 1384 RunMessageLoopsUntilIdle();
1369 EXPECT_EQ("sdpMid", mock_client_->candidate_mid()); 1385 EXPECT_EQ("sdpMid", mock_client_->candidate_mid());
1370 EXPECT_EQ(1, mock_client_->candidate_mlineindex()); 1386 EXPECT_EQ(1, mock_client_->candidate_mlineindex());
1371 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp()); 1387 EXPECT_EQ(kDummySdp, mock_client_->candidate_sdp());
1372 } 1388 }
1373 1389
1374 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) { 1390 TEST_F(RTCPeerConnectionHandlerTest, OnRenegotiationNeeded) {
1375 testing::InSequence sequence; 1391 testing::InSequence sequence;
1376 EXPECT_CALL(*mock_tracker_.get(), 1392 EXPECT_CALL(*mock_tracker_.get(),
1377 TrackOnRenegotiationNeeded(pc_handler_.get())); 1393 TrackOnRenegotiationNeeded(pc_handler_.get()));
1378 EXPECT_CALL(*mock_client_.get(), NegotiationNeeded()); 1394 EXPECT_CALL(*mock_client_.get(), NegotiationNeeded());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1412 testing::Ref(tracks[0]))); 1428 testing::Ref(tracks[0])));
1413 1429
1414 std::unique_ptr<blink::WebRTCDTMFSenderHandler> sender( 1430 std::unique_ptr<blink::WebRTCDTMFSenderHandler> sender(
1415 pc_handler_->CreateDTMFSender(tracks[0])); 1431 pc_handler_->CreateDTMFSender(tracks[0]));
1416 EXPECT_TRUE(sender.get()); 1432 EXPECT_TRUE(sender.get());
1417 1433
1418 StopAllTracks(local_stream); 1434 StopAllTracks(local_stream);
1419 } 1435 }
1420 1436
1421 } // namespace content 1437 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/rtc_peer_connection_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698