Chromium Code Reviews| 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 ba40ba127b1bf9313fe7ab24b1d649b9fe5045ca..4e256c7f2019c3930a995458096e9c06162d3c14 100644 |
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| @@ -289,7 +289,6 @@ void MediaControlMuteButtonElement::defaultEventHandler(Event* event) |
| Platform::current()->recordAction(UserMetricsAction("Media.Controls.Unmute")); |
| else |
| Platform::current()->recordAction(UserMetricsAction("Media.Controls.Mute")); |
| - |
| mediaElement().setMuted(!mediaElement().muted()); |
| event->setDefaultHandled(); |
| } |
| @@ -302,6 +301,11 @@ void MediaControlMuteButtonElement::updateDisplayType() |
| setDisplayType(mediaElement().muted() ? MediaUnMuteButton : MediaMuteButton); |
| } |
| +String MediaControlMuteButtonElement::getText() |
| +{ |
| + return mediaElement().muted() ? "Unmute" : "Mute"; |
| +} |
| + |
| // ---------------------------- |
| MediaControlPlayButtonElement::MediaControlPlayButtonElement(MediaControls& mediaControls) |
| @@ -407,6 +411,8 @@ void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType() |
| void MediaControlToggleClosedCaptionsButtonElement::defaultEventHandler(Event* event) |
| { |
| if (event->type() == EventTypeNames::click) { |
| + if (mediaControls().overflowMenuVisible()) |
| + mediaControls().toggleOverflowMenu(); |
| mediaControls().toggleTextTrackList(); |
| updateDisplayType(); |
| event->setDefaultHandled(); |
| @@ -554,6 +560,79 @@ void MediaControlTextTrackListElement::refreshTextTrackListMenu() |
| } |
| // ---------------------------- |
| +MediaControlOverflowMenu::MediaControlOverflowMenu(MediaControls& mediaControls) |
| + : MediaControlInputElement(mediaControls, MediaShowClosedCaptionsButton) |
| +{ |
| +} |
| + |
| +MediaControlOverflowMenu* MediaControlOverflowMenu::create(MediaControls& mediaControls) |
| +{ |
| + MediaControlOverflowMenu* button = new MediaControlOverflowMenu(mediaControls); |
| + button->ensureUserAgentShadowRoot(); |
| + button->setType(InputTypeNames::button); |
| + button->setShadowPseudoId(AtomicString("-webkit-overflow-menu-button")); |
| + button->setIsWanted(false); |
| + return button; |
| +} |
| + |
| +void MediaControlOverflowMenu::defaultEventHandler(Event* event) |
| +{ |
| + if (event->type() == EventTypeNames::click) { |
| + mediaControls().toggleOverflowMenu(); |
| + event->setDefaultHandled(); |
| + } |
| + |
| + HTMLInputElement::defaultEventHandler(event); |
| +} |
| + |
| +// ---------------------------- |
| +MediaControlOverflowMenuListElement::MediaControlOverflowMenuListElement(MediaControls& mediaControls) |
| + : MediaControlDivElement(mediaControls, MediaShowClosedCaptionsButton) |
| +{ |
| +} |
| + |
| +MediaControlOverflowMenuListElement* MediaControlOverflowMenuListElement::create(MediaControls& mediaControls) |
| +{ |
| + MediaControlOverflowMenuListElement* element = new MediaControlOverflowMenuListElement(mediaControls); |
| + element->setIsWanted(false); |
| + element->setShadowPseudoId(AtomicString("-internal-media-controls-overflow-menu-list")); |
| + return element; |
| +} |
| + |
| +void MediaControlOverflowMenuListElement::setOverflowMenuControls(std::set<MediaControlElementType> controls) |
| +{ |
| + removeChildren(OmitSubtreeModifiedEvent); |
| + // A list of all buttons that can appear in the overflow menu. |
| + std::vector<MediaControlInputElement*> potentialControls = mediaControls().getOverflowMenuButtons(); |
| + |
| + for (unsigned i = 0; i < potentialControls.size(); i++) { |
| + MediaControlInputElement* element = potentialControls.at(i); |
| + // Of all of the possible buttons that can be shown in the overflow menu, |
| + // we include only the buttons that didn't fit within the media player. |
| + if (controls.count(element->displayType())) { |
| + HTMLLabelElement* item = HTMLLabelElement::create(document()); |
| + item->setShadowPseudoId(AtomicString("-internal-media-controls-overflow-menu-list-item")); |
| + item->appendChild(element); |
| + item->appendChild(Text::create(document(), element->getText())); |
| + appendChild(item); |
| + } |
| + } |
| +} |
| + |
| +void MediaControlOverflowMenuListElement::setVisible(bool visible) |
| +{ |
| + setIsWanted(visible); |
| +} |
| + |
| +void MediaControlOverflowMenuListElement::defaultEventHandler(Event* event) |
| +{ |
| + if (event->type() == EventTypeNames::click) |
| + event->setDefaultHandled(); |
| + |
| + MediaControlDivElement::defaultEventHandler(event); |
| +} |
| + |
| +// ---------------------------- |
| MediaControlTimelineElement::MediaControlTimelineElement(MediaControls& mediaControls) |
| : MediaControlInputElement(mediaControls, MediaSlider) |
| @@ -801,6 +880,11 @@ void MediaControlCastButtonElement::setIsPlayingRemotely(bool isPlayingRemotely) |
| } |
| } |
| +String MediaControlCastButtonElement::getText() |
| +{ |
| + return mediaElement().isPlayingRemotely() ? "Stop casting" : "Cast"; |
|
whywhat
2016/08/19 23:56:55
hm, it's not only "Stop casting", one could contro
kdsilva
2016/08/24 05:33:26
Acknowledged. I'll reach out to Rachel about this.
|
| +} |
| + |
| void MediaControlCastButtonElement::tryShowOverlay() |
| { |
| DCHECK(m_isOverlayButton); |