Diff
Modified: trunk/LayoutTests/ChangeLog (106249 => 106250)
--- trunk/LayoutTests/ChangeLog 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/LayoutTests/ChangeLog 2012-01-30 17:27:33 UTC (rev 106250)
@@ -1,3 +1,12 @@
+2012-01-26 Jocelyn Turcotte <[email protected]>
+
+ [Qt] WKTR: Use a software rendering pipiline when running tests.
+ https://bugs.webkit.org/show_bug.cgi?id=76708
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * platform/qt-wk2/Skipped:
+
2012-01-30 Csaba Osztrogonác <[email protected]>
[Qt][WK2] http/tests/history/replacestate-post-to-get-2.html fails with timeout
Modified: trunk/LayoutTests/platform/qt-wk2/Skipped (106249 => 106250)
--- trunk/LayoutTests/platform/qt-wk2/Skipped 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/LayoutTests/platform/qt-wk2/Skipped 2012-01-30 17:27:33 UTC (rev 106250)
@@ -439,58 +439,6 @@
tables/mozilla_expected_failures/marvin/backgr_layers-show.html
tables/mozilla_expected_failures/marvin/backgr_position-table-column.html
-# [Qt][WK2] REGRESSION(r105517): It made 49 tests timeout
-# https://bugs.webkit.org/show_bug.cgi?id=76708
-animations/3d/change-transform-in-end-event.html
-animations/3d/replace-filling-transform.html
-animations/3d/state-at-end-event-transform.html
-animations/3d/transform-perspective.html
-animations/additive-transform-animations.html
-animations/animation-direction-normal.html
-animations/animation-end-event-destroy-renderer.html
-animations/animation-hit-test-transform.html
-animations/animation-iteration-event-destroy-renderer.html
-animations/animation-matrix-negative-scale-unmatrix.html
-animations/animation-start-event-destroy-renderer.html
-animations/big-rotation.html
-animations/combo-transform-rotate+scale.html
-animations/combo-transform-translate+scale.html
-animations/dynamic-stylesheet-loading.html
-animations/fill-mode-transform.html
-animations/keyframe-timing-functions-transform.html
-animations/matrix-anim.html
-animations/missing-from-to-transforms.html
-animations/missing-keyframe-properties-repeating.html
-animations/missing-keyframe-properties-timing-function.html
-animations/missing-keyframe-properties.html
-animations/missing-values-first-keyframe.html
-animations/missing-values-last-keyframe.html
-animations/negative-delay.html
-animations/opacity-transform-animation.html
-animations/pause-crash.html
-animations/play-state-paused.html
-animations/play-state-suspend.html
-animations/simultaneous-start-transform.html
-animations/stop-animation-on-suspend.html
-animations/suspend-resume-animation.html
-animations/suspend-transform-animation.html
-animations/transition-and-animation-1.html
-animations/transition-and-animation-2.html
-fast/css/getComputedStyle/getComputedStyle-with-pseudo-element.html
-tables/mozilla/marvin/backgr_simple-table-cell.html
-transitions/3d/interrupted-transition.html
-transitions/cancel-transition.html
-transitions/extra-transition.html
-transitions/interrupt-transform-transition.html
-transitions/interrupted-accelerated-transition.html
-transitions/move-after-transition.html
-transitions/start-transform-transition.html
-transitions/transition-end-event-destroy-iframe.html
-transitions/transition-end-event-destroy-renderer.html
-transitions/transition-end-event-multiple-04.html
-transitions/transition-end-event-rendering.html
-transitions/transition-end-event-transform.html
-
# [Qt][WK2] http/tests/navigation/anchor-frames-gbk.html fails
# https://bugs.webkit.org/show_bug.cgi?id=76896
http/tests/navigation/anchor-frames-gbk.html
Modified: trunk/Source/WebCore/ChangeLog (106249 => 106250)
--- trunk/Source/WebCore/ChangeLog 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebCore/ChangeLog 2012-01-30 17:27:33 UTC (rev 106250)
@@ -1,3 +1,15 @@
+2012-01-26 Jocelyn Turcotte <[email protected]>
+
+ [Qt] WKTR: Use a software rendering pipiline when running tests.
+ https://bugs.webkit.org/show_bug.cgi?id=76708
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * platform/graphics/qt/TextureMapperQt.cpp: Allow setting the context to null.
+ (WebCore::TextureMapperQt::setGraphicsContext):
+ * platform/graphics/qt/TextureMapperQt.h:
+ (WebCore::TextureMapperQt::initialize):
+
2012-01-27 Enrica Casucci <[email protected]>
Remove all references to NSPasteboard objects from the Pasteboard
Modified: trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.cpp (106249 => 106250)
--- trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -141,7 +141,7 @@
void TextureMapperQt::setGraphicsContext(GraphicsContext* context)
{
m_context = context;
- m_painter = context->platformContext();
+ m_painter = context ? context->platformContext() : 0;
initialize(m_painter);
}
Modified: trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.h (106249 => 106250)
--- trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebCore/platform/graphics/qt/TextureMapperQt.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -70,7 +70,8 @@
static void initialize(QPainter* painter)
{
- painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
+ if (painter)
+ painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, false);
}
static PassOwnPtr<TextureMapper> create() { return adoptPtr(new TextureMapperQt); }
Modified: trunk/Source/WebKit2/ChangeLog (106249 => 106250)
--- trunk/Source/WebKit2/ChangeLog 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/ChangeLog 2012-01-30 17:27:33 UTC (rev 106250)
@@ -1,3 +1,32 @@
+2012-01-26 No'am Rosenthal <[email protected]> and Jocelyn Turcotte <[email protected]>
+
+ [Qt] WKTR: Use a software rendering pipiline when running tests.
+ https://bugs.webkit.org/show_bug.cgi?id=76708
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Animation layout tests require the graphics layers tree to be updated
+ to pass. WebkitTestRunner doesn't show its wrapping QQuickView, which
+ prevents the rendering pipeline to run and then in turn blocks the web
+ process from processing further graphics layer updates.
+
+ This allows the tests to use a TextureMapperQt to empty the LayerTreeHost's
+ message queue and render the layers in software on an offscreen buffer.
+
+ * UIProcess/API/qt/qquickwebpage.cpp:
+ (QQuickWebPagePrivate::paint):
+ * UIProcess/API/qt/qquickwebview.cpp:
+ (QQuickWebViewPrivate::QQuickWebViewPrivate):
+ (QQuickWebViewPrivate::setNeedsDisplay):
+ (QQuickWebViewExperimental::setRenderToOffscreenBuffer):
+ (QQuickWebViewExperimental::renderToOffscreenBuffer):
+ * UIProcess/API/qt/qquickwebview_p.h:
+ * UIProcess/API/qt/qquickwebview_p_p.h:
+ (QQuickWebViewPrivate::setRenderToOffscreenBuffer):
+ (QQuickWebViewPrivate::renderToOffscreenBuffer):
+ * UIProcess/qt/LayerTreeHostProxyQt.cpp:
+ (WebKit::LayerTreeHostProxy::paintToGraphicsContext):
+
2012-01-30 Andras Becsi <[email protected]>
[Qt][WK2] Render layers do not get flushed when the scroll animation finishes
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -100,6 +100,12 @@
drawingArea->setSize(WebCore::IntSize(size), WebCore::IntSize());
}
+void QQuickWebPagePrivate::paint(QPainter* painter)
+{
+ if (webPageProxy->drawingArea())
+ webPageProxy->drawingArea()->paintLayerTree(painter);
+}
+
void QQuickWebPagePrivate::paintToCurrentGLContext()
{
if (!q->isVisible())
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -43,6 +43,7 @@
void updateSize();
void paintToCurrentGLContext();
+ void paint(QPainter*);
void resetPaintNode();
QScopedPointer<QtWebPageEventHandler> eventHandler;
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -67,6 +67,7 @@
, isTransitioningToNewPage(false)
, pageIsSuspended(false)
, m_navigatorQtObjectEnabled(false)
+ , m_renderToOffscreenBuffer(false)
{
viewport->setFlags(QQuickItem::ItemClipsChildrenToShape);
QObject::connect(viewport, SIGNAL(visibleChanged()), viewport, SLOT(_q_onVisibleChanged()));
@@ -154,6 +155,20 @@
updateTouchViewportSize();
}
+void QQuickWebViewPrivate::setNeedsDisplay()
+{
+ Q_Q(QQuickWebView);
+ if (renderToOffscreenBuffer()) {
+ // TODO: we can maintain a real image here and use it for pixel tests. Right now this is used only for running the rendering code-path while running tests.
+ QImage dummyImage(1, 1, QImage::Format_ARGB32);
+ QPainter painter(&dummyImage);
+ q->page()->d->paint(&painter);
+ return;
+ }
+
+ q->page()->update();
+}
+
void QQuickWebViewPrivate::loadDidCommit()
{
// Due to entering provisional load before committing, we
@@ -667,6 +682,18 @@
d->setUseTraditionalDesktopBehaviour(enable);
}
+void QQuickWebViewExperimental::setRenderToOffscreenBuffer(bool enable)
+{
+ Q_D(QQuickWebView);
+ d->setRenderToOffscreenBuffer(enable);
+}
+
+bool QQuickWebViewExperimental::renderToOffscreenBuffer() const
+{
+ Q_D(const QQuickWebView);
+ return d->renderToOffscreenBuffer();
+}
+
void QQuickWebViewExperimental::postMessage(const QString& message)
{
Q_D(QQuickWebView);
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -237,11 +237,12 @@
void setCertificateVerificationDialog(QDeclarativeComponent*);
QDeclarativeComponent* itemSelector() const;
void setItemSelector(QDeclarativeComponent*);
-
+ bool useTraditionalDesktopBehaviour() const;
+ void setUseTraditionalDesktopBehaviour(bool enable);
+
QWebViewportInfo* viewportInfo();
QWebPreferences* preferences() const;
- bool useTraditionalDesktopBehaviour() const;
QWebNavigationHistory* navigationHistory() const;
QQuickWebPage* page();
@@ -253,8 +254,11 @@
void invokeApplicationSchemeHandler(WTF::PassRefPtr<WebKit::QtRefCountedNetworkRequestData>);
void sendApplicationSchemeReply(QQuickNetworkReply*);
+ // C++ only
+ bool renderToOffscreenBuffer() const;
+ void setRenderToOffscreenBuffer(bool enable);
+
public Q_SLOTS:
- void setUseTraditionalDesktopBehaviour(bool enable);
void goBackTo(int index);
void goForwardTo(int index);
void postMessage(const QString&);
Modified: trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -77,6 +77,8 @@
void didChangeViewportProperties(const WebCore::ViewportArguments& args);
void didChangeBackForwardList();
+ void setNeedsDisplay();
+
void updateDesktopViewportSize();
void updateTouchViewportSize();
QtViewportInteractionEngine::Constraints computeViewportConstraints();
@@ -101,10 +103,12 @@
bool handleCertificateVerificationRequest(const QString& hostname);
void setUseTraditionalDesktopBehaviour(bool enable);
+ void setRenderToOffscreenBuffer(bool enable) { m_renderToOffscreenBuffer = enable; }
void setViewInAttachedProperties(QObject*);
void setIcon(const QUrl&);
bool navigatorQtObjectEnabled() const;
+ bool renderToOffscreenBuffer() const { return m_renderToOffscreenBuffer; }
void setNavigatorQtObjectEnabled(bool);
// PageClient.
@@ -166,6 +170,7 @@
bool isTransitioningToNewPage;
bool pageIsSuspended;
bool m_navigatorQtObjectEnabled;
+ bool m_renderToOffscreenBuffer;
QUrl m_iconURL;
};
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxy.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -27,6 +27,7 @@
#ifndef DrawingAreaProxy_h
#define DrawingAreaProxy_h
+#include "BackingStore.h"
#include "DrawingAreaInfo.h"
#include <WebCore/IntRect.h>
#include <WebCore/IntSize.h>
@@ -88,6 +89,7 @@
virtual WebCore::IntRect contentsRect() const;
virtual bool isBackingStoreReady() const { return true; }
virtual void paintToCurrentGLContext(const WebCore::TransformationMatrix&, float opacity) { }
+ virtual void paintLayerTree(BackingStore::PlatformGraphicsContext) { }
LayerTreeHostProxy* layerTreeHostProxy() const { return m_layerTreeHostProxy.get(); }
#if USE(TILED_BACKING_STORE)
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -360,6 +360,12 @@
m_layerTreeHostProxy->setVisibleContentRectTrajectoryVector(trajectoryVector);
}
+void DrawingAreaProxyImpl::paintLayerTree(BackingStore::PlatformGraphicsContext context)
+{
+ if (m_layerTreeHostProxy)
+ m_layerTreeHostProxy->paintToGraphicsContext(context);
+}
+
void DrawingAreaProxyImpl::paintToCurrentGLContext(const TransformationMatrix& matrix, float opacity)
{
if (m_layerTreeHostProxy)
Modified: trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -81,6 +81,7 @@
virtual void setVisibleContentsRectAndScale(const WebCore::IntRect& visibleContentsRect, float scale);
virtual void setVisibleContentRectTrajectoryVector(const WebCore::FloatPoint&);
virtual void paintToCurrentGLContext(const WebCore::TransformationMatrix&, float opacity);
+ virtual void paintLayerTree(BackingStore::PlatformGraphicsContext);
void didReceiveLayerTreeHostProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
#endif
#else
Modified: trunk/Source/WebKit2/UIProcess/LayerTreeHostProxy.h (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/LayerTreeHostProxy.h 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/LayerTreeHostProxy.h 2012-01-30 17:27:33 UTC (rev 106250)
@@ -53,6 +53,7 @@
void setRootCompositingLayer(WebLayerID);
void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
void paintToCurrentGLContext(const WebCore::TransformationMatrix&, float);
+ void paintToGraphicsContext(BackingStore::PlatformGraphicsContext);
void purgeGLResources();
void setVisibleContentsRectAndScale(const WebCore::IntRect&, float);
void setVisibleContentRectTrajectoryVector(const WebCore::FloatPoint&);
Modified: trunk/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -27,6 +27,7 @@
#include "MessageID.h"
#include "ShareableBitmap.h"
#include "TextureMapperGL.h"
+#include "TextureMapperQt.h"
#include "UpdateInfo.h"
#include "WebCoreArgumentCoders.h"
#include "WebLayerTreeInfo.h"
@@ -171,6 +172,7 @@
{
if (!m_textureMapper)
m_textureMapper = TextureMapperGL::create();
+ ASSERT(dynamic_cast<TextureMapperGL*>(m_textureMapper.get()));
syncRemoteContent();
GraphicsLayer* currentRootLayer = rootLayer();
@@ -204,6 +206,28 @@
}
}
+void LayerTreeHostProxy::paintToGraphicsContext(QPainter* painter)
+{
+ if (!m_textureMapper)
+ m_textureMapper = TextureMapperQt::create();
+ ASSERT(dynamic_cast<TextureMapperQt*>(m_textureMapper.get()));
+
+ syncRemoteContent();
+ TextureMapperNode* node = toTextureMapperNode(rootLayer());
+
+ if (!node)
+ return;
+
+ GraphicsContext graphicsContext(painter);
+ m_textureMapper->setGraphicsContext(&graphicsContext);
+ m_textureMapper->beginPainting();
+ m_textureMapper->bindSurface(0);
+ node->paint();
+ m_textureMapper->endPainting();
+ m_textureMapper->setGraphicsContext(0);
+}
+
+
void LayerTreeHostProxy::didFireViewportUpdateTimer(Timer<LayerTreeHostProxy>*)
{
updateViewport();
Modified: trunk/Source/WebKit2/UIProcess/qt/QtPageClient.cpp (106249 => 106250)
--- trunk/Source/WebKit2/UIProcess/qt/QtPageClient.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Source/WebKit2/UIProcess/qt/QtPageClient.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -62,7 +62,7 @@
void QtPageClient::setViewNeedsDisplay(const WebCore::IntRect& rect)
{
- m_webView->page()->update();
+ QQuickWebViewPrivate::get(m_webView)->setNeedsDisplay();
}
void QtPageClient::pageDidRequestScroll(const IntPoint& pos)
Modified: trunk/Tools/ChangeLog (106249 => 106250)
--- trunk/Tools/ChangeLog 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Tools/ChangeLog 2012-01-30 17:27:33 UTC (rev 106250)
@@ -1,3 +1,14 @@
+2012-01-26 No'am Rosenthal <[email protected]> and Jocelyn Turcotte <[email protected]>
+
+ [Qt] WKTR: Use a software rendering pipiline when running tests.
+ https://bugs.webkit.org/show_bug.cgi?id=76708
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
+ (WTR::WrapperWindow::WrapperWindow):
+ (WTR::PlatformWebView::PlatformWebView): Use software rendering of layers since the wrapping QQuickView isn't shown.
+
2012-01-30 Tor Arne Vestbø <[email protected]>
[Qt] Store build config immediately instead of waiting for a successfull build
Modified: trunk/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp (106249 => 106250)
--- trunk/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp 2012-01-30 17:19:26 UTC (rev 106249)
+++ trunk/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp 2012-01-30 17:27:33 UTC (rev 106250)
@@ -45,7 +45,6 @@
: QQuickView(QUrl("data:text/plain,import QtQuick 2.0\nItem { objectName: 'root' }"))
, m_view(view)
{
- QQuickWebViewExperimental(view).setUseTraditionalDesktopBehaviour(true);
connect(this, SIGNAL(statusChanged(QQuickView::Status)), SLOT(handleStatusChanged(QQuickView::Status)));
}
@@ -75,6 +74,9 @@
, m_windowIsKey(true)
, m_modalEventLoop(0)
{
+ QQuickWebViewExperimental experimental(m_view);
+ experimental.setUseTraditionalDesktopBehaviour(true);
+ experimental.setRenderToOffscreenBuffer(true);
}
PlatformWebView::~PlatformWebView()