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); |