Diff
Modified: trunk/LayoutTests/ChangeLog (105433 => 105434)
--- trunk/LayoutTests/ChangeLog 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/LayoutTests/ChangeLog 2012-01-19 20:28:55 UTC (rev 105434)
@@ -1,3 +1,12 @@
+2012-01-19 Eric Carlson <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=75192
+
+ Reviewed by Darin Adler.
+
+ * media/track/track-delete-during-setup-expected.txt: Added.
+ * media/track/track-delete-during-setup.html: Added.
+
2012-01-18 Robert Hogan <[email protected]>
Hit ASSERTION FAILED: table()->collapseBorders() on techcrunch.com
Added: trunk/LayoutTests/media/track/track-delete-during-setup-expected.txt (0 => 105434)
--- trunk/LayoutTests/media/track/track-delete-during-setup-expected.txt (rev 0)
+++ trunk/LayoutTests/media/track/track-delete-during-setup-expected.txt 2012-01-19 20:28:55 UTC (rev 105434)
@@ -0,0 +1,7 @@
+>
+
+EXPECTED (track1.readyState == '0') OK
+EXPECTED (track1.track.mode == '0') OK
+
+END OF TEST
+
Added: trunk/LayoutTests/media/track/track-delete-during-setup.html (0 => 105434)
--- trunk/LayoutTests/media/track/track-delete-during-setup.html (rev 0)
+++ trunk/LayoutTests/media/track/track-delete-during-setup.html 2012-01-19 20:28:55 UTC (rev 105434)
@@ -0,0 +1,41 @@
+ >
+
+ <script src=""
+<script></script>
+<script></script>
+<script>setTimeout("try { var v = document.querySelector('video'); v.parentNode.removeChild(v); } catch(e) {}", 61);</script>
+<meta><script src=""
+ <script>
+
+ {
+ }
+
+ function metadataTrackLoaded()
+ {
+ track2 = document.createElement('track');
+ video.appendChild(track2);
+ setTimeout("endTest()", 100);
+ }
+
+ function canplaythrough()
+ {
+ track1.track.mode = TextTrack.HIDDEN;
+ setTimeout("endTest()", 100);
+ }
+
+ function start()
+ {
+ consoleWrite("<feOffset>");
+ findMediaElement();
+
+ track1 = document.querySelectorAll('track')[0];
+ testExpected("track1.readyState", HTMLTrackElement.NONE);
+ testExpected("track1.track.mode", TextTrack.DISABLED);
+
+ video.src = "" "../content/test");
+ consoleWrite("");
+ }
+ </script>
+ <body _onload_="start()">
+<command><aside><kbd><video _oncanplaythrough_="canplaythrough()" >
+ <track src="" _onload_="metadataTrackLoaded()">
Modified: trunk/Source/WebCore/ChangeLog (105433 => 105434)
--- trunk/Source/WebCore/ChangeLog 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/Source/WebCore/ChangeLog 2012-01-19 20:28:55 UTC (rev 105434)
@@ -1,3 +1,25 @@
+2012-01-19 Eric Carlson <[email protected]>
+
+ https://bugs.webkit.org/show_bug.cgi?id=75192
+
+ Reviewed by Darin Adler.
+
+ Notify the media element when tracks are added to and removed from a document instead of
+ a tree because we don't want to trigger loading unless a track element is in the document.
+
+ Test: media/track/track-delete-during-setup.html
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::trackWasRemoved): Renamed from trackWillBeRemoved because it is
+ now called after removal.
+ * html/HTMLMediaElement.h:
+
+ * html/HTMLTrackElement.cpp:
+ (WebCore::HTMLTrackElement::insertedIntoDocument): Was insertedIntoTree. Use this instead
+ because we care about when a track is inserted and removed from a document, not a tree.
+ (WebCore::HTMLTrackElement::removedFromDocument): Ditto.
+ * html/HTMLTrackElement.h:
+
2012-01-18 Robert Hogan <[email protected]>
Hit ASSERTION FAILED: table()->collapseBorders() on techcrunch.com
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (105433 => 105434)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-01-19 20:28:55 UTC (rev 105434)
@@ -2300,7 +2300,7 @@
scheduleLoad(TextTrackResource);
}
-void HTMLMediaElement::trackWillBeRemoved(HTMLTrackElement* trackElement)
+void HTMLMediaElement::trackWasRemoved(HTMLTrackElement* trackElement)
{
ASSERT(trackElement->hasTagName(trackTag));
@@ -2310,7 +2310,7 @@
#if !LOG_DISABLED
if (trackElement->hasTagName(trackTag)) {
KURL url = ""
- LOG(Media, "HTMLMediaElement::trackWillBeRemoved - 'src' is %s", urlForLogging(url).utf8().data());
+ LOG(Media, "HTMLMediaElement::trackWasRemoved - 'src' is %s", urlForLogging(url).utf8().data());
}
#endif
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (105433 => 105434)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2012-01-19 20:28:55 UTC (rev 105434)
@@ -204,7 +204,7 @@
CueList currentlyActiveCues() const { return m_currentlyActiveCues; }
virtual void trackWasAdded(HTMLTrackElement*);
- virtual void trackWillBeRemoved(HTMLTrackElement*);
+ virtual void trackWasRemoved(HTMLTrackElement*);
void configureTextTrack(HTMLTrackElement*);
void configureTextTracks();
Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (105433 => 105434)
--- trunk/Source/WebCore/html/HTMLTrackElement.cpp 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp 2012-01-19 20:28:55 UTC (rev 105434)
@@ -72,20 +72,20 @@
return adoptRef(new HTMLTrackElement(tagName, document));
}
-void HTMLTrackElement::insertedIntoTree(bool deep)
+void HTMLTrackElement::insertedIntoDocument()
{
- HTMLElement::insertedIntoTree(deep);
+ HTMLElement::insertedIntoDocument();
if (HTMLMediaElement* parent = mediaElement())
parent->trackWasAdded(this);
}
-void HTMLTrackElement::willRemove()
+void HTMLTrackElement::removedFromDocument()
{
if (HTMLMediaElement* parent = mediaElement())
- parent->trackWillBeRemoved(this);
+ parent->trackWasRemoved(this);
- HTMLElement::willRemove();
+ HTMLElement::removedFromDocument();
}
void HTMLTrackElement::parseMappedAttribute(Attribute* attribute)
Modified: trunk/Source/WebCore/html/HTMLTrackElement.h (105433 => 105434)
--- trunk/Source/WebCore/html/HTMLTrackElement.h 2012-01-19 20:27:08 UTC (rev 105433)
+++ trunk/Source/WebCore/html/HTMLTrackElement.h 2012-01-19 20:28:55 UTC (rev 105434)
@@ -78,8 +78,8 @@
virtual void parseMappedAttribute(Attribute*);
virtual void attributeChanged(Attribute*, bool preserveDecls);
- virtual void insertedIntoTree(bool);
- virtual void willRemove();
+ virtual void insertedIntoDocument() OVERRIDE;
+ virtual void removedFromDocument() OVERRIDE;
virtual bool isURLAttribute(Attribute*) const;
#if ENABLE(MICRODATA)