summaryrefslogtreecommitdiff
path: root/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/WebKitTestRunner/qt/TestInvocationQt.cpp')
-rw-r--r--Tools/WebKitTestRunner/qt/TestInvocationQt.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp b/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
index 01630d98a..981c2032a 100644
--- a/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
+++ b/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
@@ -29,6 +29,7 @@
#include <QBuffer>
#include <QCryptographicHash>
+#include <QtGui/QPainter>
#include <WebKit2/WKImageQt.h>
#include <stdio.h>
#include <wtf/Assertions.h>
@@ -64,10 +65,25 @@ static void dumpImage(const QImage& image)
void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef imageRef, WKArrayRef repaintRects)
{
- //FIXME: https://bugs.webkit.org/show_bug.cgi?id=68870
- UNUSED_PARAM(repaintRects);
-
QImage image = WKImageCreateQImage(imageRef);
+
+ if (repaintRects) {
+ QImage mask(image.size(), image.format());
+ mask.fill(QColor(0, 0, 0, 0.66 * 255));
+
+ QPainter maskPainter(&mask);
+ maskPainter.setCompositionMode(QPainter::CompositionMode_Source);
+ size_t count = WKArrayGetSize(repaintRects);
+ for (size_t i = 0; i < count; ++i) {
+ WKRect wkRect = WKRectGetValue(static_cast<WKRectRef>(WKArrayGetItemAtIndex(repaintRects, i)));
+ QRectF rect(wkRect.origin.x, wkRect.origin.y, wkRect.size.width, wkRect.size.height);
+ maskPainter.fillRect(rect, Qt::transparent);
+ }
+
+ QPainter painter(&image);
+ painter.drawImage(image.rect(), mask);
+ }
+
QCryptographicHash hash(QCryptographicHash::Md5);
for (unsigned row = 0; row < image.height(); ++row)
hash.addData(reinterpret_cast<const char*>(image.constScanLine(row)), image.bytesPerLine());