Reviewed by Gustavo Noronha Silva.
authorphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Aug 2010 08:04:50 +0000 (08:04 +0000)
committerphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Aug 2010 08:04:50 +0000 (08:04 +0000)
commit18c52b562005972d576002bce690448bc81abf1c
tree93cab17bb6ef9a538ad6a7562038c43c0a237aa9
parente52df3d5957b6fd8cb685672a797755408d87bb6
    Reviewed by Gustavo Noronha Silva.

        [GStreamer] GTK XOverlay support in GStreamerGWorld
        https://bugs.webkit.org/show_bug.cgi?id=39474

        * configure.ac: gst-interfaces link support needed for use of
        GstXOverlay interface.
        * GNUmakefile.am: Added new FullscreenVideoController files in the
        build.

LayoutTests:

        Reviewed by Gustavo Noronha Silva.

        [GStreamer] GTK XOverlay support in GStreamerGWorld
        https://bugs.webkit.org/show_bug.cgi?id=39474

        Rebaselined tests showing the video controls containing the new
        fullscreen button.

        * platform/gtk/media/controls-after-reload-expected.txt:
        * platform/gtk/media/controls-drag-timebar-expected.txt:
        * platform/gtk/media/controls-strict-expected.txt:
        * platform/gtk/media/controls-styling-expected.txt:
        * platform/gtk/media/video-controls-rendering-expected.txt:

WebCore:

        Reviewed by Gustavo Noronha Silva.

        [GStreamer] GTK XOverlay support in GStreamerGWorld
        https://bugs.webkit.org/show_bug.cgi?id=39474

        GStreamerGWorld now catches synchronous messages coming from the
        sinks and creates a GTK window where the video can be overlayed if
        fullscreen display is requested using enterFullscreen.

        * GNUmakefile.am:
        * platform/graphics/gstreamer/GStreamerGWorld.cpp:
        (WebCore::gstGWorldSyncMessageCallback):
        (WebCore::GStreamerGWorld::GStreamerGWorld):
        (WebCore::GStreamerGWorld::~GStreamerGWorld):
        (WebCore::GStreamerGWorld::enterFullscreen):
        (WebCore::GStreamerGWorld::exitFullscreen):
        (WebCore::GStreamerGWorld::setWindowOverlay):
        * platform/graphics/gstreamer/GStreamerGWorld.h:
        (WebCore::GStreamerGWorld::pipeline):
        (WebCore::GStreamerGWorld::platformVideoWindow):
        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
        * platform/graphics/gstreamer/PlatformVideoWindow.h: Added.
        (WebCore::PlatformVideoWindow::createWindow):
        (WebCore::PlatformVideoWindow::window):
        (WebCore::PlatformVideoWindow::videoWindowId):
        * platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp: Added.
        (PlatformVideoWindow::PlatformVideoWindow):

WebKt/gtk:

        Reviewed by Gustavo Noronha Silva.

        [GStreamer] GTK XOverlay support in GStreamerGWorld
        https://bugs.webkit.org/show_bug.cgi?id=39474

        New FullscreenVideoController object, private in the webview. It
        is created when the user presses the fullscreen button of the
        video controls. Video is displayed in fullscreen, controls are
        displayed when the user moves the mouse and when the video is
        paused. There's also basic keyboard shortcuts support: F/f to
        leave fullscreen, space to toggle play/pause and up/down to
        control volume.

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::ChromeClient::supportsFullscreenForNode):
        (WebKit::ChromeClient::enterFullscreenForNode):
        (WebKit::ChromeClient::exitFullscreenForNode):
        * WebCoreSupport/ChromeClientGtk.h:
        * WebCoreSupport/FullscreenVideoController.cpp: Added.
        (hideHudCallback):
        (onFullscreenGtkMotionNotifyEvent):
        (onFullscreenGtkActiveNotification):
        (onFullscreenGtkConfigureEvent):
        (onFullscreenGtkDestroy):
        (togglePlayPauseActivated):
        (exitFullscreenActivated):
        (progressBarUpdateCallback):
        (timeScaleButtonPressed):
        (timeScaleButtonReleased):
        (timeScaleValueChanged):
        (volumeValueChanged):
        (playerVolumeChangedCallback):
        (playerMuteChangedCallback):
        (FullscreenVideoController::FullscreenVideoController):
        (FullscreenVideoController::~FullscreenVideoController):
        (FullscreenVideoController::setMediaElement):
        (FullscreenVideoController::gtkConfigure):
        (FullscreenVideoController::showHud):
        (FullscreenVideoController::hideHud):
        (onFullscreenGtkKeyPressEvent):
        (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/FullscreenVideoController.h: Added.
        (FullscreenVideoController::mediaElement):
        * webkit/webkitprivate.cpp:
        (webkit_web_view_enter_fullscreen):
        (webkit_web_view_exit_fullscreen):
        * webkit/webkitprivate.h:

WebKit/gtk/po:

        Reviewed by Gustavo Noronha Silva.

        [GStreamer] GTK XOverlay support in GStreamerGWorld
        https://bugs.webkit.org/show_bug.cgi?id=39474

        * POTFILES: Added new file that contains strings to extract.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@65658 268f45cc-cd09-0410-ab3c-d52691b4dbfc
28 files changed:
ChangeLog
GNUmakefile.am
LayoutTests/ChangeLog
LayoutTests/platform/gtk/media/controls-after-reload-expected.txt
LayoutTests/platform/gtk/media/controls-drag-timebar-expected.txt
LayoutTests/platform/gtk/media/controls-strict-expected.txt
LayoutTests/platform/gtk/media/controls-styling-expected.txt
LayoutTests/platform/gtk/media/video-controls-rendering-expected.txt
LayoutTests/platform/gtk/media/video-display-toggle-expected.txt
LayoutTests/platform/gtk/media/video-no-audio-expected.txt
LayoutTests/platform/gtk/media/video-zoom-controls-expected.txt
WebCore/ChangeLog
WebCore/GNUmakefile.am
WebCore/platform/graphics/gstreamer/GStreamerGWorld.cpp
WebCore/platform/graphics/gstreamer/GStreamerGWorld.h
WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
WebCore/platform/graphics/gstreamer/PlatformVideoWindow.h [new file with mode: 0644]
WebCore/platform/graphics/gstreamer/PlatformVideoWindowGtk.cpp [new file with mode: 0644]
WebKit/gtk/ChangeLog
WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp [new file with mode: 0644]
WebKit/gtk/WebCoreSupport/FullscreenVideoController.h [new file with mode: 0644]
WebKit/gtk/po/ChangeLog
WebKit/gtk/po/POTFILES
WebKit/gtk/webkit/webkitprivate.cpp
WebKit/gtk/webkit/webkitprivate.h
configure.ac