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/shell/test_runner/mock_webrtc_peer_connection_handler.h" | 5 #include "content/shell/test_runner/mock_webrtc_peer_connection_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 public: | 244 public: |
245 MockWebRTCRtpSender(uintptr_t id, | 245 MockWebRTCRtpSender(uintptr_t id, |
246 std::unique_ptr<blink::WebMediaStreamTrack> track) | 246 std::unique_ptr<blink::WebMediaStreamTrack> track) |
247 : id_(id), track_(std::move(track)) {} | 247 : id_(id), track_(std::move(track)) {} |
248 | 248 |
249 uintptr_t Id() const override { return id_; } | 249 uintptr_t Id() const override { return id_; } |
250 const blink::WebMediaStreamTrack* Track() const override { | 250 const blink::WebMediaStreamTrack* Track() const override { |
251 return track_.get(); | 251 return track_.get(); |
252 } | 252 } |
253 | 253 |
| 254 void SetTrack(std::unique_ptr<blink::WebMediaStreamTrack> track) { |
| 255 track_ = std::move(track); |
| 256 } |
| 257 |
254 private: | 258 private: |
255 uintptr_t id_; | 259 uintptr_t id_; |
256 std::unique_ptr<blink::WebMediaStreamTrack> track_; | 260 std::unique_ptr<blink::WebMediaStreamTrack> track_; |
257 }; | 261 }; |
258 | 262 |
259 class MockWebRTCRtpContributingSource | 263 class MockWebRTCRtpContributingSource |
260 : public blink::WebRTCRtpContributingSource { | 264 : public blink::WebRTCRtpContributingSource { |
261 public: | 265 public: |
262 MockWebRTCRtpContributingSource( | 266 MockWebRTCRtpContributingSource( |
263 blink::WebRTCRtpContributingSourceType source_type, | 267 blink::WebRTCRtpContributingSourceType source_type, |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 stats.addMember("sequenceString", | 635 stats.addMember("sequenceString", |
632 blink::kWebRTCStatsMemberTypeSequenceString); | 636 blink::kWebRTCStatsMemberTypeSequenceString); |
633 report->AddStats(stats); | 637 report->AddStats(stats); |
634 callback->OnStatsDelivered( | 638 callback->OnStatsDelivered( |
635 std::unique_ptr<blink::WebRTCStatsReport>(report.release())); | 639 std::unique_ptr<blink::WebRTCStatsReport>(report.release())); |
636 } | 640 } |
637 | 641 |
638 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> | 642 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> |
639 MockWebRTCPeerConnectionHandler::GetSenders() { | 643 MockWebRTCPeerConnectionHandler::GetSenders() { |
640 std::vector<std::unique_ptr<blink::WebRTCRtpSender>> senders; | 644 std::vector<std::unique_ptr<blink::WebRTCRtpSender>> senders; |
| 645 // Senders of tracks in |local_streams_| (from |Add/RemoveStream|). |
641 for (const auto& pair : local_streams_) { | 646 for (const auto& pair : local_streams_) { |
642 const auto& local_stream = pair.second; | 647 const auto& local_stream = pair.second; |
643 blink::WebVector<blink::WebMediaStreamTrack> local_tracks; | 648 blink::WebVector<blink::WebMediaStreamTrack> local_tracks; |
644 local_stream.AudioTracks(local_tracks); | 649 local_stream.AudioTracks(local_tracks); |
645 for (const auto& local_track : local_tracks) { | 650 for (const auto& local_track : local_tracks) { |
646 senders.push_back( | 651 senders.push_back( |
647 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( | 652 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( |
648 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), | 653 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), |
649 base::MakeUnique<WebMediaStreamTrack>(local_track)))); | 654 base::MakeUnique<WebMediaStreamTrack>(local_track)))); |
650 } | 655 } |
651 local_stream.VideoTracks(local_tracks); | 656 local_stream.VideoTracks(local_tracks); |
652 for (const auto& local_track : local_tracks) { | 657 for (const auto& local_track : local_tracks) { |
653 senders.push_back( | 658 senders.push_back( |
654 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( | 659 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( |
655 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), | 660 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), |
656 base::MakeUnique<WebMediaStreamTrack>(local_track)))); | 661 base::MakeUnique<WebMediaStreamTrack>(local_track)))); |
657 } | 662 } |
658 } | 663 } |
| 664 // Senders of tracks in |tracks_| (from |Add/RemoveTrack|). |
| 665 for (const auto& pair : tracks_) { |
| 666 const auto& track = pair.second; |
| 667 bool has_sender_for_track = false; |
| 668 for (const auto& sender : senders) { |
| 669 if (sender->Track()->Id() == track.Id()) { |
| 670 has_sender_for_track = true; |
| 671 break; |
| 672 } |
| 673 } |
| 674 if (has_sender_for_track) |
| 675 continue; |
| 676 senders.push_back(base::MakeUnique<MockWebRTCRtpSender>( |
| 677 GetIDByTrack(track.Id().Utf8(), &id_by_track_), |
| 678 base::MakeUnique<WebMediaStreamTrack>(track))); |
| 679 } |
659 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> web_vector( | 680 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> web_vector( |
660 senders.size()); | 681 senders.size()); |
661 for (size_t i = 0; i < senders.size(); ++i) { | 682 for (size_t i = 0; i < senders.size(); ++i) { |
662 web_vector[i] = std::move(senders[i]); | 683 web_vector[i] = std::move(senders[i]); |
663 } | 684 } |
664 return web_vector; | 685 return web_vector; |
665 } | 686 } |
666 | 687 |
667 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> | 688 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> |
668 MockWebRTCPeerConnectionHandler::GetReceivers() { | 689 MockWebRTCPeerConnectionHandler::GetReceivers() { |
(...skipping 17 matching lines...) Expand all Loading... |
686 } | 707 } |
687 } | 708 } |
688 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector( | 709 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector( |
689 receivers.size()); | 710 receivers.size()); |
690 for (size_t i = 0; i < receivers.size(); ++i) { | 711 for (size_t i = 0; i < receivers.size(); ++i) { |
691 web_vector[i] = std::move(receivers[i]); | 712 web_vector[i] = std::move(receivers[i]); |
692 } | 713 } |
693 return web_vector; | 714 return web_vector; |
694 } | 715 } |
695 | 716 |
| 717 std::unique_ptr<blink::WebRTCRtpSender> |
| 718 MockWebRTCPeerConnectionHandler::AddTrack( |
| 719 const blink::WebMediaStreamTrack& web_track, |
| 720 const blink::WebVector<blink::WebMediaStream>& web_streams) { |
| 721 for (const auto& sender : GetSenders()) { |
| 722 if (sender->Track() && sender->Track()->Id() == web_track.Id()) { |
| 723 return nullptr; |
| 724 } |
| 725 } |
| 726 tracks_[web_track.Id().Utf8()] = web_track; |
| 727 client_->NegotiationNeeded(); |
| 728 return base::MakeUnique<MockWebRTCRtpSender>( |
| 729 GetIDByTrack(web_track.Id().Utf8(), &id_by_track_), |
| 730 base::MakeUnique<blink::WebMediaStreamTrack>(web_track)); |
| 731 } |
| 732 |
| 733 bool MockWebRTCPeerConnectionHandler::RemoveTrack( |
| 734 blink::WebRTCRtpSender* web_sender) { |
| 735 if (!tracks_.erase(web_sender->Track()->Id().Utf8())) |
| 736 return false; |
| 737 MockWebRTCRtpSender* sender = static_cast<MockWebRTCRtpSender*>(web_sender); |
| 738 sender->SetTrack(nullptr); |
| 739 client_->NegotiationNeeded(); |
| 740 return true; |
| 741 } |
| 742 |
696 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() { | 743 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() { |
697 WebRTCDataChannelInit init; | 744 WebRTCDataChannelInit init; |
698 WebRTCDataChannelHandler* remote_data_channel = | 745 WebRTCDataChannelHandler* remote_data_channel = |
699 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init, | 746 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init, |
700 interfaces_->GetDelegate()); | 747 interfaces_->GetDelegate()); |
701 client_->DidAddRemoteDataChannel(remote_data_channel); | 748 client_->DidAddRemoteDataChannel(remote_data_channel); |
702 } | 749 } |
703 | 750 |
704 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::CreateDataChannel( | 751 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::CreateDataChannel( |
705 const WebString& label, | 752 const WebString& label, |
(...skipping 12 matching lines...) Expand all Loading... |
718 const WebMediaStreamTrack& track) { | 765 const WebMediaStreamTrack& track) { |
719 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); | 766 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); |
720 } | 767 } |
721 | 768 |
722 void MockWebRTCPeerConnectionHandler::Stop() { | 769 void MockWebRTCPeerConnectionHandler::Stop() { |
723 stopped_ = true; | 770 stopped_ = true; |
724 weak_factory_.InvalidateWeakPtrs(); | 771 weak_factory_.InvalidateWeakPtrs(); |
725 } | 772 } |
726 | 773 |
727 } // namespace test_runner | 774 } // namespace test_runner |
OLD | NEW |