| 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 |