summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/media_controls/media_controls_text_track_manager.cc
blob: 64291f875c4cf4c9523101da54c0084fc8b5c544 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "third_party/blink/renderer/modules/media_controls/media_controls_text_track_manager.h"

#include "third_party/blink/public/strings/grit/blink_strings.h"
#include "third_party/blink/renderer/core/html/media/html_media_element.h"
#include "third_party/blink/renderer/core/html/track/text_track.h"
#include "third_party/blink/renderer/core/html/track/text_track_list.h"
#include "third_party/blink/renderer/platform/text/platform_locale.h"

namespace blink {

MediaControlsTextTrackManager::MediaControlsTextTrackManager(
    HTMLMediaElement& media_element)
    : media_element_(&media_element) {}

String MediaControlsTextTrackManager::GetTextTrackLabel(
    TextTrack* track) const {
  if (!track) {
    return media_element_->GetLocale().QueryString(IDS_MEDIA_TRACKS_OFF);
  }

  String track_label = track->label();

  if (track_label.IsEmpty())
    track_label = track->language();

  if (track_label.IsEmpty()) {
    track_label = String(media_element_->GetLocale().QueryString(
        IDS_MEDIA_TRACKS_NO_LABEL, String::Number(track->TrackIndex() + 1)));
  }

  return track_label;
}

void MediaControlsTextTrackManager::ShowTextTrackAtIndex(
    unsigned index_to_enable) {
  TextTrackList* track_list = media_element_->textTracks();
  if (index_to_enable >= track_list->length())
    return;
  TextTrack* track = track_list->AnonymousIndexedGetter(index_to_enable);
  if (track && track->CanBeRendered())
    track->setMode(TextTrack::ShowingKeyword());
}

void MediaControlsTextTrackManager::DisableShowingTextTracks() {
  TextTrackList* track_list = media_element_->textTracks();
  for (unsigned i = 0; i < track_list->length(); ++i) {
    TextTrack* track = track_list->AnonymousIndexedGetter(i);
    if (track->mode() == TextTrack::ShowingKeyword())
      track->setMode(TextTrack::DisabledKeyword());
  }
}

void MediaControlsTextTrackManager::Trace(Visitor* visitor) const {
  visitor->Trace(media_element_);
}

}  // namespace blink