summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2011-08-19 09:52:14 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-19 09:52:14 -0700
commit03721d93591244128ff918202425d381e2fedf50 (patch)
treed9db438b5bda6d237a6ad52d8c56cde3b6d2c48d /Source
parent13e9931d99bd79e47c4d020441b9e74338a65907 (diff)
parent0676d61efc26679f7a1ba9e9a72daf8e802d978c (diff)
downloadexternal_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.cpp22
-rw-r--r--Source/WebCore/html/HTMLMediaElement.h4
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