Title: [151796] trunk
- Revision
- 151796
- Author
- [email protected]
- Date
- 2013-06-20 13:14:03 -0700 (Thu, 20 Jun 2013)
Log Message
ASSERT removing then adding a <track> element
https://bugs.webkit.org/show_bug.cgi?id=117814
Reviewed by Jer Noble.
Source/WebCore:
Test: media/track/add-and-remove-track.html
* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::insertedInto): Always call ensureTrack before adding the track
to the parent <video> element.
(WebCore::HTMLTrackElement::ensureTrack): Call m_track->setTrackElement() in case the
parent was cleared after m_track was created.
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::setTrackElement): New, set m_trackElement.
* html/track/LoadableTextTrack.h:
LayoutTests:
* media/track/add-and-remove-track-expected.txt: Added.
* media/track/add-and-remove-track.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (151795 => 151796)
--- trunk/LayoutTests/ChangeLog 2013-06-20 20:12:35 UTC (rev 151795)
+++ trunk/LayoutTests/ChangeLog 2013-06-20 20:14:03 UTC (rev 151796)
@@ -1,3 +1,13 @@
+2013-06-20 Eric Carlson <[email protected]>
+
+ ASSERT removing then adding a <track> element
+ https://bugs.webkit.org/show_bug.cgi?id=117814
+
+ Reviewed by Jer Noble.
+
+ * media/track/add-and-remove-track-expected.txt: Added.
+ * media/track/add-and-remove-track.html: Added.
+
2013-06-20 Benjamin Poulain <[email protected]>
Mark compositing/repaint/positioned-movement.html as flaky on Mountain Lion Debug
Added: trunk/LayoutTests/media/track/add-and-remove-track-expected.txt (0 => 151796)
--- trunk/LayoutTests/media/track/add-and-remove-track-expected.txt (rev 0)
+++ trunk/LayoutTests/media/track/add-and-remove-track-expected.txt 2013-06-20 20:14:03 UTC (rev 151796)
@@ -0,0 +1,6 @@
+Tests that removing a <track> element and adding it again does not crash.
+
+If this test does not crash, it passes.
+
+END OF TEST
+
Added: trunk/LayoutTests/media/track/add-and-remove-track.html (0 => 151796)
--- trunk/LayoutTests/media/track/add-and-remove-track.html (rev 0)
+++ trunk/LayoutTests/media/track/add-and-remove-track.html 2013-06-20 20:14:03 UTC (rev 151796)
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script src=""
+ <script>
+ function test()
+ {
+ findMediaElement();
+
+ var tracks = document.querySelectorAll('track');
+ for (var ndx = 0; ndx < tracks.length; ++ndx)
+ video.removeChild(tracks[ndx]);
+ for (var ndx = 0; ndx < tracks.length; ++ndx)
+ video.appendChild(tracks[ndx]);
+
+ endTest();
+ }
+
+ </script>
+ </head>
+ <body _onload_="test()">
+ <p>Tests that removing a <track> element and adding it again does not crash.</p>
+ <p>If this test does not crash, it passes.</p>
+ <video width="500" height="300" controls>
+ <track src="" >
+ <track src="" >
+ <track src="" >
+ <track src="" >
+ </video>
+ </body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (151795 => 151796)
--- trunk/Source/WebCore/ChangeLog 2013-06-20 20:12:35 UTC (rev 151795)
+++ trunk/Source/WebCore/ChangeLog 2013-06-20 20:14:03 UTC (rev 151796)
@@ -1,3 +1,22 @@
+2013-06-20 Eric Carlson <[email protected]>
+
+ ASSERT removing then adding a <track> element
+ https://bugs.webkit.org/show_bug.cgi?id=117814
+
+ Reviewed by Jer Noble.
+
+ Test: media/track/add-and-remove-track.html
+
+ * html/HTMLTrackElement.cpp:
+ (WebCore::HTMLTrackElement::insertedInto): Always call ensureTrack before adding the track
+ to the parent <video> element.
+ (WebCore::HTMLTrackElement::ensureTrack): Call m_track->setTrackElement() in case the
+ parent was cleared after m_track was created.
+
+ * html/track/LoadableTextTrack.cpp:
+ (WebCore::LoadableTextTrack::setTrackElement): New, set m_trackElement.
+ * html/track/LoadableTextTrack.h:
+
2013-06-20 Roger Fong <[email protected]>
Unreviewed. Build fix for Apple Windows port.
Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (151795 => 151796)
--- trunk/Source/WebCore/html/HTMLTrackElement.cpp 2013-06-20 20:12:35 UTC (rev 151795)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp 2013-06-20 20:14:03 UTC (rev 151796)
@@ -79,8 +79,10 @@
HTMLElement::insertedInto(insertionPoint);
HTMLMediaElement* parent = mediaElement();
- if (insertionPoint == parent)
+ if (insertionPoint == parent) {
+ ensureTrack();
parent->didAddTextTrack(this);
+ }
return InsertionDone;
}
@@ -173,7 +175,9 @@
if (!TextTrack::isValidKindKeyword(kind))
kind = TextTrack::subtitlesKeyword();
m_track = LoadableTextTrack::create(this, kind, label(), srclang());
- }
+ } else
+ m_track->setTrackElement(this);
+
return m_track.get();
}
Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.cpp (151795 => 151796)
--- trunk/Source/WebCore/html/track/LoadableTextTrack.cpp 2013-06-20 20:12:35 UTC (rev 151795)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.cpp 2013-06-20 20:14:03 UTC (rev 151796)
@@ -76,6 +76,12 @@
{
return m_trackElement;
}
+
+void LoadableTextTrack::setTrackElement(HTMLTrackElement* element)
+{
+ ASSERT(!m_trackElement || m_trackElement == element);
+ m_trackElement = element;
+}
void LoadableTextTrack::loadTimerFired(Timer<LoadableTextTrack>*)
{
Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.h (151795 => 151796)
--- trunk/Source/WebCore/html/track/LoadableTextTrack.h 2013-06-20 20:12:35 UTC (rev 151795)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.h 2013-06-20 20:14:03 UTC (rev 151796)
@@ -60,6 +60,7 @@
size_t trackElementIndex();
HTMLTrackElement* trackElement() { return m_trackElement; }
+ void setTrackElement(HTMLTrackElement*);
virtual Element* element() OVERRIDE;
virtual bool isDefault() const OVERRIDE { return m_isDefault; }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes