| Index: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
|
| diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
|
| index 63866d30253d725e3f5ecd2e1316ba3f93ab8503..ea2ca61b83382bec9ab05998efaf049707140cef 100644
|
| --- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
|
| +++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
|
| @@ -75,6 +75,7 @@
|
| #include "modules/peerconnection/RTCStatsCallback.h"
|
| #include "modules/peerconnection/RTCStatsReport.h"
|
| #include "modules/peerconnection/RTCStatsRequestImpl.h"
|
| +#include "modules/peerconnection/RTCTrackEvent.h"
|
| #include "modules/peerconnection/RTCVoidRequestImpl.h"
|
| #include "modules/peerconnection/RTCVoidRequestPromiseImpl.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| @@ -1443,7 +1444,8 @@ void RTCPeerConnection::DidChangeICEConnectionState(
|
| }
|
|
|
| void RTCPeerConnection::DidAddRemoteStream(
|
| - const WebMediaStream& remote_stream) {
|
| + const WebMediaStream& remote_stream,
|
| + WebVector<std::unique_ptr<WebRTCRtpReceiver>>* stream_web_rtp_receivers) {
|
| DCHECK(!closed_);
|
| DCHECK(GetExecutionContext()->IsContextThread());
|
|
|
| @@ -1461,6 +1463,35 @@ void RTCPeerConnection::DidAddRemoteStream(
|
|
|
| ScheduleDispatchEvent(
|
| MediaStreamEvent::Create(EventTypeNames::addstream, stream));
|
| +
|
| + // TODO(hbos): ...
|
| + HeapVector<Member<MediaStream>> streams(1, stream);
|
| + for (auto& track : stream->getTracks()) {
|
| + std::unique_ptr<WebRTCRtpReceiver> track_web_rtp_receiver;
|
| + for (auto& web_rtp_receiver : *stream_web_rtp_receivers) {
|
| + if (static_cast<String>(web_rtp_receiver->Track().Id()) == track->id()) {
|
| + track_web_rtp_receiver.reset(web_rtp_receiver.release());
|
| + break;
|
| + }
|
| + }
|
| + DCHECK(track_web_rtp_receiver);
|
| + uintptr_t id = track_web_rtp_receiver->Id();
|
| + RTCRtpReceiver* track_rtp_receiver = nullptr;
|
| + const auto it = rtp_receivers_.find(id);
|
| + if (it != rtp_receivers_.end()) {
|
| + track_rtp_receiver = it->value;
|
| + } else {
|
| + // There does not exist a |RTCRtpReceiver| for this |WebRTCRtpReceiver|
|
| + // yet, create it.
|
| + MediaStreamTrack* track = GetTrack(track_web_rtp_receiver->Track());
|
| + DCHECK(track);
|
| + track_rtp_receiver =
|
| + new RTCRtpReceiver(std::move(track_web_rtp_receiver), track);
|
| + rtp_receivers_.insert(id, track_rtp_receiver);
|
| + }
|
| + ScheduleDispatchEvent(
|
| + new RTCTrackEvent(track_rtp_receiver, track, streams));
|
| + }
|
| }
|
|
|
| void RTCPeerConnection::DidRemoveRemoteStream(
|
|
|