Title: [208825] trunk
Revision
208825
Author
[email protected]
Date
2016-11-16 16:35:32 -0800 (Wed, 16 Nov 2016)

Log Message

Clear track client when removing a track
https://bugs.webkit.org/show_bug.cgi?id=164842
<rdar://problem/29213621>

Reviewed by Eric Carlson.

Source/WebCore:

Call 'clearClient' when removing a track from an HTMLMediaElement.

Test: media/track/audio-track-add-remove.html
      media/track/video-track-add-remove.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::removeAudioTrack): Call 'clearClient'
(WebCore::HTMLMediaElement::removeVideoTrack): Ditto.

LayoutTests:

* media/track/audio-track-add-remove-expected.txt: Added.
* media/track/audio-track-add-remove.html: Added.
* media/track/video-track-add-remove-expected.txt: Added.
* media/track/video-track-add-remove.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (208824 => 208825)


--- trunk/LayoutTests/ChangeLog	2016-11-17 00:24:37 UTC (rev 208824)
+++ trunk/LayoutTests/ChangeLog	2016-11-17 00:35:32 UTC (rev 208825)
@@ -1,3 +1,16 @@
+2016-11-16  Brent Fulgham  <[email protected]>
+
+        Clear track client when removing a track
+        https://bugs.webkit.org/show_bug.cgi?id=164842
+        <rdar://problem/29213621>
+
+        Reviewed by Eric Carlson.
+
+        * media/track/audio-track-add-remove-expected.txt: Added.
+        * media/track/audio-track-add-remove.html: Added.
+        * media/track/video-track-add-remove-expected.txt: Added.
+        * media/track/video-track-add-remove.html: Added.
+
 2016-11-16  Yusuke Suzuki  <[email protected]>
 
         [ES6][WebCore] Change ES6_MODULES compile time flag to runtime flag

Added: trunk/LayoutTests/media/track/audio-track-add-remove-expected.txt (0 => 208825)


--- trunk/LayoutTests/media/track/audio-track-add-remove-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/audio-track-add-remove-expected.txt	2016-11-17 00:35:32 UTC (rev 208825)
@@ -0,0 +1,7 @@
+
+Test audio track handling.
+
+EVENT(addtrack)
+PASS: Track is in valid state.
+END OF TEST
+

Added: trunk/LayoutTests/media/track/audio-track-add-remove.html (0 => 208825)


--- trunk/LayoutTests/media/track/audio-track-add-remove.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/audio-track-add-remove.html	2016-11-17 00:35:32 UTC (rev 208825)
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script src=""
+    <script src=""
+    <script src=""
+    <script>
+    function trackAdded(event)
+    {
+        consoleWrite("EVENT(" + event.type + ")");
+        video.audioTracks._onaddtrack_ = null;
+        var track = event.track;
+        track.enabled = false;
+        video.src = ""
+        video = null;
+
+        setTimeout(function() {
+            gc();
+            track.enabled = !track.enabled;
+            consoleWrite("PASS: Track is in valid state.");
+            endTest();
+        }, 0);
+    }
+
+    function setup()
+    {
+        findMediaElement();
+        video.audioTracks.addEventListener("addtrack", trackAdded);
+        video.src = "" '../content/silence');
+    }
+    </script>
+</head>
+<body _onload_="setup()">
+    <video controls></video>
+    <p>Test audio track handling.</p>
+</body>
+</html>

Added: trunk/LayoutTests/media/track/video-track-add-remove-expected.txt (0 => 208825)


--- trunk/LayoutTests/media/track/video-track-add-remove-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/media/track/video-track-add-remove-expected.txt	2016-11-17 00:35:32 UTC (rev 208825)
@@ -0,0 +1,7 @@
+
+Test video track handling.
+
+EVENT(addtrack)
+PASS: Track is in valid state.
+END OF TEST
+

Added: trunk/LayoutTests/media/track/video-track-add-remove.html (0 => 208825)


--- trunk/LayoutTests/media/track/video-track-add-remove.html	                        (rev 0)
+++ trunk/LayoutTests/media/track/video-track-add-remove.html	2016-11-17 00:35:32 UTC (rev 208825)
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <script src=""
+    <script src=""
+    <script src=""
+    <script>
+    function trackAdded(event)
+    {
+        consoleWrite("EVENT(" + event.type + ")");
+        video.videoTracks._onaddtrack_ = null;
+        var track = event.track;
+        track.enabled = false;
+        video.src = ""
+        video = null;
+        setTimeout(function() {
+            gc();
+            track.enabled = !track.enabled;
+            consoleWrite("PASS: Track is in valid state.");
+            endTest();
+        }, 0);
+    }
+
+    function setup()
+    {
+        findMediaElement();
+        video.videoTracks.addEventListener("addtrack", trackAdded);
+        video.src = "" '../content/test');
+    }
+    </script>
+</head>
+<body _onload_="setup()">
+    <video controls></video>
+    <p>Test video track handling.</p>
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (208824 => 208825)


--- trunk/Source/WebCore/ChangeLog	2016-11-17 00:24:37 UTC (rev 208824)
+++ trunk/Source/WebCore/ChangeLog	2016-11-17 00:35:32 UTC (rev 208825)
@@ -1,3 +1,20 @@
+2016-11-16  Brent Fulgham  <[email protected]>
+
+        Clear track client when removing a track
+        https://bugs.webkit.org/show_bug.cgi?id=164842
+        <rdar://problem/29213621>
+
+        Reviewed by Eric Carlson.
+
+        Call 'clearClient' when removing a track from an HTMLMediaElement.
+
+        Test: media/track/audio-track-add-remove.html
+              media/track/video-track-add-remove.html
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::removeAudioTrack): Call 'clearClient'
+        (WebCore::HTMLMediaElement::removeVideoTrack): Ditto.
+
 2016-11-16  Yusuke Suzuki  <[email protected]>
 
         [ES6][WebCore] Change ES6_MODULES compile time flag to runtime flag

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (208824 => 208825)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2016-11-17 00:24:37 UTC (rev 208824)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2016-11-17 00:35:32 UTC (rev 208825)
@@ -3574,6 +3574,7 @@
 void HTMLMediaElement::removeAudioTrack(AudioTrack& track)
 {
     m_audioTracks->remove(track);
+    track.clearClient();
 }
 
 void HTMLMediaElement::removeTextTrack(TextTrack& track, bool scheduleEvent)
@@ -3591,6 +3592,7 @@
 void HTMLMediaElement::removeVideoTrack(VideoTrack& track)
 {
     m_videoTracks->remove(track);
+    track.clearClient();
 }
 
 void HTMLMediaElement::forgetResourceSpecificTracks()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to