2010-08-25 Gyuyoung Kim <gyuyoung.kim@samsung.com>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Aug 2010 06:29:25 +0000 (06:29 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 26 Aug 2010 06:29:25 +0000 (06:29 +0000)
        Reviewed by Antonio Gomes.

        [EFL] Add dummy FullScreenVideoControllerEfl to WebKit EFL
        https://bugs.webkit.org/show_bug.cgi?id=44590

        Add FullScreenVideoControllerEfl to WebCoreSupport. However,
        this is not implemented yet.

        * CMakeListsEfl.txt:
        * WebCoreSupport/FullscreenVideoControllerEfl.cpp: Added.
        (FullscreenVideoController::FullscreenVideoController):
        (FullscreenVideoController::~FullscreenVideoController):
        (FullscreenVideoController::setMediaElement):
        (FullscreenVideoController::showHud):
        (FullscreenVideoController::hideHud):
        (FullscreenVideoController::enterFullscreen):
        (FullscreenVideoController::updateHudPosition):
        (FullscreenVideoController::exitOnUserRequest):
        (FullscreenVideoController::exitFullscreen):
        (FullscreenVideoController::canPlay):
        (FullscreenVideoController::play):
        (FullscreenVideoController::pause):
        (FullscreenVideoController::playStateChanged):
        (FullscreenVideoController::togglePlay):
        (FullscreenVideoController::volume):
        (FullscreenVideoController::muted):
        (FullscreenVideoController::setVolume):
        (FullscreenVideoController::volumeChanged):
        (FullscreenVideoController::muteChanged):
        (FullscreenVideoController::currentTime):
        (FullscreenVideoController::setCurrentTime):
        (FullscreenVideoController::duration):
        (FullscreenVideoController::percentLoaded):
        (FullscreenVideoController::beginSeek):
        (FullscreenVideoController::doSeek):
        (FullscreenVideoController::endSeek):
        (timeToString):
        (FullscreenVideoController::updateHudProgressBar):
        (FullscreenVideoController::createHud):
        * WebCoreSupport/FullscreenVideoControllerEfl.h: Added.
        (FullscreenVideoController::mediaElement):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@66081 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/efl/CMakeListsEfl.txt
WebKit/efl/ChangeLog
WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.cpp [new file with mode: 0644]
WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.h [new file with mode: 0644]

index cdb24ff..7b5865b 100644 (file)
@@ -21,12 +21,23 @@ LIST(APPEND WebKit_INCLUDE_DIRECTORIES
     ${SQLITE_INCLUDE_DIRS}
 )
 
+IF (ENABLE_VIDEO)
+LIST(APPEND WebKit_INCLUDE_DIRECTORIES
+    "${WEBCORE_DIR}/platform/graphics/gstreamer"
+    ${Gstreamer-App_INCLUDE_DIRS}
+    ${Gstreamer-Interfaces_INCLUDE_DIRS}
+    ${Gstreamer-Pbutils_INCLUDE_DIRS}
+    ${Gstreamer-Video_INCLUDE_DIRS}
+)
+ENDIF()
+
 LIST(APPEND WebKit_SOURCES
     efl/WebCoreSupport/ChromeClientEfl.cpp
     efl/WebCoreSupport/ContextMenuClientEfl.cpp
     efl/WebCoreSupport/DragClientEfl.cpp
     efl/WebCoreSupport/EditorClientEfl.cpp
     efl/WebCoreSupport/FrameLoaderClientEfl.cpp
+    efl/WebCoreSupport/FullscreenVideoControllerEfl.cpp
     efl/WebCoreSupport/InspectorClientEfl.cpp
 
     efl/ewk/ewk_contextmenu.cpp
index bec9738..4039b62 100644 (file)
@@ -2,6 +2,50 @@
 
         Reviewed by Antonio Gomes.
 
+        [EFL] Add dummy FullScreenVideoControllerEfl to WebKit EFL
+        https://bugs.webkit.org/show_bug.cgi?id=44590
+
+        Add FullScreenVideoControllerEfl to WebCoreSupport. However,
+        this is not implemented yet.
+
+        * CMakeListsEfl.txt:
+        * WebCoreSupport/FullscreenVideoControllerEfl.cpp: Added.
+        (FullscreenVideoController::FullscreenVideoController):
+        (FullscreenVideoController::~FullscreenVideoController):
+        (FullscreenVideoController::setMediaElement):
+        (FullscreenVideoController::showHud):
+        (FullscreenVideoController::hideHud):
+        (FullscreenVideoController::enterFullscreen):
+        (FullscreenVideoController::updateHudPosition):
+        (FullscreenVideoController::exitOnUserRequest):
+        (FullscreenVideoController::exitFullscreen):
+        (FullscreenVideoController::canPlay):
+        (FullscreenVideoController::play):
+        (FullscreenVideoController::pause):
+        (FullscreenVideoController::playStateChanged):
+        (FullscreenVideoController::togglePlay):
+        (FullscreenVideoController::volume):
+        (FullscreenVideoController::muted):
+        (FullscreenVideoController::setVolume):
+        (FullscreenVideoController::volumeChanged):
+        (FullscreenVideoController::muteChanged):
+        (FullscreenVideoController::currentTime):
+        (FullscreenVideoController::setCurrentTime):
+        (FullscreenVideoController::duration):
+        (FullscreenVideoController::percentLoaded):
+        (FullscreenVideoController::beginSeek):
+        (FullscreenVideoController::doSeek):
+        (FullscreenVideoController::endSeek):
+        (timeToString):
+        (FullscreenVideoController::updateHudProgressBar):
+        (FullscreenVideoController::createHud):
+        * WebCoreSupport/FullscreenVideoControllerEfl.h: Added.
+        (FullscreenVideoController::mediaElement):
+
+2010-08-25  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
+
+        Reviewed by Antonio Gomes.
+
         [EFL] Add setting API for enabling local storage.
         https://bugs.webkit.org/show_bug.cgi?id=44319
 
diff --git a/WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.cpp b/WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.cpp
new file mode 100644 (file)
index 0000000..6e5d599
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ *  Copyright (C) 2010 Igalia S.L
+ *  Copyright (C) 2010 Samsung Electronics
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public License
+ *  along with this library; see the file COPYING.LIB.  If not, write to
+ *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(VIDEO)
+
+#include "FullscreenVideoControllerEfl.h"
+
+#include "MediaPlayer.h"
+#include "NotImplemented.h"
+
+#include <gst/gst.h>
+
+using namespace std;
+using namespace WebCore;
+
+FullscreenVideoController::FullscreenVideoController()
+    : m_hudTimeoutId(0)
+    , m_progressBarUpdateId(0)
+    , m_seekLock(false)
+    , m_window(0)
+    , m_hudWindow(0)
+{
+}
+
+FullscreenVideoController::~FullscreenVideoController()
+{
+    exitFullscreen();
+}
+
+void FullscreenVideoController::setMediaElement(HTMLMediaElement* mediaElement)
+{
+    if (mediaElement == m_mediaElement)
+        return;
+
+    m_mediaElement = mediaElement;
+    if (!m_mediaElement) {
+        // Can't do full-screen, just get out
+        exitFullscreen();
+    }
+}
+
+void FullscreenVideoController::showHud(bool autoHide)
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::hideHud()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::enterFullscreen()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::updateHudPosition()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::exitOnUserRequest()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::exitFullscreen()
+{
+    notImplemented();
+}
+
+bool FullscreenVideoController::canPlay() const
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::play()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::pause()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::playStateChanged()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::togglePlay()
+{
+    notImplemented();
+}
+
+float FullscreenVideoController::volume() const
+{
+    notImplemented();
+    return 0;
+}
+
+bool FullscreenVideoController::muted() const
+{
+    notImplemented();
+    return false;
+}
+
+void FullscreenVideoController::setVolume(float volume)
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::volumeChanged()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::muteChanged()
+{
+    notImplemented();
+}
+
+float FullscreenVideoController::currentTime() const
+{
+    notImplemented();
+    return 0;
+}
+
+void FullscreenVideoController::setCurrentTime(float value)
+{
+    notImplemented();
+}
+
+float FullscreenVideoController::duration() const
+{
+    notImplemented();
+    return 0;
+}
+
+float FullscreenVideoController::percentLoaded() const
+{
+    notImplemented();
+    return 0;
+}
+
+void FullscreenVideoController::beginSeek()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::doSeek()
+{
+    notImplemented();
+}
+
+void FullscreenVideoController::endSeek()
+{
+    notImplemented();
+}
+
+static String timeToString(float time)
+{
+    notImplemented();
+}
+
+bool FullscreenVideoController::updateHudProgressBar()
+{
+    notImplemented();
+    return false;
+}
+
+void FullscreenVideoController::createHud()
+{
+    notImplemented();
+}
+
+#endif
diff --git a/WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.h b/WebKit/efl/WebCoreSupport/FullscreenVideoControllerEfl.h
new file mode 100644 (file)
index 0000000..4bbae25
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ *  Copyright (C) 2010 Igalia S.L
+ *  Copyright (C) 2010 Samsung Electronics
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public License
+ *  along with this library; see the file COPYING.LIB.  If not, write to
+ *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+ */
+
+#ifndef FullscreenVideoControllerEfl_h
+#define FullscreenVideoControllerEfl_h
+
+#if ENABLE(VIDEO)
+
+#include "GStreamerGWorld.h"
+#include "HTMLMediaElement.h"
+#include <wtf/RefPtr.h>
+
+class FullscreenVideoController : public Noncopyable {
+public:
+    FullscreenVideoController();
+    virtual ~FullscreenVideoController();
+
+    void setMediaElement(WebCore::HTMLMediaElement*);
+    WebCore::HTMLMediaElement* mediaElement() const { return m_mediaElement.get(); }
+
+    void enterFullscreen();
+    void exitFullscreen();
+
+    void exitOnUserRequest();
+    void togglePlay();
+    void beginSeek();
+    void doSeek();
+    void endSeek();
+
+    void hideHud();
+    void showHud(bool);
+    bool updateHudProgressBar();
+
+    float volume() const;
+    void setVolume(float);
+    void volumeChanged();
+    void muteChanged();
+
+private:
+    bool canPlay() const;
+    void play();
+    void pause();
+    void playStateChanged();
+
+    bool muted() const;
+
+    float currentTime() const;
+    void setCurrentTime(float);
+
+    float duration() const;
+    float percentLoaded() const;
+
+    void createHud();
+    void updateHudPosition();
+
+    RefPtr<WebCore::HTMLMediaElement> m_mediaElement;
+    RefPtr<WebCore::GStreamerGWorld> m_gstreamerGWorld;
+
+    uint m_hudTimeoutId;
+    uint m_progressBarUpdateId;
+    uint m_progressBarFillUpdateId;
+    uint m_hscaleUpdateId;
+    uint m_volumeUpdateId;
+    bool m_seekLock;
+    PlatformWidget* m_window;
+    PlatformWidget* m_hudWindow;
+    PlatformWidget* m_timeHScale;
+    PlatformWidget* m_timeLabel;
+    PlatformWidget* m_volumeButton;
+};
+
+#endif
+
+#endif // FullscreenVideoControllerEfl_h