- Revision
- 111581
- Author
- [email protected]
- Date
- 2012-03-21 11:28:48 -0700 (Wed, 21 Mar 2012)
Log Message
Removing HTMLTrackElement does not delete TextTrack
https://bugs.webkit.org/show_bug.cgi?id=80873
Reviewed by Antti Koivisto.
Source/WebCore:
No new tests, but media/track/track-language-preference.html has been updated
to test this fix.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::didAddTrack): Renamed from trackWasAdded.
(WebCore::HTMLMediaElement::willRemoveTrack): Renamed from trackWasRemoved because it is
called before the track is removed, to allow the TextTrack to be removed.
* html/HTMLMediaElement.h:
* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::insertedIntoTree): Renamed from insertedIntoDocument
(WebCore::HTMLTrackElement::willRemove): Renamed from removedFromDocument.
* html/HTMLTrackElement.h:
* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::trackElementIndex): Don't include tracks that are not in the
document in the calcualtion.
LayoutTests:
* media/track/track-language-preference-expected.txt:
* media/track/track-language-preference.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (111580 => 111581)
--- trunk/LayoutTests/ChangeLog 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/LayoutTests/ChangeLog 2012-03-21 18:28:48 UTC (rev 111581)
@@ -1,3 +1,13 @@
+2012-03-21 Eric Carlson <[email protected]>
+
+ Removing HTMLTrackElement does not delete TextTrack
+ https://bugs.webkit.org/show_bug.cgi?id=80873
+
+ Reviewed by Antti Koivisto.
+
+ * media/track/track-language-preference-expected.txt:
+ * media/track/track-language-preference.html:
+
2012-03-21 Mark Hahnenberg <[email protected]>
Checking in updated test expectations
Modified: trunk/LayoutTests/media/track/track-language-preference-expected.txt (111580 => 111581)
--- trunk/LayoutTests/media/track/track-language-preference-expected.txt 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/LayoutTests/media/track/track-language-preference-expected.txt 2012-03-21 18:28:48 UTC (rev 111581)
@@ -28,5 +28,6 @@
EXPECTED (track.readyState == '2') OK
EXPECTED (track.srclang == 'fa') OK
+EXPECTED (video.textTracks.length == '3') OK
END OF TEST
Modified: trunk/LayoutTests/media/track/track-language-preference.html (111580 => 111581)
--- trunk/LayoutTests/media/track/track-language-preference.html 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/LayoutTests/media/track/track-language-preference.html 2012-03-21 18:28:48 UTC (rev 111581)
@@ -45,6 +45,8 @@
consoleWrite("");
testList.current++;
if (testList.current >= testList.tests.length) {
+ var tracks = document.querySelectorAll('track');
+ testExpected("video.textTracks.length", tracks.length);
endTest();
return;
}
Modified: trunk/Source/WebCore/ChangeLog (111580 => 111581)
--- trunk/Source/WebCore/ChangeLog 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/ChangeLog 2012-03-21 18:28:48 UTC (rev 111581)
@@ -1,3 +1,28 @@
+2012-03-21 Eric Carlson <[email protected]>
+
+ Removing HTMLTrackElement does not delete TextTrack
+ https://bugs.webkit.org/show_bug.cgi?id=80873
+
+ Reviewed by Antti Koivisto.
+
+ No new tests, but media/track/track-language-preference.html has been updated
+ to test this fix.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::didAddTrack): Renamed from trackWasAdded.
+ (WebCore::HTMLMediaElement::willRemoveTrack): Renamed from trackWasRemoved because it is
+ called before the track is removed, to allow the TextTrack to be removed.
+ * html/HTMLMediaElement.h:
+
+ * html/HTMLTrackElement.cpp:
+ (WebCore::HTMLTrackElement::insertedIntoTree): Renamed from insertedIntoDocument
+ (WebCore::HTMLTrackElement::willRemove): Renamed from removedFromDocument.
+ * html/HTMLTrackElement.h:
+
+ * html/track/LoadableTextTrack.cpp:
+ (WebCore::LoadableTextTrack::trackElementIndex): Don't include tracks that are not in the
+ document in the calcualtion.
+
2012-03-21 Zeno Albisser <[email protected]>
[Qt][Mac] ranlib segfaults when creating symbol tables for libWebCore.a.
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (111580 => 111581)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2012-03-21 18:28:48 UTC (rev 111581)
@@ -2490,7 +2490,7 @@
return 0;
}
-void HTMLMediaElement::trackWasAdded(HTMLTrackElement* trackElement)
+void HTMLMediaElement::didAddTrack(HTMLTrackElement* trackElement)
{
ASSERT(trackElement->hasTagName(trackTag));
@@ -2513,7 +2513,7 @@
scheduleLoad(TextTrackResource);
}
-void HTMLMediaElement::trackWasRemoved(HTMLTrackElement* trackElement)
+void HTMLMediaElement::willRemoveTrack(HTMLTrackElement* trackElement)
{
ASSERT(trackElement->hasTagName(trackTag));
@@ -2523,7 +2523,7 @@
#if !LOG_DISABLED
if (trackElement->hasTagName(trackTag)) {
KURL url = ""
- LOG(Media, "HTMLMediaElement::trackWasRemoved - 'src' is %s", urlForLogging(url).utf8().data());
+ LOG(Media, "HTMLMediaElement::willRemoveTrack - 'src' is %s", urlForLogging(url).utf8().data());
}
#endif
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (111580 => 111581)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2012-03-21 18:28:48 UTC (rev 111581)
@@ -204,8 +204,8 @@
TextTrackList* textTracks();
CueList currentlyActiveCues() const { return m_currentlyActiveCues; }
- virtual void trackWasAdded(HTMLTrackElement*);
- virtual void trackWasRemoved(HTMLTrackElement*);
+ virtual void didAddTrack(HTMLTrackElement*);
+ virtual void willRemoveTrack(HTMLTrackElement*);
struct TrackGroup {
enum GroupKind { CaptionsAndSubtitles, Description, Chapter, Metadata, Other };
Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (111580 => 111581)
--- trunk/Source/WebCore/html/HTMLTrackElement.cpp 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp 2012-03-21 18:28:48 UTC (rev 111581)
@@ -72,20 +72,20 @@
return adoptRef(new HTMLTrackElement(tagName, document));
}
-void HTMLTrackElement::insertedIntoDocument()
+void HTMLTrackElement::insertedIntoTree(bool deep)
{
- HTMLElement::insertedIntoDocument();
+ HTMLElement::insertedIntoTree(deep);
if (HTMLMediaElement* parent = mediaElement())
- parent->trackWasAdded(this);
+ parent->didAddTrack(this);
}
-void HTMLTrackElement::removedFromDocument()
+void HTMLTrackElement::willRemove()
{
if (HTMLMediaElement* parent = mediaElement())
- parent->trackWasRemoved(this);
+ parent->willRemoveTrack(this);
- HTMLElement::removedFromDocument();
+ HTMLElement::willRemove();
}
void HTMLTrackElement::parseAttribute(Attribute* attribute)
Modified: trunk/Source/WebCore/html/HTMLTrackElement.h (111580 => 111581)
--- trunk/Source/WebCore/html/HTMLTrackElement.h 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/html/HTMLTrackElement.h 2012-03-21 18:28:48 UTC (rev 111581)
@@ -77,8 +77,8 @@
virtual void parseAttribute(Attribute*) OVERRIDE;
- virtual void insertedIntoDocument() OVERRIDE;
- virtual void removedFromDocument() OVERRIDE;
+ virtual void insertedIntoTree(bool) OVERRIDE;
+ virtual void willRemove() OVERRIDE;
virtual bool isURLAttribute(Attribute*) const;
#if ENABLE(MICRODATA)
Modified: trunk/Source/WebCore/html/track/LoadableTextTrack.cpp (111580 => 111581)
--- trunk/Source/WebCore/html/track/LoadableTextTrack.cpp 2012-03-21 18:21:46 UTC (rev 111580)
+++ trunk/Source/WebCore/html/track/LoadableTextTrack.cpp 2012-03-21 18:28:48 UTC (rev 111581)
@@ -135,10 +135,11 @@
{
ASSERT(m_trackElement);
ASSERT(m_trackElement->parentNode());
+ ASSERT(m_trackElement->inDocument());
size_t index = 0;
for (Node* node = m_trackElement->parentNode()->firstChild(); node; node = node->nextSibling()) {
- if (!node->hasTagName(trackTag))
+ if (!node->hasTagName(trackTag) || !node->inDocument())
continue;
if (node == m_trackElement)
return index;