1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "third_party/blink/renderer/modules/media_controls/media_controls_text_track_manager.h" 6 7 #include "third_party/blink/public/strings/grit/blink_strings.h" 8 #include "third_party/blink/renderer/core/html/media/html_media_element.h" 9 #include "third_party/blink/renderer/core/html/track/text_track.h" 10 #include "third_party/blink/renderer/core/html/track/text_track_list.h" 11 #include "third_party/blink/renderer/platform/text/platform_locale.h" 12 13 namespace blink { 14 MediaControlsTextTrackManager(HTMLMediaElement & media_element)15MediaControlsTextTrackManager::MediaControlsTextTrackManager( 16 HTMLMediaElement& media_element) 17 : media_element_(&media_element) {} 18 GetTextTrackLabel(TextTrack * track) const19String MediaControlsTextTrackManager::GetTextTrackLabel( 20 TextTrack* track) const { 21 if (!track) { 22 return media_element_->GetLocale().QueryString(IDS_MEDIA_TRACKS_OFF); 23 } 24 25 String track_label = track->label(); 26 27 if (track_label.IsEmpty()) 28 track_label = track->language(); 29 30 if (track_label.IsEmpty()) { 31 track_label = String(media_element_->GetLocale().QueryString( 32 IDS_MEDIA_TRACKS_NO_LABEL, String::Number(track->TrackIndex() + 1))); 33 } 34 35 return track_label; 36 } 37 ShowTextTrackAtIndex(unsigned index_to_enable)38void MediaControlsTextTrackManager::ShowTextTrackAtIndex( 39 unsigned index_to_enable) { 40 TextTrackList* track_list = media_element_->textTracks(); 41 if (index_to_enable >= track_list->length()) 42 return; 43 TextTrack* track = track_list->AnonymousIndexedGetter(index_to_enable); 44 if (track && track->CanBeRendered()) 45 track->setMode(TextTrack::ShowingKeyword()); 46 } 47 DisableShowingTextTracks()48void MediaControlsTextTrackManager::DisableShowingTextTracks() { 49 TextTrackList* track_list = media_element_->textTracks(); 50 for (unsigned i = 0; i < track_list->length(); ++i) { 51 TextTrack* track = track_list->AnonymousIndexedGetter(i); 52 if (track->mode() == TextTrack::ShowingKeyword()) 53 track->setMode(TextTrack::DisabledKeyword()); 54 } 55 } 56 Trace(Visitor * visitor) const57void MediaControlsTextTrackManager::Trace(Visitor* visitor) const { 58 visitor->Trace(media_element_); 59 } 60 61 } // namespace blink 62