| Index: content/renderer/media/webrtc/rtc_rtp_sender.cc
|
| diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.cc b/content/renderer/media/webrtc/rtc_rtp_sender.cc
|
| index 26b15b8e4f11c1ab773420ca842568afe27598d1..01244482de63cdf5d0fa6c8f684a308047d53cbc 100644
|
| --- a/content/renderer/media/webrtc/rtc_rtp_sender.cc
|
| +++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc
|
| @@ -5,7 +5,6 @@
|
| #include "content/renderer/media/webrtc/rtc_rtp_sender.h"
|
|
|
| #include "base/logging.h"
|
| -#include "third_party/webrtc/rtc_base/scoped_ref_ptr.h"
|
|
|
| namespace content {
|
|
|
| @@ -15,8 +14,13 @@ inline bool operator==(
|
| const std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>&
|
| track_adapter,
|
| const webrtc::MediaStreamTrackInterface* webrtc_track) {
|
| - if (!track_adapter)
|
| - return !webrtc_track;
|
| + if (!track_adapter) {
|
| + // TODO(hbos): See TODO in |OnRemoved|. Because we can't set a stopped
|
| + // sender's track to null any |webrtc_track| could be correct. When this is
|
| + // fixed this line should be: return !webrtc_track;
|
| + // https://crbug.com/webrtc/7945
|
| + return true;
|
| + }
|
| return track_adapter->webrtc_track() == webrtc_track;
|
| }
|
|
|
| @@ -28,10 +32,22 @@ uintptr_t RTCRtpSender::getId(
|
| }
|
|
|
| RTCRtpSender::RTCRtpSender(
|
| - scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
|
| + rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
|
| std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter)
|
| + : RTCRtpSender(
|
| + std::move(webrtc_rtp_sender),
|
| + std::move(track_adapter),
|
| + std::vector<
|
| + std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>>()) {}
|
| +
|
| +RTCRtpSender::RTCRtpSender(
|
| + rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
|
| + std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter,
|
| + std::vector<std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>>
|
| + stream_adapters)
|
| : webrtc_rtp_sender_(std::move(webrtc_rtp_sender)),
|
| - track_adapter_(std::move(track_adapter)) {
|
| + track_adapter_(std::move(track_adapter)),
|
| + stream_adapters_(std::move(stream_adapters)) {
|
| DCHECK(webrtc_rtp_sender_);
|
| DCHECK(track_adapter_ == webrtc_rtp_sender_->track());
|
| }
|
| @@ -47,6 +63,16 @@ const blink::WebMediaStreamTrack* RTCRtpSender::Track() const {
|
| return track_adapter_ ? &track_adapter_->web_track() : nullptr;
|
| }
|
|
|
| +void RTCRtpSender::OnRemoved() {
|
| + // TODO(hbos): We should do |webrtc_rtp_sender_->SetTrack(null)| but that is
|
| + // not allowed on a stopped sender. https://crbug.com/webrtc/7945
|
| + track_adapter_.reset();
|
| +}
|
| +
|
| +webrtc::RtpSenderInterface* RTCRtpSender::webrtc_rtp_sender() {
|
| + return webrtc_rtp_sender_.get();
|
| +}
|
| +
|
| const webrtc::MediaStreamTrackInterface* RTCRtpSender::webrtc_track() const {
|
| DCHECK(track_adapter_ == webrtc_rtp_sender_->track());
|
| return track_adapter_ ? track_adapter_->webrtc_track() : nullptr;
|
|
|