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

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

Issue 1079323002: Support text track selection in video controls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and lgtm nits Created 4 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
Index: third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
index 2457498280867bd3c37567c36fd2aaca50e49adb..b2ba2c988428d6c4a61ef158a703fa64435973af 100644
--- a/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
+++ b/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
@@ -113,6 +113,7 @@ MediaControls::MediaControls(HTMLMediaElement& mediaElement)
, m_muteButton(nullptr)
, m_volumeSlider(nullptr)
, m_toggleClosedCaptionsButton(nullptr)
+ , m_textTrackList(nullptr)
, m_castButton(nullptr)
, m_fullScreenButton(nullptr)
, m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired)
@@ -154,6 +155,12 @@ MediaControls* MediaControls::create(HTMLMediaElement& mediaElement)
// +-MediaControlToggleClosedCaptionsButtonElement (-webkit-media-controls-toggle-closed-captions-button)
// +-MediaControlCastButtonElement (-internal-media-controls-cast-button)
// \-MediaControlFullscreenButtonElement (-webkit-media-controls-fullscreen-button)
+// +-MediaControlTextTrackListElement (-internal-media-controls-text-track-list)
+// | {for each renderable text track}
+// \-MediaControlTextTrackListItem (-internal-media-controls-text-track-list-item)
+// +-MediaControlTextTrackListItemInput (-internal-media-controls-text-track-list-item-input)
+// +-MediaControlTextTrackListItemCaptions (-internal-media-controls-text-track-list-kind-captions)
+// +-MediaControlTextTrackListItemSubtitles (-internal-media-controls-text-track-list-kind-subtitles)
void MediaControls::initializeControls()
{
const bool useNewUi = RuntimeEnabledFeatures::newMediaPlaybackUiEnabled();
@@ -228,6 +235,10 @@ void MediaControls::initializeControls()
m_enclosure = enclosure;
appendChild(enclosure);
+
+ MediaControlTextTrackListElement* textTrackList = MediaControlTextTrackListElement::create(*this);
+ m_textTrackList = textTrackList;
+ appendChild(textTrackList);
}
void MediaControls::reset()
@@ -331,6 +342,9 @@ bool MediaControls::shouldHideMediaControls(unsigned behaviorFlags) const
const bool ignoreFocus = behaviorFlags & IgnoreFocus;
if (!ignoreFocus && (mediaElement().focused() || contains(document().focusedElement())))
return false;
+ // Don't hide the media controls when the text track list is showing.
+ if (m_textTrackList->isWanted())
+ return false;
return true;
}
@@ -457,6 +471,16 @@ void MediaControls::refreshClosedCaptionsButtonVisibility()
BatchedControlUpdate batch(this);
}
+void MediaControls::toggleTextTrackList()
+{
+ if (!mediaElement().hasClosedCaptions()) {
+ m_textTrackList->setVisible(false);
+ return;
+ }
+
+ m_textTrackList->setVisible(!m_textTrackList->isWanted());
+}
+
void MediaControls::refreshCastButtonVisibility()
{
refreshCastButtonVisibilityWithoutUpdate();
@@ -756,6 +780,7 @@ DEFINE_TRACE(MediaControls)
visitor->trace(m_fullScreenButton);
visitor->trace(m_durationDisplay);
visitor->trace(m_enclosure);
+ visitor->trace(m_textTrackList);
visitor->trace(m_castButton);
visitor->trace(m_overlayCastButton);
HTMLDivElement::trace(visitor);
« no previous file with comments | « third_party/WebKit/Source/core/html/shadow/MediaControls.h ('k') | third_party/WebKit/Source/core/html/track/TextTrack.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698