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 "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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |