Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(960)

Unified Diff: Source/core/html/HTMLMediaElement.cpp

Issue 14056005: Added code to enable the first caption track if the user has requested captions and one such track … (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/media/video-controls-captions-multiple-clicks-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/HTMLMediaElement.cpp
diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp
index 4796a31008eb9eb052d6aaf81dd79771334945fc..9fd48d80ee74d34fde13dedf9f7a6c621897640c 100644
--- a/Source/core/html/HTMLMediaElement.cpp
+++ b/Source/core/html/HTMLMediaElement.cpp
@@ -936,7 +936,7 @@ static bool eventTimeCueCompare(const std::pair<double, TextTrackCue*>& a,
void HTMLMediaElement::updateActiveTextTrackCues(double movieTime)
{
- LOG(Media, "HTMLMediaElement::updateActiveTextTracks");
+ LOG(Media, "HTMLMediaElement::updateActiveTextTrackCues");
// 4.8.10.8 Playing the media resource
@@ -1152,7 +1152,7 @@ void HTMLMediaElement::updateActiveTextTrackCues(double movieTime)
HTMLTrackElement* trackElement = static_cast<LoadableTextTrack*>(affectedTracks[i])->trackElement();
ASSERT(trackElement);
event->setTarget(trackElement);
-
+
m_asyncEventQueue->enqueueEvent(event.release());
}
}
@@ -1232,13 +1232,14 @@ void HTMLMediaElement::textTrackModeChanged(TextTrack* track)
}
break;
}
- }
+ } else if (track->trackType() == TextTrack::AddTrack && track->mode() != TextTrack::disabledKeyword())
+ textTrackAddCues(track, track->cues());
#if USE(PLATFORM_TEXT_TRACK_MENU)
if (platformTextTrackMenu())
platformTextTrackMenu()->trackWasSelected(track->platformTextTrack());
#endif
-
+
configureTextTrackDisplay();
updateActiveTextTrackCues(currentTime());
}
@@ -1264,6 +1265,8 @@ void HTMLMediaElement::endIgnoringTrackDisplayUpdateRequests()
void HTMLMediaElement::textTrackAddCues(TextTrack*, const TextTrackCueList* cues)
{
+ LOG(Media, "HTMLMediaElement::textTrackAddCues");
+
TrackDisplayUpdateScope scope(this);
for (size_t i = 0; i < cues->length(); ++i)
textTrackAddCue(cues->item(i)->track(), cues->item(i));
@@ -1271,6 +1274,8 @@ void HTMLMediaElement::textTrackAddCues(TextTrack*, const TextTrackCueList* cues
void HTMLMediaElement::textTrackRemoveCues(TextTrack*, const TextTrackCueList* cues)
{
+ LOG(Media, "HTMLMediaElement::textTrackRemoveCues");
+
TrackDisplayUpdateScope scope(this);
for (size_t i = 0; i < cues->length(); ++i)
textTrackRemoveCue(cues->item(i)->track(), cues->item(i));
@@ -1298,8 +1303,10 @@ void HTMLMediaElement::textTrackRemoveCue(TextTrack*, PassRefPtr<TextTrackCue> c
m_cueTree.remove(interval);
size_t index = m_currentlyActiveCues.find(interval);
- if (index != notFound)
+ if (index != notFound) {
m_currentlyActiveCues.remove(index);
+ cue->setIsActive(false);
+ }
cue->removeDisplayTree();
updateActiveTextTrackCues(currentTime());
@@ -2859,6 +2866,8 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group)
{
ASSERT(group.tracks.size());
+ LOG(Media, "HTMLMediaElement::configureTextTrackGroup(%d)", group.kind);
+
Page* page = document()->page();
CaptionUserPreferences* captionPreferences = page? page->group().captionPreferences() : 0;
@@ -2907,6 +2916,9 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group)
// If no track matches the user's preferred language and non was marked 'default', enable the first track
// because the user has explicitly stated a preference for this kind of track.
+ if (!fallbackTrack && m_closedCaptionsVisible && group.kind == TrackGroup::CaptionsAndSubtitles)
+ fallbackTrack = group.tracks[0];
+
if (!trackToEnable && fallbackTrack)
trackToEnable = fallbackTrack;
@@ -2920,8 +2932,6 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group)
if (trackToEnable)
trackToEnable->setMode(TextTrack::showingKeyword());
-
- m_processingPreferenceChange = false;
}
void HTMLMediaElement::setSelectedTextTrack(TextTrack* trackToSelect)
@@ -3882,9 +3892,11 @@ bool HTMLMediaElement::closedCaptionsVisible() const
void HTMLMediaElement::updateTextTrackDisplay()
{
+ LOG(Media, "HTMLMediaElement::updateTextTrackDisplay");
+
if (!hasMediaControls() && !createMediaControls())
return;
-
+
mediaControls()->updateTextTrackDisplay();
}
@@ -3901,6 +3913,8 @@ void HTMLMediaElement::setClosedCaptionsVisible(bool closedCaptionVisible)
if (RuntimeEnabledFeatures::webkitVideoTrackEnabled()) {
m_processingPreferenceChange = true;
markCaptionAndSubtitleTracksAsUnconfigured();
+ m_processingPreferenceChange = false;
+
updateTextTrackDisplay();
}
}
@@ -4039,6 +4053,7 @@ void HTMLMediaElement::configureMediaControls()
void HTMLMediaElement::configureTextTrackDisplay()
{
ASSERT(m_textTracks);
+ LOG(Media, "HTMLMediaElement::configureTextTrackDisplay");
if (m_processingPreferenceChange)
return;
@@ -4062,7 +4077,7 @@ void HTMLMediaElement::configureTextTrackDisplay()
return;
mediaControls()->changedClosedCaptionsVisibility();
-
+
if (RuntimeEnabledFeatures::webkitVideoTrackEnabled())
updateTextTrackDisplay();
}
@@ -4089,7 +4104,6 @@ void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured()
// captions and non-default tracks should be displayed based on language
// preferences if the user has turned captions on).
for (unsigned i = 0; i < m_textTracks->length(); ++i) {
-
RefPtr<TextTrack> textTrack = m_textTracks->item(i);
String kind = textTrack->kind();
« no previous file with comments | « LayoutTests/media/video-controls-captions-multiple-clicks-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698