Index: trunk/Source/core/html/HTMLMediaElement.cpp |
=================================================================== |
--- trunk/Source/core/html/HTMLMediaElement.cpp (revision 167840) |
+++ trunk/Source/core/html/HTMLMediaElement.cpp (working copy) |
@@ -333,9 +333,12 @@ |
m_asyncEventQueue->close(); |
setShouldDelayLoadEvent(false); |
- |
if (m_textTracks) |
- m_textTracks->clearOwnerAndClients(); |
+ m_textTracks->clearOwner(); |
+ if (m_textTracks) { |
+ for (unsigned i = 0; i < m_textTracks->length(); ++i) |
+ m_textTracks->item(i)->clearClient(); |
+ } |
if (m_mediaController) { |
m_mediaController->removeMediaElement(this); |
@@ -2447,7 +2450,7 @@ |
return paused() || ended() || m_readyState < HAVE_METADATA; |
} |
-void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack) |
+void HTMLMediaElement::mediaPlayerDidAddTrack(WebInbandTextTrack* webTrack) |
{ |
if (!RuntimeEnabledFeatures::videoTrackEnabled()) |
return; |
@@ -2479,10 +2482,10 @@ |
// 9. Fire an event with the name addtrack, that does not bubble and is not cancelable, and that uses the TrackEvent |
// interface, with the track attribute initialized to the text track's TextTrack object, at the media element's |
// textTracks attribute's TextTrackList object. |
- addTextTrack(textTrack.get()); |
+ addTrack(textTrack.get()); |
} |
-void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(WebInbandTextTrack* webTrack) |
+void HTMLMediaElement::mediaPlayerDidRemoveTrack(WebInbandTextTrack* webTrack) |
{ |
if (!RuntimeEnabledFeatures::videoTrackEnabled()) |
return; |
@@ -2491,12 +2494,12 @@ |
return; |
// This cast is safe because we created the InbandTextTrack with the WebInbandTextTrack |
- // passed to mediaPlayerDidAddTextTrack. |
+ // passed to mediaPlayerDidAddTrack. |
RefPtr<InbandTextTrack> textTrack = static_cast<InbandTextTrack*>(webTrack->client()); |
if (!textTrack) |
return; |
- removeTextTrack(textTrack.get()); |
+ removeTrack(textTrack.get()); |
} |
void HTMLMediaElement::closeCaptionTracksChanged() |
@@ -2505,14 +2508,14 @@ |
mediaControls()->closedCaptionTracksChanged(); |
} |
-void HTMLMediaElement::addTextTrack(TextTrack* track) |
+void HTMLMediaElement::addTrack(TextTrack* track) |
{ |
textTracks()->append(track); |
closeCaptionTracksChanged(); |
} |
-void HTMLMediaElement::removeTextTrack(TextTrack* track) |
+void HTMLMediaElement::removeTrack(TextTrack* track) |
{ |
TrackDisplayUpdateScope scope(this); |
TextTrackCueList* cues = track->cues(); |
@@ -2533,7 +2536,7 @@ |
TextTrack* track = m_textTracks->item(i); |
if (track->trackType() == TextTrack::InBand) |
- removeTextTrack(track); |
+ removeTrack(track); |
} |
} |
@@ -2562,7 +2565,7 @@ |
// first append the track to the text track list. |
// 6. Add the new text track to the media element's list of text tracks. |
- addTextTrack(textTrack.get()); |
+ addTrack(textTrack.get()); |
// ... its text track readiness state to the text track loaded state ... |
textTrack->setReadinessState(TextTrack::Loaded); |
@@ -2583,7 +2586,7 @@ |
return m_textTracks.get(); |
} |
-void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement) |
+void HTMLMediaElement::didAddTrack(HTMLTrackElement* trackElement) |
{ |
ASSERT(trackElement->hasTagName(trackTag)); |
@@ -2598,7 +2601,7 @@ |
if (!textTrack) |
return; |
- addTextTrack(textTrack.get()); |
+ addTrack(textTrack.get()); |
// Do not schedule the track loading until parsing finishes so we don't start before all tracks |
// in the markup have been added. |
@@ -2609,7 +2612,7 @@ |
mediaControls()->closedCaptionTracksChanged(); |
} |
-void HTMLMediaElement::didRemoveTrackElement(HTMLTrackElement* trackElement) |
+void HTMLMediaElement::didRemoveTrack(HTMLTrackElement* trackElement) |
{ |
ASSERT(trackElement->hasTagName(trackTag)); |
@@ -2619,7 +2622,7 @@ |
#if !LOG_DISABLED |
if (trackElement->hasTagName(trackTag)) { |
KURL url = trackElement->getNonEmptyURLAttribute(srcAttr); |
- WTF_LOG(Media, "HTMLMediaElement::didRemoveTrackElement - 'src' is %s", urlForLoggingMedia(url).utf8().data()); |
+ WTF_LOG(Media, "HTMLMediaElement::didRemoveTrack - 'src' is %s", urlForLoggingMedia(url).utf8().data()); |
} |
#endif |
@@ -2636,7 +2639,7 @@ |
// When a track element's parent element changes and the old parent was a media element, |
// then the user agent must remove the track element's corresponding text track from the |
// media element's list of text tracks. |
- removeTextTrack(textTrack.get()); |
+ removeTrack(textTrack.get()); |
size_t index = m_textTracksWhenResourceSelectionBegan.find(textTrack.get()); |
if (index != kNotFound) |