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

Unified 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, 9 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 side-by-side diff with in-line comments
Download patch
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 =

Powered by Google App Engine
This is Rietveld 408576698