static bool paintMediaToggleClosedCaptionsButton(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) { HTMLMediaElement* mediaElement = toParentMediaElement(object); if (!mediaElement) return false; static Image* mediaClosedCaptionButton = platformResource("mediaplayerClosedCaption"); static Image* mediaClosedCaptionButtonDisabled = platformResource("mediaplayerClosedCaptionDisabled"); if (mediaElement->closedCaptionsVisible()) return paintMediaButton(paintInfo.context, rect, mediaClosedCaptionButton); return paintMediaButton(paintInfo.context, rect, mediaClosedCaptionButtonDisabled); }
void MediaControlClosedCaptionsTrackListElement::updateDisplay() { #if ENABLE(VIDEO_TRACK) DEFINE_STATIC_LOCAL(AtomicString, selectedClassValue, ("selected", AtomicString::ConstructFromLiteral)); if (!mediaController()->hasClosedCaptions()) return; HTMLMediaElement* mediaElement = toParentMediaElement(this); if (!mediaElement) return; TextTrackList* trackList = mediaElement->textTracks(); if (!trackList || !trackList->length()) return; if (m_trackListHasChanged) rebuildTrackListMenu(); bool captionsVisible = mediaElement->closedCaptionsVisible(); for (unsigned i = 0, length = m_menuItems.size(); i < length; ++i) { RefPtr<Element> trackItem = m_menuItems[i]; int trackIndex = trackListIndexForElement(trackItem.get()); if (trackIndex != HTMLMediaElement::textTracksIndexNotFound()) { if (trackIndex == HTMLMediaElement::textTracksOffIndex()) { if (captionsVisible) trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXCEPTION); else trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPTION); } else { TextTrack* track = trackList->item(trackIndex); if (!track) continue; if (track->mode() == TextTrack::showingKeyword()) trackItem->classList()->add(selectedClassValue, ASSERT_NO_EXCEPTION); else trackItem->classList()->remove(selectedClassValue, ASSERT_NO_EXCEPTION); } } } #endif }