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:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105434
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-01-19 Eric Carlson <eric.carlson@apple.com>
+
+ 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 <robert@webkit.org>
Hit ASSERTION FAILED: table()->collapseBorders() on techcrunch.com
--- /dev/null
+>
+
+EXPECTED (track1.readyState == '0') OK
+EXPECTED (track1.track.mode == '0') OK
+
+END OF TEST
+
--- /dev/null
+ >
+
+ <script src=../media-file.js></script>
+<script></script>
+<script></script>
+<script>setTimeout("try { var v = document.querySelector('video'); v.parentNode.removeChild(v); } catch(e) {}", 61);</script>
+<meta><script src=../video-test.js></script>
+ <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 = findMediaFile("video", "../content/test");
+ consoleWrite("");
+ }
+ </script>
+ <body onload="start()">
+<command><aside><kbd><video oncanplaythrough="canplaythrough()" >
+ <track src="captions-webvtt/metadata.vtt" onload="metadataTrackLoaded()">
+2012-01-19 Eric Carlson <eric.carlson@apple.com>
+
+ 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 <robert@webkit.org>
Hit ASSERTION FAILED: table()->collapseBorders() on techcrunch.com
scheduleLoad(TextTrackResource);
}
-void HTMLMediaElement::trackWillBeRemoved(HTMLTrackElement* trackElement)
+void HTMLMediaElement::trackWasRemoved(HTMLTrackElement* trackElement)
{
ASSERT(trackElement->hasTagName(trackTag));
#if !LOG_DISABLED
if (trackElement->hasTagName(trackTag)) {
KURL url = trackElement->getNonEmptyURLAttribute(srcAttr);
- LOG(Media, "HTMLMediaElement::trackWillBeRemoved - 'src' is %s", urlForLogging(url).utf8().data());
+ LOG(Media, "HTMLMediaElement::trackWasRemoved - 'src' is %s", urlForLogging(url).utf8().data());
}
#endif
CueList currentlyActiveCues() const { return m_currentlyActiveCues; }
virtual void trackWasAdded(HTMLTrackElement*);
- virtual void trackWillBeRemoved(HTMLTrackElement*);
+ virtual void trackWasRemoved(HTMLTrackElement*);
void configureTextTrack(HTMLTrackElement*);
void configureTextTracks();
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)
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)