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

Unified Diff: third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp

Issue 2456993003: Improve caption button behavior for video player. (Closed)
Patch Set: Addresss feedback Created 4 years, 1 month 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
Index: third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
index 022370bfdd79ba204e54fd57a969e6312dfd4761..1e7b2c6d7737af30678b67fe6391d2b8ff81d04b 100644
--- a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
@@ -420,7 +420,17 @@ void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType() {
void MediaControlToggleClosedCaptionsButtonElement::defaultEventHandler(
Event* event) {
if (event->type() == EventTypeNames::click) {
- mediaControls().toggleTextTrackList();
+ if (mediaElement().textTracks()->length() == 1) {
+ // If only one track exists, toggle it on/off
+ if (mediaElement().textTracks()->hasShowingTracks()) {
+ mediaControls().disableShowingTextTracks();
+ } else {
+ mediaControls().showTextTrackAtIndex(0);
+ }
+ } else {
+ mediaControls().toggleTextTrackList();
+ }
+
updateDisplayType();
event->setDefaultHandled();
}
@@ -456,12 +466,12 @@ void MediaControlTextTrackListElement::defaultEventHandler(Event* event) {
if (!target || !target->isElementNode())
return;
- disableShowingTextTracks();
+ mediaControls().disableShowingTextTracks();
int trackIndex =
toElement(target)->getIntegralAttribute(trackIndexAttrName());
if (trackIndex != trackIndexOffValue) {
DCHECK_GE(trackIndex, 0);
- showTextTrackAtIndex(trackIndex);
+ mediaControls().showTextTrackAtIndex(trackIndex);
mediaElement().disableAutomaticTextTrackSelection();
}
@@ -479,35 +489,22 @@ void MediaControlTextTrackListElement::setVisible(bool visible) {
}
}
-void MediaControlTextTrackListElement::showTextTrackAtIndex(
- unsigned indexToEnable) {
- TextTrackList* trackList = mediaElement().textTracks();
- if (indexToEnable >= trackList->length())
- return;
- TextTrack* track = trackList->anonymousIndexedGetter(indexToEnable);
- if (track && track->canBeRendered())
- track->setMode(TextTrack::showingKeyword());
-}
-
-void MediaControlTextTrackListElement::disableShowingTextTracks() {
- TextTrackList* trackList = mediaElement().textTracks();
- for (unsigned i = 0; i < trackList->length(); ++i) {
- TextTrack* track = trackList->anonymousIndexedGetter(i);
- if (track->mode() == TextTrack::showingKeyword())
- track->setMode(TextTrack::disabledKeyword());
- }
-}
-
String MediaControlTextTrackListElement::getTextTrackLabel(TextTrack* track) {
- if (!track)
+ if (!track) {
return mediaElement().locale().queryString(
WebLocalizedString::TextTracksOff);
+ }
String trackLabel = track->label();
if (trackLabel.isEmpty())
+ trackLabel = track->language();
+
+ if (trackLabel.isEmpty()) {
trackLabel = String(mediaElement().locale().queryString(
- WebLocalizedString::TextTracksNoLabel));
+ WebLocalizedString::TextTracksNoLabel,
+ String::number(track->trackIndex() + 1)));
+ }
return trackLabel;
}

Powered by Google App Engine
This is Rietveld 408576698