Chromium Code Reviews| Index: Source/WebCore/html/HTMLMediaElement.cpp |
| diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp |
| index 81fadb354dbfc4e7fab5cdc53a7289e049f21845..f51cc34f7f88a6623a9d991bb6a9334ced9a02fd 100644 |
| --- a/Source/WebCore/html/HTMLMediaElement.cpp |
| +++ b/Source/WebCore/html/HTMLMediaElement.cpp |
| @@ -2955,8 +2955,12 @@ 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 (!trackToEnable && fallbackTrack) |
| - trackToEnable = fallbackTrack; |
| + if (!trackToEnable) { |
| + if (fallbackTrack) |
| + trackToEnable = fallbackTrack; |
| + else if (group.kind == TrackGroup::CaptionsAndSubtitles && m_closedCaptionsVisible) |
| + trackToEnable = group.tracks[0]; |
| + } |
| if (currentlyEnabledTracks.size()) { |
| for (size_t i = 0; i < currentlyEnabledTracks.size(); ++i) { |
| @@ -2968,8 +2972,6 @@ void HTMLMediaElement::configureTextTrackGroup(const TrackGroup& group) |
| if (trackToEnable) |
| trackToEnable->setMode(TextTrack::showingKeyword()); |
| - |
| - m_processingPreferenceChange = false; |
| } |
| void HTMLMediaElement::setSelectedTextTrack(TextTrack* trackToSelect) |
| @@ -3947,7 +3949,7 @@ void HTMLMediaElement::updateTextTrackDisplay() |
| { |
| if (!hasMediaControls() && !createMediaControls()) |
| return; |
| - |
| + |
| mediaControls()->updateTextTrackDisplay(); |
| } |
| #endif |
| @@ -3966,6 +3968,21 @@ void HTMLMediaElement::setClosedCaptionsVisible(bool closedCaptionVisible) |
| if (RuntimeEnabledFeatures::webkitVideoTrackEnabled()) { |
| m_processingPreferenceChange = true; |
| markCaptionAndSubtitleTracksAsUnconfigured(); |
| + m_processingPreferenceChange = false; |
| + |
| + // If the user has enabled captions and no track that is available for |
|
vcarbune.chromium
2013/04/20 00:30:12
I have removed this part, as it was merely a work-
|
| + // display has been enable due to not passing the criteria according to |
| + // user preferences or language, enable the first track that can be rendered. |
| + if (closedCaptionsVisible && !m_haveVisibleTextTrack) |
|
abarth-chromium
2013/04/18 05:36:39
Multiline if statements require { } even if they c
|
| + for (size_t i = 0; i < m_textTracks->length(); ++i) { |
| + RefPtr<TextTrack> track = m_textTracks->item(i); |
|
abarth-chromium
2013/04/18 05:36:39
Why RefPtr rather than just TextTrack* ?
|
| + if (track->kind() == TextTrack::captionsKeyword() || |
| + track->kind() == TextTrack::subtitlesKeyword()) { |
| + track->setMode(TextTrack::showingKeyword()); |
| + break; |
| + } |
| + } |
| + |
| updateTextTrackDisplay(); |
| } |
| #else |
| @@ -4122,6 +4139,7 @@ void HTMLMediaElement::configureMediaControls() |
| void HTMLMediaElement::configureTextTrackDisplay() |
| { |
| ASSERT(m_textTracks); |
| + LOG(Media, "HTMLMediaElement::configureTextTrackDisplay"); |
| if (m_processingPreferenceChange) |
| return; |
| @@ -4172,7 +4190,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(); |