diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2011-08-19 09:52:14 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-19 09:52:14 -0700 |
commit | 03721d93591244128ff918202425d381e2fedf50 (patch) | |
tree | d9db438b5bda6d237a6ad52d8c56cde3b6d2c48d /Source | |
parent | 13e9931d99bd79e47c4d020441b9e74338a65907 (diff) | |
parent | 0676d61efc26679f7a1ba9e9a72daf8e802d978c (diff) | |
download | external_webkit-03721d93591244128ff918202425d381e2fedf50.zip external_webkit-03721d93591244128ff918202425d381e2fedf50.tar.gz external_webkit-03721d93591244128ff918202425d381e2fedf50.tar.bz2 |
Merge "Show/hide HTML5 video control properly according to the touch event"
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebCore/html/HTMLMediaElement.cpp | 22 | ||||
-rw-r--r-- | Source/WebCore/html/HTMLMediaElement.h | 4 |
2 files changed, 24 insertions, 2 deletions
diff --git a/Source/WebCore/html/HTMLMediaElement.cpp b/Source/WebCore/html/HTMLMediaElement.cpp index a9f025f..93bd09e 100644 --- a/Source/WebCore/html/HTMLMediaElement.cpp +++ b/Source/WebCore/html/HTMLMediaElement.cpp @@ -79,6 +79,11 @@ #include "Widget.h" #endif +#if PLATFORM(ANDROID) +// For every touch, show the media control for 4 seconds. +#define TOUCH_DELAY 4 +#endif + using namespace std; namespace WebCore { @@ -171,6 +176,9 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document* docum , m_dispatchingCanPlayEvent(false) , m_loadInitiatedByUserGesture(false) , m_completelyLoaded(false) +#if PLATFORM(ANDROID) + , m_lastTouch(0) +#endif { LOG(Media, "HTMLMediaElement::HTMLMediaElement"); document->registerForDocumentActivationCallbacks(this); @@ -1626,8 +1634,13 @@ void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*) scheduleTimeupdateEvent(true); if (hasMediaControls()) { - if (!m_mouseOver && controls() && hasVideo()) + + if (!m_mouseOver && controls() && hasVideo()) { +#if PLATFORM(ANDROID) + if (WTF::currentTime() - m_lastTouch > TOUCH_DELAY) +#endif mediaControls()->makeTransparent(); + } mediaControls()->playbackProgressed(); } // FIXME: deal with cue ranges here @@ -2373,8 +2386,13 @@ void HTMLMediaElement::defaultEventHandler(Event* event) } #if PLATFORM(ANDROID) && ENABLE(TOUCH_EVENTS) - if (event->isTouchEvent()) + if (event->isTouchEvent()) { m_mouseOver = !(event->type() == eventNames().touchendEvent || event->type() == eventNames().touchcancelEvent); + if (m_mouseOver && hasMediaControls() && controls() && !canPlay()) { + m_lastTouch = WTF::currentTime(); + mediaControls()->makeOpaque(); + } + } #endif HTMLElement::defaultEventHandler(event); diff --git a/Source/WebCore/html/HTMLMediaElement.h b/Source/WebCore/html/HTMLMediaElement.h index 604cdf8..987cf87 100644 --- a/Source/WebCore/html/HTMLMediaElement.h +++ b/Source/WebCore/html/HTMLMediaElement.h @@ -417,6 +417,10 @@ private: bool m_dispatchingCanPlayEvent : 1; bool m_loadInitiatedByUserGesture : 1; bool m_completelyLoaded : 1; + +#if PLATFORM(ANDROID) + double m_lastTouch; +#endif }; } //namespace |