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

Side by Side Diff: content/shell/test_runner/mock_webrtc_peer_connection_handler.cc

Issue 2951713002: RTCPeerConnection.addTrack and removeTrack added (behind flag) (Closed)
Patch Set: Addressed deadbeef's comments Created 3 years, 5 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 // 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698