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

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

Issue 2749703005: RTCRtpSender with track behind RuntimeEnabled flag (Closed)
Patch Set: external/wpt/webrtc/RTCPeerConnection-idl-expected.txt updated passing 2 more tests Created 3 years, 7 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>
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698