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