Diff
Modified: branches/safari-602-branch/LayoutTests/ChangeLog (209208 => 209209)
--- branches/safari-602-branch/LayoutTests/ChangeLog 2016-12-01 22:23:50 UTC (rev 209208)
+++ branches/safari-602-branch/LayoutTests/ChangeLog 2016-12-01 22:23:54 UTC (rev 209209)
@@ -1,5 +1,22 @@
2016-12-01 Matthew Hanson <matthew_han...@apple.com>
+ Merge r208825. rdar://problem/29277338
+
+ 2016-11-16 Brent Fulgham <bfulg...@apple.com>
+
+ 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-12-01 Matthew Hanson <matthew_han...@apple.com>
+
Merge r208628. rdar://problem/29277337
2016-11-11 Brent Fulgham <bfulg...@apple.com>
Added: branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove-expected.txt (0 => 209209)
--- branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove-expected.txt (rev 0)
+++ branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove-expected.txt 2016-12-01 22:23:54 UTC (rev 209209)
@@ -0,0 +1,7 @@
+
+Test audio track handling.
+
+EVENT(addtrack)
+PASS: Track is in valid state.
+END OF TEST
+
Added: branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove.html (0 => 209209)
--- branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove.html (rev 0)
+++ branches/safari-602-branch/LayoutTests/media/track/audio-track-add-remove.html 2016-12-01 22:23:54 UTC (rev 209209)
@@ -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: branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove-expected.txt (0 => 209209)
--- branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove-expected.txt (rev 0)
+++ branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove-expected.txt 2016-12-01 22:23:54 UTC (rev 209209)
@@ -0,0 +1,7 @@
+
+Test video track handling.
+
+EVENT(addtrack)
+PASS: Track is in valid state.
+END OF TEST
+
Added: branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove.html (0 => 209209)
--- branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove.html (rev 0)
+++ branches/safari-602-branch/LayoutTests/media/track/video-track-add-remove.html 2016-12-01 22:23:54 UTC (rev 209209)
@@ -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: branches/safari-602-branch/Source/WebCore/ChangeLog (209208 => 209209)
--- branches/safari-602-branch/Source/WebCore/ChangeLog 2016-12-01 22:23:50 UTC (rev 209208)
+++ branches/safari-602-branch/Source/WebCore/ChangeLog 2016-12-01 22:23:54 UTC (rev 209209)
@@ -1,5 +1,26 @@
2016-12-01 Matthew Hanson <matthew_han...@apple.com>
+ Merge r208825. rdar://problem/29277338
+
+ 2016-11-16 Brent Fulgham <bfulg...@apple.com>
+
+ 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-12-01 Matthew Hanson <matthew_han...@apple.com>
+
Merge r208629. rdar://problem/29277337
2016-11-11 Brent Fulgham <bfulg...@apple.com>
Modified: branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp (209208 => 209209)
--- branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp 2016-12-01 22:23:50 UTC (rev 209208)
+++ branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp 2016-12-01 22:23:54 UTC (rev 209209)
@@ -3789,6 +3789,7 @@
void HTMLMediaElement::removeAudioTrack(AudioTrack& track)
{
m_audioTracks->remove(track);
+ track.clearClient();
}
void HTMLMediaElement::removeTextTrack(TextTrack& track, bool scheduleEvent)
@@ -3806,6 +3807,7 @@
void HTMLMediaElement::removeVideoTrack(VideoTrack& track)
{
m_videoTracks->remove(track);
+ track.clearClient();
}
void HTMLMediaElement::forgetResourceSpecificTracks()