WebKit Bugzilla
Attachment 339376 Details for
Bug 185233
: A MediaStream being played should allow removing some of its tracks
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185233-20180502184258.patch (text/plain), 4.41 KB, created by
youenn fablet
on 2018-05-02 18:42:59 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
youenn fablet
Created:
2018-05-02 18:42:59 PDT
Size:
4.41 KB
patch
obsolete
>Subversion Revision: 231252 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 2472a2f144c28135f4c3cbbd2d0376c75cf31ff1..64e0b0de2158cfc1a59ddb46deafb81d57ff0a8b 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,16 @@ >+2018-05-02 Youenn Fablet <youenn@apple.com> >+ >+ A MediaStream being played should allow removing some of its tracks >+ https://bugs.webkit.org/show_bug.cgi?id=185233 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update the tracks out of the for loop. >+ Test: fast/mediastream/change-tracks-media-stream-being-played.html >+ >+ * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm: >+ (WebCore::updateTracksOfType): >+ > 2018-05-02 Carlos Alberto Lopez Perez <clopez@igalia.com> > > [GStreamer] Remove unneeded include of gstgldisplay_wayland.h after r228866 and r229022 >diff --git a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm b/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm >index 5647dc23c761a3db4ff2581f5f07c6a16223966d..9bafb62701973d22e0df501e5f37733fd4c77228 100644 >--- a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm >+++ b/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm >@@ -935,8 +935,9 @@ void updateTracksOfType(HashMap<String, RefT>& trackMap, RealtimeMediaSource::Ty > continue; > > removedTracks.append(track); >- trackMap.remove(streamTrack.id()); > } >+ for (auto& track : removedTracks) >+ trackMap.remove(track->streamTrack().id()); > > for (auto& track : addedPrivateTracks) { > RefT newTrack = itemFactory(*track.get()); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 7aa0bf6b3661b29ac680c46c34c2f68b48fb8d0c..182397a9ed569c4029c4bc700604b8b588e869de 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,13 @@ >+2018-05-02 Youenn Fablet <youenn@apple.com> >+ >+ A MediaStream being played should allow removing some of its tracks >+ https://bugs.webkit.org/show_bug.cgi?id=185233 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * fast/mediastream/change-tracks-media-stream-being-played-expected.txt: Added. >+ * fast/mediastream/change-tracks-media-stream-being-played.html: Added. >+ > 2018-05-02 Youenn Fablet <youenn@apple.com> > > REGRESSION (r229735): LayoutTest http/wpt/service-workers/third-party-registration.html is a flaky timeout >diff --git a/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played-expected.txt b/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..77fd902d6960021dfee109f2c6f2bb2336381ae9 >--- /dev/null >+++ b/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Remove tracks in a being played MediaStream >+ >diff --git a/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played.html b/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played.html >new file mode 100644 >index 0000000000000000000000000000000000000000..dbbe3843f00d3bf32ae4e558a4bbdc79704bc7af >--- /dev/null >+++ b/LayoutTests/fast/mediastream/change-tracks-media-stream-being-played.html >@@ -0,0 +1,36 @@ >+<html> >+<head> >+ <script src="../../resources/testharness.js"></script> >+ <script src="../../resources/testharnessreport.js"></script> >+</head> >+<body> >+<script type="application/javascript"> >+function waitFor(duration) >+{ >+ return new Promise((resolve) => setTimeout(resolve, duration)); >+} >+ >+promise_test(async () => { >+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true }); >+ const localTracks = stream.getTracks(); >+ video = document.createElement('video'); >+ video.autoplay = true; >+ video.playsInline = true; >+ const videoStream = new MediaStream(); >+ localTracks.forEach(track => videoStream.addTrack(track)); >+ video.srcObject = videoStream; >+ document.body.appendChild(video); >+ video.play(); >+ >+ await waitFor(100); >+ >+ videoStream.getTracks().forEach(track => { >+ videoStream.removeTrack(track); >+ video.srcObject = videoStream; >+ }); >+ video.srcObject = null; >+ video.remove(); >+}, "Remove tracks in a being played MediaStream"); >+</script> >+</body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185233
: 339376