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; |