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..e35447ff0f8ba2f512b1064e6586e65d75f16f62 100644 |
--- a/content/renderer/media/webrtc/rtc_rtp_sender.cc |
+++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc |
@@ -15,8 +15,12 @@ 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; |
+ return true; |
+ } |
return track_adapter->webrtc_track() == webrtc_track; |
} |
@@ -30,8 +34,20 @@ uintptr_t RTCRtpSender::getId( |
RTCRtpSender::RTCRtpSender( |
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( |
+ 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. |
Guido Urdaneta
2017/07/05 15:37:06
Include a webrtc bug reference.
hbos_chromium
2017/07/06 12:31:37
Done.
|
+ 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; |