diff options
Diffstat (limited to 'Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp')
-rw-r--r-- | Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp b/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp index 62f9e8599..6b3913bb6 100644 --- a/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp +++ b/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp @@ -84,6 +84,7 @@ MediaControlRootElementChromium::MediaControlRootElementChromium(Document* docum , m_timeline(0) , m_panelMuteButton(0) , m_volumeSlider(0) + , m_toggleClosedCaptionsButton(0) , m_fullscreenButton(0) , m_panel(0) , m_enclosure(0) @@ -164,6 +165,14 @@ bool MediaControlRootElementChromium::initializeControls(Document* document) if (ec) return false; + if (document->page()->theme()->supportsClosedCaptioning()) { + RefPtr<MediaControlToggleClosedCaptionsButtonElement> toggleClosedCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(document); + m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get(); + panel->appendChild(toggleClosedCaptionsButton.release(), ec, true); + if (ec) + return false; + } + RefPtr<MediaControlFullscreenButtonElement> fullscreenButton = MediaControlFullscreenButtonElement::create(document, this); m_fullscreenButton = fullscreenButton.get(); panel->appendChild(fullscreenButton.release(), ec, true); @@ -201,6 +210,8 @@ void MediaControlRootElementChromium::setMediaController(MediaControllerInterfac m_panelMuteButton->setMediaController(controller); if (m_volumeSlider) m_volumeSlider->setMediaController(controller); + if (m_toggleClosedCaptionsButton) + m_toggleClosedCaptionsButton->setMediaController(controller); if (m_fullscreenButton) m_fullscreenButton->setMediaController(controller); if (m_panel) @@ -265,6 +276,13 @@ void MediaControlRootElementChromium::reset() } } + if (m_toggleClosedCaptionsButton) { + if (m_mediaController->hasClosedCaptions()) + m_toggleClosedCaptionsButton->show(); + else + m_toggleClosedCaptionsButton->hide(); + } + if (m_mediaController->supportsFullscreen() && m_mediaController->hasVideo()) m_fullscreenButton->show(); else @@ -332,6 +350,8 @@ void MediaControlRootElementChromium::reportedError() m_panelMuteButton->hide(); m_volumeSlider->hide(); + if (m_toggleClosedCaptionsButton) + m_toggleClosedCaptionsButton->hide(); m_fullscreenButton->hide(); } @@ -417,6 +437,8 @@ void MediaControlRootElementChromium::stopHideFullscreenControlsTimer() void MediaControlRootElementChromium::changedClosedCaptionsVisibility() { + if (m_toggleClosedCaptionsButton) + m_toggleClosedCaptionsButton->updateDisplayType(); } void MediaControlRootElementChromium::changedMute() @@ -465,6 +487,9 @@ void MediaControlRootElementChromium::createTextTrackDisplay() RefPtr<MediaControlTextTrackContainerElement> textDisplayContainer = MediaControlTextTrackContainerElement::create(document()); m_textDisplayContainer = textDisplayContainer.get(); + if (m_mediaController) + m_textDisplayContainer->setMediaController(m_mediaController); + // Insert it before the first controller element so it always displays behind the controls. insertBefore(textDisplayContainer.release(), m_enclosure, ASSERT_NO_EXCEPTION, true); } |