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

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

Issue 2759953003: Interface RTCRtpReceiver and RTCPeerConnection.getReceivers() added. (Closed)
Patch Set: DISALLOW_COPY_AND_ASSIGN Created 3 years, 8 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 "content/shell/test_runner/mock_webrtc_data_channel_handler.h" 15 #include "content/shell/test_runner/mock_webrtc_data_channel_handler.h"
16 #include "content/shell/test_runner/mock_webrtc_dtmf_sender_handler.h" 16 #include "content/shell/test_runner/mock_webrtc_dtmf_sender_handler.h"
17 #include "content/shell/test_runner/test_interfaces.h" 17 #include "content/shell/test_runner/test_interfaces.h"
18 #include "content/shell/test_runner/web_test_delegate.h" 18 #include "content/shell/test_runner/web_test_delegate.h"
19 #include "third_party/WebKit/public/platform/WebMediaStream.h" 19 #include "third_party/WebKit/public/platform/WebMediaStream.h"
20 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" 20 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
21 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 21 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
22 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" 22 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h"
23 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" 23 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h"
24 #include "third_party/WebKit/public/platform/WebRTCOfferOptions.h" 24 #include "third_party/WebKit/public/platform/WebRTCOfferOptions.h"
25 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h " 25 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h "
26 #include "third_party/WebKit/public/platform/WebRTCRtpReceiver.h"
26 #include "third_party/WebKit/public/platform/WebRTCStatsResponse.h" 27 #include "third_party/WebKit/public/platform/WebRTCStatsResponse.h"
27 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" 28 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h"
28 #include "third_party/WebKit/public/platform/WebString.h" 29 #include "third_party/WebKit/public/platform/WebString.h"
29 #include "third_party/WebKit/public/platform/WebVector.h" 30 #include "third_party/WebKit/public/platform/WebVector.h"
30 31
31 using namespace blink; 32 using namespace blink;
32 33
33 namespace test_runner { 34 namespace test_runner {
34 35
35 namespace { 36 namespace {
36 37
38 uintptr_t GetReceiverIDByTrack(
39 const std::string& track_id,
40 std::map<std::string, uintptr_t>* receiver_id_by_track) {
41 const auto& it = receiver_id_by_track->find(track_id);
42 if (it == receiver_id_by_track->end()) {
43 uintptr_t id = static_cast<uintptr_t>(receiver_id_by_track->size()) + 1;
44 receiver_id_by_track->insert(std::make_pair(track_id, id));
45 return id;
46 }
47 return it->second;
48 }
49
37 class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats { 50 class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats {
38 public: 51 public:
39 class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator { 52 class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator {
40 public: 53 public:
41 MemberIterator( 54 MemberIterator(
42 const std::vector<std::pair<std::string, std::string>>* values) 55 const std::vector<std::pair<std::string, std::string>>* values)
43 : values_(values) {} 56 : values_(values) {}
44 57
45 // blink::WebRTCLegacyStatsMemberIterator 58 // blink::WebRTCLegacyStatsMemberIterator
46 bool isEnd() const override { return i >= values_->size(); } 59 bool isEnd() const override { return i >= values_->size(); }
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 return nullptr; 230 return nullptr;
218 return std::unique_ptr<blink::WebRTCStats>( 231 return std::unique_ptr<blink::WebRTCStats>(
219 new MockWebRTCStats(stats_[i_++])); 232 new MockWebRTCStats(stats_[i_++]));
220 } 233 }
221 234
222 private: 235 private:
223 std::vector<MockWebRTCStats> stats_; 236 std::vector<MockWebRTCStats> stats_;
224 size_t i_; 237 size_t i_;
225 }; 238 };
226 239
240 class MockWebRTCRtpReceiver : public blink::WebRTCRtpReceiver {
241 public:
242 MockWebRTCRtpReceiver(uintptr_t id, const blink::WebMediaStreamTrack& track)
243 : id_(id), track_(track) {}
244 ~MockWebRTCRtpReceiver() override {}
245
246 uintptr_t id() const override { return id_; }
247 const blink::WebMediaStreamTrack& track() const override { return track_; }
248
249 private:
250 uintptr_t id_;
251 blink::WebMediaStreamTrack track_;
252 };
253
227 } // namespace 254 } // namespace
228 255
229 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler() 256 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler()
230 : weak_factory_(this) {} 257 : weak_factory_(this) {}
231 258
232 MockWebRTCPeerConnectionHandler::~MockWebRTCPeerConnectionHandler() {} 259 MockWebRTCPeerConnectionHandler::~MockWebRTCPeerConnectionHandler() {}
233 260
234 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler( 261 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(
235 WebRTCPeerConnectionHandlerClient* client, 262 WebRTCPeerConnectionHandlerClient* client,
236 TestInterfaces* interfaces) 263 TestInterfaces* interfaces)
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 stats.addMember("sequenceUint32", blink::WebRTCStatsMemberTypeSequenceUint32); 542 stats.addMember("sequenceUint32", blink::WebRTCStatsMemberTypeSequenceUint32);
516 stats.addMember("sequenceInt64", blink::WebRTCStatsMemberTypeSequenceInt64); 543 stats.addMember("sequenceInt64", blink::WebRTCStatsMemberTypeSequenceInt64);
517 stats.addMember("sequenceUint64", blink::WebRTCStatsMemberTypeSequenceUint64); 544 stats.addMember("sequenceUint64", blink::WebRTCStatsMemberTypeSequenceUint64);
518 stats.addMember("sequenceDouble", blink::WebRTCStatsMemberTypeSequenceDouble); 545 stats.addMember("sequenceDouble", blink::WebRTCStatsMemberTypeSequenceDouble);
519 stats.addMember("sequenceString", blink::WebRTCStatsMemberTypeSequenceString); 546 stats.addMember("sequenceString", blink::WebRTCStatsMemberTypeSequenceString);
520 report->AddStats(stats); 547 report->AddStats(stats);
521 callback->OnStatsDelivered( 548 callback->OnStatsDelivered(
522 std::unique_ptr<blink::WebRTCStatsReport>(report.release())); 549 std::unique_ptr<blink::WebRTCStatsReport>(report.release()));
523 } 550 }
524 551
552 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>>
553 MockWebRTCPeerConnectionHandler::getReceivers() {
554 std::vector<std::unique_ptr<blink::WebRTCRtpReceiver>> receivers;
555 for (const auto& pair : remote_streams_) {
556 const auto& remote_stream = pair.second;
557 blink::WebVector<blink::WebMediaStreamTrack> remote_tracks;
558 remote_stream.audioTracks(remote_tracks);
559 for (const auto& remote_track : remote_tracks) {
560 receivers.push_back(
561 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver(
562 GetReceiverIDByTrack(remote_track.id().utf8(),
563 &receiver_id_by_track_),
564 remote_track)));
565 }
566 remote_stream.videoTracks(remote_tracks);
567 for (const auto& remote_track : remote_tracks) {
568 receivers.push_back(
569 std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver(
570 GetReceiverIDByTrack(remote_track.id().utf8(),
571 &receiver_id_by_track_),
572 remote_track)));
573 }
574 }
575 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector(
576 receivers.size());
577 for (size_t i = 0; i < receivers.size(); ++i) {
578 web_vector[i] = std::move(receivers[i]);
579 }
580 return web_vector;
581 }
582
525 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() { 583 void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() {
526 WebRTCDataChannelInit init; 584 WebRTCDataChannelInit init;
527 WebRTCDataChannelHandler* remote_data_channel = 585 WebRTCDataChannelHandler* remote_data_channel =
528 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init, 586 new MockWebRTCDataChannelHandler("MockRemoteDataChannel", init,
529 interfaces_->GetDelegate()); 587 interfaces_->GetDelegate());
530 client_->didAddRemoteDataChannel(remote_data_channel); 588 client_->didAddRemoteDataChannel(remote_data_channel);
531 } 589 }
532 590
533 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel( 591 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel(
534 const WebString& label, 592 const WebString& label,
(...skipping 12 matching lines...) Expand all
547 const WebMediaStreamTrack& track) { 605 const WebMediaStreamTrack& track) {
548 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate()); 606 return new MockWebRTCDTMFSenderHandler(track, interfaces_->GetDelegate());
549 } 607 }
550 608
551 void MockWebRTCPeerConnectionHandler::stop() { 609 void MockWebRTCPeerConnectionHandler::stop() {
552 stopped_ = true; 610 stopped_ = true;
553 weak_factory_.InvalidateWeakPtrs(); 611 weak_factory_.InvalidateWeakPtrs();
554 } 612 }
555 613
556 } // namespace test_runner 614 } // namespace test_runner
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698