Index: Source/core/html/shadow/MediaControls.cpp |
diff --git a/Source/core/html/shadow/MediaControls.cpp b/Source/core/html/shadow/MediaControls.cpp |
index 5b521ce71d70c41027545b52b1a4ee1b72762158..e0902563327121c6c1485ba52ce6e8ed068356fc 100644 |
--- a/Source/core/html/shadow/MediaControls.cpp |
+++ b/Source/core/html/shadow/MediaControls.cpp |
@@ -45,11 +45,6 @@ static bool fullscreenIsSupported(const Document& document) |
return !document.settings() || document.settings()->fullscreenSupported(); |
} |
-static bool deviceSupportsMouse(const Document& document) |
-{ |
- return !document.settings() || document.settings()->deviceSupportsMouse(); |
-} |
- |
MediaControls::MediaControls(HTMLMediaElement& mediaElement) |
: HTMLDivElement(mediaElement.document()) |
, m_mediaElement(&mediaElement) |
@@ -69,6 +64,7 @@ MediaControls::MediaControls(HTMLMediaElement& mediaElement) |
, m_hideMediaControlsTimer(this, &MediaControls::hideMediaControlsTimerFired) |
, m_isMouseOverControls(false) |
, m_isPausedForScrubbing(false) |
+ , m_wasLastEventTouch(false) |
{ |
} |
@@ -372,6 +368,8 @@ void MediaControls::exitedFullscreen() |
void MediaControls::defaultEventHandler(Event* event) |
{ |
HTMLDivElement::defaultEventHandler(event); |
+ m_wasLastEventTouch = event->isTouchEvent() || event->isGestureEvent() |
+ || (event->isMouseEvent() && toMouseEvent(event)->fromTouch()); |
if (event->type() == EventTypeNames::mouseover) { |
if (!containsRelatedTarget(event)) { |
@@ -409,8 +407,7 @@ void MediaControls::hideMediaControlsTimerFired(Timer<MediaControls>*) |
return; |
unsigned behaviorFlags = IgnoreFocus | IgnoreVideoHover; |
- // FIXME: improve this check, see http://www.crbug.com/401177. |
- if (!deviceSupportsMouse(document())) { |
+ if (m_wasLastEventTouch) { |
behaviorFlags |= IgnoreControlsHover; |
} |
if (!shouldHideMediaControls(behaviorFlags)) |