summaryrefslogtreecommitdiff
path: root/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
Diffstat (limited to 'Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp')
-rw-r--r--[-rwxr-xr-x]Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp56
1 files changed, 37 insertions, 19 deletions
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
index c0c285353..e72ee703a 100755..100644
--- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
@@ -64,6 +64,7 @@
#include <QPrinter>
#endif
#include <QProgressBar>
+#include <QRegExp>
#include <QUndoStack>
#include <QUrl>
#include <limits.h>
@@ -109,18 +110,18 @@ void NetworkAccessManager::sslErrorsEncountered(QNetworkReply* reply, const QLis
#if !defined(QT_NO_PRINTER) && HAVE(QTPRINTSUPPORT)
-class NullPrinter : public QPrinter {
+class NullPrinter final : public QPrinter {
public:
class NullPaintEngine : public QPaintEngine {
public:
- virtual bool begin(QPaintDevice*) { return true; }
- virtual bool end() { return true; }
- virtual QPaintEngine::Type type() const { return QPaintEngine::User; }
- virtual void drawPixmap(const QRectF& r, const QPixmap& pm, const QRectF& sr) { }
- virtual void updateState(const QPaintEngineState& state) { }
+ bool begin(QPaintDevice*) final { return true; }
+ bool end() final { return true; }
+ QPaintEngine::Type type() const final { return QPaintEngine::User; }
+ void drawPixmap(const QRectF& r, const QPixmap& pm, const QRectF& sr) final { }
+ void updateState(const QPaintEngineState& state) final { }
};
- virtual QPaintEngine* paintEngine() const { return const_cast<NullPaintEngine*>(&m_engine); }
+ QPaintEngine* paintEngine() const final { return const_cast<NullPaintEngine*>(&m_engine); }
NullPaintEngine m_engine;
};
@@ -155,6 +156,8 @@ WebPage::WebPage(QObject* parent, DumpRenderTree* drt)
connect(this, SIGNAL(featurePermissionRequested(QWebFrame*, QWebPage::Feature)), this, SLOT(requestPermission(QWebFrame*, QWebPage::Feature)));
connect(this, SIGNAL(featurePermissionRequestCanceled(QWebFrame*, QWebPage::Feature)), this, SLOT(cancelPermission(QWebFrame*, QWebPage::Feature)));
+
+ connect(this, &QWebPage::fullScreenRequested, this, &WebPage::requestFullScreen);
}
WebPage::~WebPage()
@@ -191,6 +194,7 @@ void WebPage::resetSettings()
settings()->resetAttribute(QWebSettings::CSSRegionsEnabled);
settings()->resetAttribute(QWebSettings::CSSGridLayoutEnabled);
settings()->resetAttribute(QWebSettings::AcceleratedCompositingEnabled);
+ settings()->resetAttribute(QWebSettings::FullScreenSupportEnabled);
m_drt->testRunner()->setCaretBrowsingEnabled(false);
m_drt->testRunner()->setAuthorAndUserStylesEnabled(true);
@@ -202,8 +206,6 @@ void WebPage::resetSettings()
QWebSettings::setMaximumPagesInCache(0); // reset to default
settings()->setUserStyleSheetUrl(QUrl()); // reset to default
- DumpRenderTreeSupportQt::setSeamlessIFramesEnabled(true);
-
DumpRenderTreeSupportQt::resetInternalsObject(mainFrame()->handle());
m_pendingGeolocationRequests.clear();
@@ -275,6 +277,12 @@ void WebPage::permissionSet(QWebPage::Feature feature)
}
}
+void WebPage::requestFullScreen(QWebFullScreenRequest request)
+{
+ request.accept();
+}
+
+// FIXME (119591): Make this match other platforms better.
static QString urlSuitableForTestResult(const QString& url)
{
if (url.isEmpty() || !url.startsWith(QLatin1String("file://")))
@@ -292,7 +300,7 @@ void WebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, c
if (!message.isEmpty()) {
newMessage = message;
- size_t fileProtocol = newMessage.indexOf(QLatin1String("file://"));
+ int fileProtocol = newMessage.indexOf(QLatin1String("file://"));
if (fileProtocol != -1) {
newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.mid(fileProtocol));
}
@@ -567,8 +575,8 @@ void DumpRenderTree::resetToConsistentStateBeforeTesting(const QUrl& url)
m_page->setNetworkAccessManager(m_networkAccessManager);
}
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
+ WorkQueue::singleton().clear();
+ WorkQueue::singleton().setFrozen(false);
DumpRenderTreeSupportQt::resetOriginAccessWhiteLists();
@@ -772,8 +780,7 @@ void DumpRenderTree::initJSObjects()
" }\n"
"for (var prop in this.jscBasedTestRunner) {\n"
" var pd = Object.getOwnPropertyDescriptor(this.qtBasedTestRunner, prop);\n"
- " if (pd !== undefined) continue;\n"
- " pd = Object.getOwnPropertyDescriptor(this.jscBasedTestRunner, prop);\n"
+ " if (pd !== undefined && (pd.writable === false || pd.configurable === false)) continue;\n"
" this.qtBasedTestRunner[prop] = bind(this.jscBasedTestRunner[prop], this.jscBasedTestRunner);\n"
"}\n"
"}).apply(this)\n"));
@@ -869,19 +876,25 @@ static QString dumpHistoryItem(const QWebHistoryItem& item, int indent, bool cur
for (int i = start; i < indent; i++)
result.append(' ');
- QString url = item.url().toString();
- if (url.contains("file://")) {
+ QUrl url = item.url();
+ QString urlString;
+ if (url.scheme() == "data")
+ urlString = url.toString(QUrl::DecodeReserved);
+ else
+ urlString = url.toString();
+
+ if (urlString.contains("file://")) {
static QString layoutTestsString("/LayoutTests/");
static QString fileTestString("(file test):");
- QString res = url.mid(url.indexOf(layoutTestsString) + layoutTestsString.length());
+ QString res = urlString.mid(urlString.indexOf(layoutTestsString) + layoutTestsString.length());
if (res.isEmpty())
return result;
result.append(fileTestString);
result.append(res);
} else {
- result.append(url);
+ result.append(urlString);
}
QString target = DumpRenderTreeSupportQt::historyItemTarget(item);
@@ -1001,18 +1014,22 @@ void DumpRenderTree::dump()
fputs("#EOF\n", stderr);
if (m_dumpPixelsForCurrentTest && m_jscController->generatePixelResults()) {
+ // Should use the same render hints as default QWebView/QGraphicsWebView
+ QPainter::RenderHints renderHints(QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
+
QImage image;
if (!m_jscController->isPrinting()) {
image = QImage(m_page->viewportSize(), QImage::Format_ARGB32);
image.fill(Qt::white);
QPainter painter(&image);
+ painter.setRenderHints(renderHints);
mainFrame->render(&painter);
painter.end();
} else
image = DumpRenderTreeSupportQt::paintPagesWithBoundaries(mainFrame->handle());
if (DumpRenderTreeSupportQt::trackRepaintRects(mainFrameAdapter())) {
- QVector<QRect> repaintRects;
+ QVector<QRectF> repaintRects;
DumpRenderTreeSupportQt::getTrackedRepaintRects(mainFrameAdapter(), repaintRects);
QImage mask(image.size(), image.format());
mask.fill(QColor(0, 0, 0, 0.66 * 255));
@@ -1023,6 +1040,7 @@ void DumpRenderTree::dump()
maskPainter.fillRect(repaintRects[i], Qt::transparent);
QPainter painter(&image);
+ painter.setRenderHints(renderHints);
painter.drawImage(image.rect(), mask);
DumpRenderTreeSupportQt::setTrackRepaintRects(mainFrameAdapter(), false);