Title: [238680] trunk
- Revision
- 238680
- Author
- you...@apple.com
- Date
- 2018-11-29 11:54:40 -0800 (Thu, 29 Nov 2018)
Log Message
A sender created through addTransceiver and populated using addTrack should have its source set
https://bugs.webkit.org/show_bug.cgi?id=192136
Reviewed by Eric Carlson.
Source/WebCore:
In case libwebrtc backend is already created, we need to make sure to
set the track source to the libwebrtc sender backend that is actually
tied to the sender.
Covered by updated test.
* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::addTrack):
* Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
LayoutTests:
* webrtc/video-replace-track-expected.txt:
* webrtc/video-replace-track.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (238679 => 238680)
--- trunk/LayoutTests/ChangeLog 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/LayoutTests/ChangeLog 2018-11-29 19:54:40 UTC (rev 238680)
@@ -1,3 +1,13 @@
+2018-11-29 Youenn Fablet <you...@apple.com>
+
+ A sender created through addTransceiver and populated using addTrack should have its source set
+ https://bugs.webkit.org/show_bug.cgi?id=192136
+
+ Reviewed by Eric Carlson.
+
+ * webrtc/video-replace-track-expected.txt:
+ * webrtc/video-replace-track.html:
+
2018-11-29 Ryan Haddad <ryanhad...@apple.com>
Unreviewed test gardening, skip three datalist tests that are marked as flaky crashes.
Modified: trunk/LayoutTests/webrtc/video-replace-track-expected.txt (238679 => 238680)
--- trunk/LayoutTests/webrtc/video-replace-track-expected.txt 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/LayoutTests/webrtc/video-replace-track-expected.txt 2018-11-29 19:54:40 UTC (rev 238680)
@@ -2,4 +2,5 @@
PASS Switching from front to back camera
PASS Switching from front to back camera, with lower resolution
PASS Switching from front to back camera, with higher resolution
+PASS Replace a track for a sender created by addTransceiver and used by addTrack
Modified: trunk/LayoutTests/webrtc/video-replace-track.html (238679 => 238680)
--- trunk/LayoutTests/webrtc/video-replace-track.html 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/LayoutTests/webrtc/video-replace-track.html 2018-11-29 19:54:40 UTC (rev 238680)
@@ -181,6 +181,14 @@
});
}, "Switching from front to back camera, with higher resolution");
+
+promise_test(async (test) => {
+ const stream = await navigator.mediaDevices.getUserMedia({ video: true });
+ const pc = new RTCPeerConnection();
+ pc.addTransceiver("video", {direction: "sendonly"});
+ const sender = pc.addTrack(stream.getVideoTracks()[0], stream);
+ await sender.replaceTrack(stream.getVideoTracks()[0].clone());
+}, "Replace a track for a sender created by addTransceiver and used by addTrack");
</script>
</body>
</html>
Modified: trunk/Source/WebCore/ChangeLog (238679 => 238680)
--- trunk/Source/WebCore/ChangeLog 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/Source/WebCore/ChangeLog 2018-11-29 19:54:40 UTC (rev 238680)
@@ -1,3 +1,20 @@
+2018-11-29 Youenn Fablet <you...@apple.com>
+
+ A sender created through addTransceiver and populated using addTrack should have its source set
+ https://bugs.webkit.org/show_bug.cgi?id=192136
+
+ Reviewed by Eric Carlson.
+
+ In case libwebrtc backend is already created, we need to make sure to
+ set the track source to the libwebrtc sender backend that is actually
+ tied to the sender.
+
+ Covered by updated test.
+
+ * Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
+ (WebCore::LibWebRTCPeerConnectionBackend::addTrack):
+ * Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
+
2018-11-29 Megan Gardner <megan_gard...@apple.com>
Move Lookup Code for better cross platform usage
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp (238679 => 238680)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp 2018-11-29 19:54:40 UTC (rev 238680)
@@ -403,6 +403,7 @@
return Exception { TypeError, "Unable to add track"_s };
if (auto sender = findExistingSender(m_peerConnection.currentSenders(), *senderBackend)) {
+ backendFromRTPSender(*sender).takeSource(*senderBackend);
sender->setTrack(makeRef(track));
sender->setMediaStreamIds(WTFMove(mediaStreamIds));
return sender.releaseNonNull();
Modified: trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h (238679 => 238680)
--- trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h 2018-11-29 19:00:55 UTC (rev 238679)
+++ trunk/Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h 2018-11-29 19:54:40 UTC (rev 238680)
@@ -94,6 +94,12 @@
ASSERT(hasSource());
}
+ void takeSource(LibWebRTCRtpSenderBackend& backend)
+ {
+ ASSERT(backend.hasSource());
+ setSource(WTFMove(backend.m_source));
+ }
+
private:
void replaceTrack(ScriptExecutionContext&, RTCRtpSender&, RefPtr<MediaStreamTrack>&&, DOMPromiseDeferred<void>&&) final;
RTCRtpSendParameters getParameters() const final;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes