| 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> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/bind.h" | 13 #include "base/bind.h" |
| 14 #include "base/bind_helpers.h" | 14 #include "base/bind_helpers.h" |
| 15 #include "base/memory/ptr_util.h" | 15 #include "base/memory/ptr_util.h" |
| 16 #include "content/shell/test_runner/mock_webrtc_data_channel_handler.h" | 16 #include "content/shell/test_runner/mock_webrtc_data_channel_handler.h" |
| 17 #include "content/shell/test_runner/mock_webrtc_dtmf_sender_handler.h" | 17 #include "content/shell/test_runner/mock_webrtc_dtmf_sender_handler.h" |
| 18 #include "content/shell/test_runner/test_interfaces.h" | 18 #include "content/shell/test_runner/test_interfaces.h" |
| 19 #include "content/shell/test_runner/web_test_delegate.h" | 19 #include "content/shell/test_runner/web_test_delegate.h" |
| 20 #include "third_party/WebKit/public/platform/WebMediaStream.h" | 20 #include "third_party/WebKit/public/platform/WebMediaStream.h" |
| 21 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 21 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
| 22 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 22 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
| 23 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" | 23 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" |
| 24 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" | 24 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" |
| 25 #include "third_party/WebKit/public/platform/WebRTCOfferOptions.h" | 25 #include "third_party/WebKit/public/platform/WebRTCOfferOptions.h" |
| 26 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h
" | 26 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h
" |
| 27 #include "third_party/WebKit/public/platform/WebRTCRtpContributingSource.h" | 27 #include "third_party/WebKit/public/platform/WebRTCRtpContributingSource.h" |
| 28 #include "third_party/WebKit/public/platform/WebRTCRtpReceiver.h" | 28 #include "third_party/WebKit/public/platform/WebRTCRtpReceiver.h" |
| 29 #include "third_party/WebKit/public/platform/WebRTCRtpSender.h" |
| 29 #include "third_party/WebKit/public/platform/WebRTCStatsResponse.h" | 30 #include "third_party/WebKit/public/platform/WebRTCStatsResponse.h" |
| 30 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" | 31 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" |
| 31 #include "third_party/WebKit/public/platform/WebString.h" | 32 #include "third_party/WebKit/public/platform/WebString.h" |
| 32 #include "third_party/WebKit/public/platform/WebVector.h" | 33 #include "third_party/WebKit/public/platform/WebVector.h" |
| 33 | 34 |
| 34 using namespace blink; | 35 using namespace blink; |
| 35 | 36 |
| 36 namespace test_runner { | 37 namespace test_runner { |
| 37 | 38 |
| 38 namespace { | 39 namespace { |
| 39 | 40 |
| 40 uintptr_t GetReceiverIDByTrack( | 41 uintptr_t GetIDByTrack(const std::string& track_id, |
| 41 const std::string& track_id, | 42 std::map<std::string, uintptr_t>* id_by_track) { |
| 42 std::map<std::string, uintptr_t>* receiver_id_by_track) { | 43 const auto& it = id_by_track->find(track_id); |
| 43 const auto& it = receiver_id_by_track->find(track_id); | 44 if (it == id_by_track->end()) { |
| 44 if (it == receiver_id_by_track->end()) { | 45 uintptr_t id = static_cast<uintptr_t>(id_by_track->size()) + 1; |
| 45 uintptr_t id = static_cast<uintptr_t>(receiver_id_by_track->size()) + 1; | 46 id_by_track->insert(std::make_pair(track_id, id)); |
| 46 receiver_id_by_track->insert(std::make_pair(track_id, id)); | |
| 47 return id; | 47 return id; |
| 48 } | 48 } |
| 49 return it->second; | 49 return it->second; |
| 50 } | 50 } |
| 51 | 51 |
| 52 class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats { | 52 class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats { |
| 53 public: | 53 public: |
| 54 class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator { | 54 class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator { |
| 55 public: | 55 public: |
| 56 MemberIterator( | 56 MemberIterator( |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 return std::unique_ptr<blink::WebRTCStats>( | 233 return std::unique_ptr<blink::WebRTCStats>( |
| 234 new MockWebRTCStats(stats_[i_++])); | 234 new MockWebRTCStats(stats_[i_++])); |
| 235 } | 235 } |
| 236 size_t Size() const override { return stats_.size(); } | 236 size_t Size() const override { return stats_.size(); } |
| 237 | 237 |
| 238 private: | 238 private: |
| 239 std::vector<MockWebRTCStats> stats_; | 239 std::vector<MockWebRTCStats> stats_; |
| 240 size_t i_; | 240 size_t i_; |
| 241 }; | 241 }; |
| 242 | 242 |
| 243 class MockWebRTCRtpSender : public blink::WebRTCRtpSender { |
| 244 public: |
| 245 MockWebRTCRtpSender(uintptr_t id, |
| 246 std::unique_ptr<blink::WebMediaStreamTrack> track) |
| 247 : id_(id), track_(std::move(track)) {} |
| 248 |
| 249 uintptr_t Id() const override { return id_; } |
| 250 const blink::WebMediaStreamTrack* Track() const override { |
| 251 return track_.get(); |
| 252 } |
| 253 |
| 254 private: |
| 255 uintptr_t id_; |
| 256 std::unique_ptr<blink::WebMediaStreamTrack> track_; |
| 257 }; |
| 258 |
| 243 class MockWebRTCRtpContributingSource | 259 class MockWebRTCRtpContributingSource |
| 244 : public blink::WebRTCRtpContributingSource { | 260 : public blink::WebRTCRtpContributingSource { |
| 245 public: | 261 public: |
| 246 MockWebRTCRtpContributingSource( | 262 MockWebRTCRtpContributingSource( |
| 247 blink::WebRTCRtpContributingSourceType source_type, | 263 blink::WebRTCRtpContributingSourceType source_type, |
| 248 double timestamp_ms, | 264 double timestamp_ms, |
| 249 uint32_t source) | 265 uint32_t source) |
| 250 : source_type_(source_type), | 266 : source_type_(source_type), |
| 251 timestamp_ms_(timestamp_ms), | 267 timestamp_ms_(timestamp_ms), |
| 252 source_(source) {} | 268 source_(source) {} |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 612 blink::kWebRTCStatsMemberTypeSequenceUint64); | 628 blink::kWebRTCStatsMemberTypeSequenceUint64); |
| 613 stats.addMember("sequenceDouble", | 629 stats.addMember("sequenceDouble", |
| 614 blink::kWebRTCStatsMemberTypeSequenceDouble); | 630 blink::kWebRTCStatsMemberTypeSequenceDouble); |
| 615 stats.addMember("sequenceString", | 631 stats.addMember("sequenceString", |
| 616 blink::kWebRTCStatsMemberTypeSequenceString); | 632 blink::kWebRTCStatsMemberTypeSequenceString); |
| 617 report->AddStats(stats); | 633 report->AddStats(stats); |
| 618 callback->OnStatsDelivered( | 634 callback->OnStatsDelivered( |
| 619 std::unique_ptr<blink::WebRTCStatsReport>(report.release())); | 635 std::unique_ptr<blink::WebRTCStatsReport>(report.release())); |
| 620 } | 636 } |
| 621 | 637 |
| 638 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> |
| 639 MockWebRTCPeerConnectionHandler::GetSenders() { |
| 640 std::vector<std::unique_ptr<blink::WebRTCRtpSender>> senders; |
| 641 for (const auto& pair : local_streams_) { |
| 642 const auto& local_stream = pair.second; |
| 643 blink::WebVector<blink::WebMediaStreamTrack> local_tracks; |
| 644 local_stream.AudioTracks(local_tracks); |
| 645 for (const auto& local_track : local_tracks) { |
| 646 senders.push_back( |
| 647 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( |
| 648 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), |
| 649 base::MakeUnique<WebMediaStreamTrack>(local_track)))); |
| 650 } |
| 651 local_stream.VideoTracks(local_tracks); |
| 652 for (const auto& local_track : local_tracks) { |
| 653 senders.push_back( |
| 654 std::unique_ptr<blink::WebRTCRtpSender>(new MockWebRTCRtpSender( |
| 655 GetIDByTrack(local_track.Id().Utf8(), &id_by_track_), |
| 656 base::MakeUnique<WebMediaStreamTrack>(local_track)))); |
| 657 } |
| 658 } |
| 659 blink::WebVector<std::unique_ptr<blink::WebRTCRtpSender>> web_vector( |
| 660 senders.size()); |
| 661 for (size_t i = 0; i < senders.size(); ++i) { |
| 662 web_vector[i] = std::move(senders[i]); |
| 663 } |
| 664 return web_vector; |
| 665 } |
| 666 |
| 622 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> | 667 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> |
| 623 MockWebRTCPeerConnectionHandler::GetReceivers() { | 668 MockWebRTCPeerConnectionHandler::GetReceivers() { |
| 624 std::vector<std::unique_ptr<blink::WebRTCRtpReceiver>> receivers; | 669 std::vector<std::unique_ptr<blink::WebRTCRtpReceiver>> receivers; |
| 625 for (const auto& pair : remote_streams_) { | 670 for (const auto& pair : remote_streams_) { |
| 626 const auto& remote_stream = pair.second; | 671 const auto& remote_stream = pair.second; |
| 627 blink::WebVector<blink::WebMediaStreamTrack> remote_tracks; | 672 blink::WebVector<blink::WebMediaStreamTrack> remote_tracks; |
| 628 remote_stream.AudioTracks(remote_tracks); | 673 remote_stream.AudioTracks(remote_tracks); |
| 629 for (const auto& remote_track : remote_tracks) { | 674 for (const auto& remote_track : remote_tracks) { |
| 630 receivers.push_back( | 675 receivers.push_back( |
| 631 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( | 676 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( |
| 632 GetReceiverIDByTrack(remote_track.Id().Utf8(), | 677 GetIDByTrack(remote_track.Id().Utf8(), &id_by_track_), |
| 633 &receiver_id_by_track_), | |
| 634 remote_track))); | 678 remote_track))); |
| 635 } | 679 } |
| 636 remote_stream.VideoTracks(remote_tracks); | 680 remote_stream.VideoTracks(remote_tracks); |
| 637 for (const auto& remote_track : remote_tracks) { | 681 for (const auto& remote_track : remote_tracks) { |
| 638 receivers.push_back( | 682 receivers.push_back( |
| 639 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( | 683 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( |
| 640 GetReceiverIDByTrack(remote_track.Id().Utf8(), | 684 GetIDByTrack(remote_track.Id().Utf8(), &id_by_track_), |
| 641 &receiver_id_by_track_), | |
| 642 remote_track))); | 685 remote_track))); |
| 643 } | 686 } |
| 644 } | 687 } |
| 645 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector( | 688 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector( |
| 646 receivers.size()); | 689 receivers.size()); |
| 647 for (size_t i = 0; i < receivers.size(); ++i) { | 690 for (size_t i = 0; i < receivers.size(); ++i) { |
| 648 web_vector[i] = std::move(receivers[i]); | 691 web_vector[i] = std::move(receivers[i]); |
| 649 } | 692 } |
| 650 return web_vector; | 693 return web_vector; |
| 651 } | 694 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 675 const WebMediaStreamTrack& track) { | 718 const WebMediaStreamTrack& track) { |
| 676 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); | 719 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); |
| 677 } | 720 } |
| 678 | 721 |
| 679 void MockWebRTCPeerConnectionHandler::Stop() { | 722 void MockWebRTCPeerConnectionHandler::Stop() { |
| 680 stopped_ = true; | 723 stopped_ = true; |
| 681 weak_factory_.InvalidateWeakPtrs(); | 724 weak_factory_.InvalidateWeakPtrs(); |
| 682 } | 725 } |
| 683 | 726 |
| 684 } // namespace test_runner | 727 } // namespace test_runner |
| OLD | NEW |