Change view status of video controls by click event.
authoreojin.ham <eojin.ham@samsung.com>
Thu, 4 Apr 2013 04:57:40 +0000 (13:57 +0900)
committerGerrit Code Review <gerrit2@kim11>
Thu, 4 Apr 2013 15:11:10 +0000 (00:11 +0900)
[Title] Change view status of video controls by click event.
[Problem] Video controls are not hidden until touching outside of video screen.
[Cause] Mouse-out event don't occur until touching outside of video screen.
[Solution] Change view status of video controls by click event.
           Add timer callback to hide controls on normal screen also.
Change-Id: Ie2768023d46b093b364ca66e5d4191df17ec6ef1

Source/WebCore/html/shadow/MediaControlElements.h
Source/WebCore/html/shadow/MediaControlRootElement.cpp
Source/WebCore/html/shadow/MediaControlRootElement.h

index effdcee..e396414 100644 (file)
@@ -115,6 +115,9 @@ public:
     void resetPosition();
     void makeOpaque();
     void makeTransparent();
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    bool isOpaque() { return m_opaque; }
+#endif
 
     virtual bool willRespondToMouseMoveEvents() OVERRIDE { return true; }
     virtual bool willRespondToMouseClickEvents() OVERRIDE { return true; }
index 2aa1632..7ebc452 100644 (file)
@@ -74,7 +74,11 @@ MediaControlRootElement::MediaControlRootElement(Document* document)
 #if ENABLE(VIDEO_TRACK)
     , m_textDisplayContainer(0)
 #endif
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    , m_hideControlsTimer(this, &MediaControlRootElement::hideControlsTimerFired)
+#else
     , m_hideFullscreenControlsTimer(this, &MediaControlRootElement::hideFullscreenControlsTimerFired)
+#endif
     , m_isMouseOverControls(false)
     , m_isFullscreen(false)
 {
@@ -389,8 +393,12 @@ void MediaControlRootElement::playbackStarted()
     m_timeline->setPosition(m_mediaController->currentTime());
     updateTimeDisplay();
 
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    m_hideControlsTimer.startOneShot(timeWithoutMouseMovementBeforeHidingControls);
+#else
     if (m_isFullscreen)
         startHideFullscreenControlsTimer();
+#endif
 }
 
 void MediaControlRootElement::playbackProgressed()
@@ -398,8 +406,10 @@ void MediaControlRootElement::playbackProgressed()
     m_timeline->setPosition(m_mediaController->currentTime());
     updateTimeDisplay();
 
+#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
     if (!m_isMouseOverControls && m_mediaController->hasVideo())
         makeTransparent();
+#endif
 }
 
 void MediaControlRootElement::playbackStopped()
@@ -409,7 +419,11 @@ void MediaControlRootElement::playbackStopped()
     updateTimeDisplay();
     makeOpaque();
 
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    m_hideControlsTimer.stop();
+#else
     stopHideFullscreenControlsTimer();
+#endif
 }
 
 void MediaControlRootElement::updateTimeDisplay()
@@ -517,7 +531,9 @@ void MediaControlRootElement::enteredFullscreen()
 #endif
     }
 
+#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
     startHideFullscreenControlsTimer();
+#endif
 }
 
 void MediaControlRootElement::exitedFullscreen()
@@ -544,7 +560,9 @@ void MediaControlRootElement::exitedFullscreen()
     m_panel->removeInlineStyleProperty(CSSPropertyZoom);
 #endif
 
+#if !ENABLE(TIZEN_GSTREAMER_VIDEO)
     stopHideFullscreenControlsTimer();
+#endif
 }
 
 void MediaControlRootElement::showVolumeSlider()
@@ -575,6 +593,18 @@ void MediaControlRootElement::defaultEventHandler(Event* event)
 {
     MediaControls::defaultEventHandler(event);
 
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    if (event->type() == eventNames().clickEvent) {
+        if (!containsRelatedTarget(event)) {
+            if (m_panel->isOpaque())
+                makeTransparent();
+            else {
+                makeOpaque();
+                m_hideControlsTimer.startOneShot(timeWithoutMouseMovementBeforeHidingControls);
+            }
+        }
+    }
+#else
     if (event->type() == eventNames().mouseoverEvent) {
         if (!containsRelatedTarget(event)) {
             m_isMouseOverControls = true;
@@ -598,8 +628,24 @@ void MediaControlRootElement::defaultEventHandler(Event* event)
                 startHideFullscreenControlsTimer();
         }
     }
+#endif
 }
 
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+void MediaControlRootElement::hideControlsTimerFired(Timer<MediaControlRootElement>*)
+{
+    if (m_mediaController->paused())
+        return;
+
+    if (!m_mediaController->hasVideo())
+        return;
+
+    if (Page* page = document()->page())
+        page->chrome()->setCursorHiddenUntilMouseMoves(true);
+
+    makeTransparent();
+}
+#else
 void MediaControlRootElement::startHideFullscreenControlsTimer()
 {
     if (!m_isFullscreen)
@@ -629,6 +675,7 @@ void MediaControlRootElement::stopHideFullscreenControlsTimer()
 {
     m_hideFullscreenControlsTimer.stop();
 }
+#endif
 
 #if ENABLE(VIDEO_TRACK)
 void MediaControlRootElement::createTextTrackDisplay()
index 5ce6ac7..0f03d9c 100644 (file)
@@ -120,9 +120,14 @@ private:
     MediaControlRootElement(Document*);
 
     virtual void defaultEventHandler(Event*);
+
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    void hideControlsTimerFired(Timer<MediaControlRootElement>*);
+#else
     void hideFullscreenControlsTimerFired(Timer<MediaControlRootElement>*);
     void startHideFullscreenControlsTimer();
     void stopHideFullscreenControlsTimer();
+#endif
 
     virtual const AtomicString& shadowPseudoId() const;
 
@@ -154,7 +159,13 @@ private:
     MediaControlTextTrackContainerElement* m_textDisplayContainer;
     MediaControlTextTrackDisplayElement* m_textTrackDisplay;
 #endif
+
+#if ENABLE(TIZEN_GSTREAMER_VIDEO)
+    Timer<MediaControlRootElement> m_hideControlsTimer;
+#else
     Timer<MediaControlRootElement> m_hideFullscreenControlsTimer;
+#endif
+
     bool m_isMouseOverControls;
     bool m_isFullscreen;
 };