Index: content/shell/test_runner/mock_webrtc_peer_connection_handler.cc |
diff --git a/content/shell/test_runner/mock_webrtc_peer_connection_handler.cc b/content/shell/test_runner/mock_webrtc_peer_connection_handler.cc |
index c2f4f10083d981d1e2a55331264052a247b6bd3a..053bb3193d72489a2adb1ac60764f2a5255b10a2 100644 |
--- a/content/shell/test_runner/mock_webrtc_peer_connection_handler.cc |
+++ b/content/shell/test_runner/mock_webrtc_peer_connection_handler.cc |
@@ -23,6 +23,7 @@ |
#include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" |
#include "third_party/WebKit/public/platform/WebRTCOfferOptions.h" |
#include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h" |
+#include "third_party/WebKit/public/platform/WebRTCRtpReceiver.h" |
#include "third_party/WebKit/public/platform/WebRTCStatsResponse.h" |
#include "third_party/WebKit/public/platform/WebRTCVoidRequest.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
@@ -34,6 +35,18 @@ namespace test_runner { |
namespace { |
+uintptr_t GetReceiverIDByTrack( |
+ const std::string& track_id, |
+ std::map<std::string, uintptr_t>* receiver_id_by_track) { |
+ const auto& it = receiver_id_by_track->find(track_id); |
+ if (it == receiver_id_by_track->end()) { |
+ uintptr_t id = static_cast<uintptr_t>(receiver_id_by_track->size()) + 1; |
+ receiver_id_by_track->insert(std::make_pair(track_id, id)); |
+ return id; |
+ } |
+ return it->second; |
+} |
+ |
class MockWebRTCLegacyStats : public blink::WebRTCLegacyStats { |
public: |
class MemberIterator : public blink::WebRTCLegacyStatsMemberIterator { |
@@ -224,6 +237,20 @@ class MockWebRTCStatsReport : public blink::WebRTCStatsReport { |
size_t i_; |
}; |
+class MockWebRTCRtpReceiver : public blink::WebRTCRtpReceiver { |
+ public: |
+ MockWebRTCRtpReceiver(uintptr_t id, const blink::WebMediaStreamTrack& track) |
+ : id_(id), track_(track) {} |
+ ~MockWebRTCRtpReceiver() override {} |
+ |
+ uintptr_t id() const override { return id_; } |
+ const blink::WebMediaStreamTrack& track() const override { return track_; } |
+ |
+ private: |
+ uintptr_t id_; |
+ blink::WebMediaStreamTrack track_; |
+}; |
+ |
} // namespace |
MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler() |
@@ -522,6 +549,37 @@ void MockWebRTCPeerConnectionHandler::getStats( |
std::unique_ptr<blink::WebRTCStatsReport>(report.release())); |
} |
+blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> |
+MockWebRTCPeerConnectionHandler::getReceivers() { |
+ std::vector<std::unique_ptr<blink::WebRTCRtpReceiver>> receivers; |
+ for (const auto& pair : remote_streams_) { |
+ const auto& remote_stream = pair.second; |
+ blink::WebVector<blink::WebMediaStreamTrack> remote_tracks; |
+ remote_stream.audioTracks(remote_tracks); |
+ for (const auto& remote_track : remote_tracks) { |
+ receivers.push_back( |
+ std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( |
+ GetReceiverIDByTrack(remote_track.id().utf8(), |
+ &receiver_id_by_track_), |
+ remote_track))); |
+ } |
+ remote_stream.videoTracks(remote_tracks); |
+ for (const auto& remote_track : remote_tracks) { |
+ receivers.push_back( |
+ std::unique_ptr<blink::WebRTCRtpReceiver>(new MockWebRTCRtpReceiver( |
+ GetReceiverIDByTrack(remote_track.id().utf8(), |
+ &receiver_id_by_track_), |
+ remote_track))); |
+ } |
+ } |
+ blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_vector( |
+ receivers.size()); |
+ for (size_t i = 0; i < receivers.size(); ++i) { |
+ web_vector[i] = std::move(receivers[i]); |
+ } |
+ return web_vector; |
+} |
+ |
void MockWebRTCPeerConnectionHandler::ReportCreationOfDataChannel() { |
WebRTCDataChannelInit init; |
WebRTCDataChannelHandler* remote_data_channel = |