Do a forced repaint before generating pixel results https://bugs.webkit.org/show_bug.cgi?id=98654

Reviewed by Jocelyn Turcotte.

Source/WebKit2:

Added API to convert a QImage to a WKImage so we can
pass it to cross-platform code.

* Shared/API/c/qt/WKImageQt.cpp:
(WKImageCreateFromQImage):
* Shared/API/c/qt/WKImageQt.h:

Tools:

Do a forced repaint before grabbing the pixel snapshot. This extra
synchronisation is necessary with the CoordinatedGraphics rendering
backend because it has a fully asynchronous nature. This patch make
us using the window snapshot for pixel results which is necessary to
capture animations and other dynamic content. The actual grabbing of
the window has not been implemented in this patch. It will come in
a follow-up.

* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
(WTR::TestInvocation::dump): Store results in member variables.
Don't close output channels yet.
(WTR::TestInvocation::dumpResults): Added. This is where we dump
the results if no error happened.
(WTR):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
* WebKitTestRunner/TestInvocation.h:
(TestInvocation):
* WebKitTestRunner/qt/PlatformWebViewQt.cpp:
(WTR::PlatformWebView::windowSnapshotImage):
* WebKitTestRunner/qt/TestInvocationQt.cpp:
(WTR::TestInvocation::forceRepaintDoneCallback):
(WTR):
(WTR::TestInvocation::dumpPixelsAndCompareWithExpected):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@131725 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Implement pixel snapshot generation in WTR https://bugs.webkit.org/show_bug.cgi?id=95992

Reviewed by Jocelyn Turcotte.

Switch the Qt implementation of the PlatformWebView to use
QQuickWindow::grabWindow to generate the pixel results. This way
we will go through the scenegraph and test the actual rendering backend.
We use QQuickWindowPrivate::setRenderWithoutShowing to avoid the need of
showing the window.

* WebKitTestRunner/Target.pri: Had to added a bunch
of modules to be able to use QQuickWindowPrivate.
* WebKitTestRunner/qt/PlatformWebViewQt.cpp:
(WTR::WrapperWindow::handleStatusChanged):
(WTR::PlatformWebView::windowSnapshotImage):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@131726 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Qt] OpenGL rendering is not possible on bots using Xvfb
https://bugs.webkit.org/show_bug.cgi?id=99463

Reviewed by Jocelyn Turcotte.

Added a workaround to be able to disallow UI side OpenGL rendering
if the environment is not suitable because it can be extremely slow
with a software backend.

* Scripts/webkitpy/layout_tests/port/qt.py:
(QtPort.setup_environ_for_server): Let the environment variable
QT_WEBKIT_DISABLE_UIPROCESS_DUMPPIXELS reach the driver. This variable
should be defined on bots that don't have a suitable OpenGL environment.
* WebKitTestRunner/PlatformWebView.h:
(PlatformWebView):
* WebKitTestRunner/qt/PlatformWebViewQt.cpp:
(WTR::WrapperWindow::handleStatusChanged): Don't try to create an OpenGL
surface and set the setRenderWithoutShowing flag on the window if the
variable is set.
(WTR::PlatformWebView::windowSnapshotImage):
(WTR::PlatformWebView::windowShapshotEnabled):
(WTR):
* WebKitTestRunner/qt/TestInvocationQt.cpp:
(WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Use the old method
of evaluating pixel results if the snapshot is not supported, that is to check
the image we got from the web process. This is necessary for the bots to be able
to run ref tests.

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