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

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

Issue 2243473002: Adding overflow menu to media player (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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/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);

Powered by Google App Engine
This is Rietveld 408576698