| Index: third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
|
| index de2ce349106fa3307492ef92fc62cff6d58085d6..51c0e572f25e1bdf880a655a495e5ef0a7ef698b 100644
|
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
|
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControls.cpp
|
| @@ -32,6 +32,7 @@
|
| #include "core/events/MouseEvent.h"
|
| #include "core/frame/Settings.h"
|
| #include "core/html/HTMLMediaElement.h"
|
| +#include "core/html/shadow/MediaControlsWindowEventListener.h"
|
| #include "core/html/track/TextTrackContainer.h"
|
| #include "core/layout/LayoutObject.h"
|
| #include "core/layout/LayoutTheme.h"
|
| @@ -120,6 +121,9 @@ MediaControls::MediaControls(HTMLMediaElement& mediaElement)
|
| m_castButton(nullptr),
|
| m_fullscreenButton(nullptr),
|
| m_downloadButton(nullptr),
|
| + m_windowEventListener(MediaControlsWindowEventListener::create(
|
| + this,
|
| + WTF::bind(&MediaControls::hideAllMenus, wrapWeakPersistent(this)))),
|
| m_hideMediaControlsTimer(this,
|
| &MediaControls::hideMediaControlsTimerFired),
|
| m_hideTimerBehaviorFlags(IgnoreNone),
|
| @@ -519,6 +523,9 @@ void MediaControls::toggleTextTrackList() {
|
| return;
|
| }
|
|
|
| + if (!m_textTrackList->isWanted())
|
| + m_windowEventListener->start();
|
| +
|
| m_textTrackList->setVisible(!m_textTrackList->isWanted());
|
| }
|
|
|
| @@ -864,9 +871,21 @@ bool MediaControls::overflowMenuVisible() {
|
|
|
| void MediaControls::toggleOverflowMenu() {
|
| DCHECK(m_overflowList);
|
| +
|
| + if (!m_overflowList->isWanted())
|
| + m_windowEventListener->start();
|
| m_overflowList->setIsWanted(!m_overflowList->isWanted());
|
| }
|
|
|
| +void MediaControls::hideAllMenus() {
|
| + m_windowEventListener->stop();
|
| +
|
| + if (m_overflowList->isWanted())
|
| + m_overflowList->setIsWanted(false);
|
| + if (m_textTrackList->isWanted())
|
| + m_textTrackList->setVisible(false);
|
| +}
|
| +
|
| DEFINE_TRACE(MediaControls) {
|
| visitor->trace(m_mediaElement);
|
| visitor->trace(m_panel);
|
| @@ -887,6 +906,7 @@ DEFINE_TRACE(MediaControls) {
|
| visitor->trace(m_overflowList);
|
| visitor->trace(m_castButton);
|
| visitor->trace(m_overlayCastButton);
|
| + visitor->trace(m_windowEventListener);
|
| HTMLDivElement::trace(visitor);
|
| }
|
|
|
|
|