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

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 bf8c0459b928958e840e38807573a6dc315950ad..257381d581288f4438f82750232ac2d3bfee4d97 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,13 @@ void MediaControlMuteButtonElement::updateDisplayType()
setDisplayType(mediaElement().muted() ? MediaUnMuteButton : MediaMuteButton);
}
+String MediaControlMuteButtonElement::getText()
+{
+ if (mediaElement().muted())
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuUnmute);
liberato (no reviews please) 2016/08/24 16:44:22 you might consider folding all of the queryString(
kdsilva 2016/08/26 18:11:02 Done. Although I'm not sure what the default retur
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuMute);
+}
+
// ----------------------------
MediaControlPlayButtonElement::MediaControlPlayButtonElement(MediaControls& mediaControls)
@@ -407,6 +413,8 @@ void MediaControlToggleClosedCaptionsButtonElement::updateDisplayType()
void MediaControlToggleClosedCaptionsButtonElement::defaultEventHandler(Event* event)
{
if (event->type() == EventTypeNames::click) {
+ if (mediaControls().overflowMenuVisible())
+ mediaControls().toggleOverflowMenu();
mediaControls().toggleTextTrackList();
updateDisplayType();
event->setDefaultHandled();
@@ -415,6 +423,11 @@ void MediaControlToggleClosedCaptionsButtonElement::defaultEventHandler(Event* e
HTMLInputElement::defaultEventHandler(event);
}
+String MediaControlToggleClosedCaptionsButtonElement::getText()
+{
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuCaptions);
+}
+
// ----------------------------
MediaControlTextTrackListElement::MediaControlTextTrackListElement(MediaControls& mediaControls)
@@ -554,6 +567,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(const std::set<MediaControlElementType>* controls)
+{
+ removeChildren(OmitSubtreeModifiedEvent);
liberato (no reviews please) 2016/08/24 16:44:22 if you choose to go the route of pre-allocating ev
kdsilva 2016/08/26 18:11:02 Done. Although I couldn't find a simple of changin
+ // 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())) {
liberato (no reviews please) 2016/08/24 16:44:22 if the original element handles providing its own
kdsilva 2016/08/26 18:11:03 Done.
+ 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()));
liberato (no reviews please) 2016/08/24 16:44:22 does clicking on the label do anything? is it sup
kdsilva 2016/08/26 18:11:02 Clicking on the label should perform the action th
+ appendChild(item);
+ }
+ }
+}
+
+void MediaControlOverflowMenuListElement::showOverflowMenu(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)
@@ -738,6 +824,11 @@ void MediaControlFullscreenButtonElement::setIsFullscreen(bool isFullscreen)
setDisplayType(isFullscreen ? MediaExitFullscreenButton : MediaEnterFullscreenButton);
}
+String MediaControlFullscreenButtonElement::getText()
+{
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuFullscreen);
+}
+
// ----------------------------
MediaControlCastButtonElement::MediaControlCastButtonElement(MediaControls& mediaControls, bool isOverlayButton)
@@ -801,6 +892,13 @@ void MediaControlCastButtonElement::setIsPlayingRemotely(bool isPlayingRemotely)
}
}
+String MediaControlCastButtonElement::getText()
+{
+ if (mediaElement().isPlayingRemotely())
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuStopCast);
+ return mediaElement().locale().queryString(WebLocalizedString::OverflowMenuCast);
+}
+
void MediaControlCastButtonElement::tryShowOverlay()
{
DCHECK(m_isOverlayButton);

Powered by Google App Engine
This is Rietveld 408576698