summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/tests
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-15 16:08:57 +0200
commit5466563f4b5b6b86523e3f89bb7f77e5b5270c78 (patch)
tree8caccf7cd03a15207cde3ba282c88bf132482a91 /Source/WebKit2/UIProcess/API/qt/tests
parent33b26980cb24288b5a9f2590ccf32a949281bb79 (diff)
downloadqtwebkit-5466563f4b5b6b86523e3f89bb7f77e5b5270c78.tar.gz
Imported WebKit commit 0dc6cd75e1d4836eaffbb520be96fac4847cc9d2 (http://svn.webkit.org/repository/webkit/trunk@131300)
WebKit update which introduces the QtWebKitWidgets module that contains the WK1 widgets based API. (In fact it renames QtWebKit to QtWebKitWidgets while we're working on completing the entire split as part of https://bugs.webkit.org/show_bug.cgi?id=99314
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/tests')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml3
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml3
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml7
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml42
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp5
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp18
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/tests.pri2
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/util.cpp13
-rw-r--r--Source/WebKit2/UIProcess/API/qt/tests/util.h1
15 files changed, 64 insertions, 42 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro b/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro
index 4a8d86f80..bc5307f2d 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/inspectorserver/inspectorserver.pro
@@ -1,4 +1,4 @@
include(../tests.pri)
SOURCES += $${TARGET}.cpp
-QT += webkit-private
+QT += webkitwidgets-private
DEFINES += IMPORT_DIR=\"\\\"$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP}imports\\\"\"
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro b/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro
index 02dc197c7..ba8f4cea3 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/publicapi/publicapi.pro
@@ -1,3 +1,3 @@
include(../tests.pri)
SOURCES += $${TARGET}.cpp
-QT += webkit-private
+QT += webkitwidgets-private
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro
index 3fd3d4583..7c72fd2f1 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qmltests.cpp
TARGET = tst_qmltests_DesktopBehavior
OBJECTS_DIR = obj_DesktopBehavior/$$activeBuildConfig()
-QT += webkit-private
+QT += webkitwidgets-private
CONFIG += warn_on testcase
QT += qmltest
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro
index b340235e4..3e217b369 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView.pro
@@ -3,7 +3,7 @@ SOURCES += tst_qmltests.cpp
TARGET = tst_qmltests_WebView
OBJECTS_DIR = obj_WebView/$$activeBuildConfig()
-QT += webkit-private
+QT += webkitwidgets-private
CONFIG += warn_on testcase
QT += qmltest
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml
index 691455708..d21ef211a 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml
@@ -40,6 +40,7 @@ Item {
TestCase {
name: "DoubleTapToZoom"
+ when: windowShown
property variant test: webView.experimental.test
@@ -78,7 +79,7 @@ Item {
function test_basic() {
webView.url = webView.content
- verify(webView.waitForLoadSucceeded())
+ verify(webView.waitForViewportReady())
compare(documentSize(), "480x720")
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
index f12da5de8..fcd3d9301 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_fitToView.qml
@@ -38,6 +38,7 @@ Item {
TestCase {
name: "FitToView"
+ when: windowShown
property variant test: webView.experimental.test
@@ -69,7 +70,7 @@ Item {
function test_basic() {
webView.url = webView.content
- verify(webView.waitForLoadSucceeded())
+ verify(webView.waitForViewportReady())
compare(documentSize(), "480x720")
compare(test.contentsScale, 1.0)
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml
index 1fc1559ab..aa6d711a1 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_wheelEventHandling.qml
@@ -21,12 +21,13 @@ Item {
TestCase {
name: "WheelEventHandling"
+ when: windowShown
property variant test: webView.experimental.test
function init() {
webView.url = Qt.resolvedUrl("../common/test4.html")
- verify(webView.waitForLoadSucceeded())
+ verify(webView.waitForViewportReady())
webView.contentY = 0
}
@@ -38,7 +39,7 @@ Item {
scrollSpy.wait()
var position = webView.contentY
webView.reload()
- verify(webView.waitForLoadSucceeded())
+ verify(webView.waitForViewportReady())
// The check below will fail if the previous position was not restored after reload.
verify(position == webView.contentY)
}
@@ -46,7 +47,7 @@ Item {
function test_wheelScrollEventAfterReload() {
scrollSpy.clear()
webView.reload()
- verify(webView.waitForLoadSucceeded())
+ verify(webView.waitForViewportReady())
var centerPoint = Qt.point(webView.width / 2, webView.height / 2)
test.wheelEvent(webView, centerPoint.x, centerPoint.y, -500);
// The signal spy below will time out if the wheel event did not scroll the content.
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml
index 0dd7bccee..5a05f9b3e 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/TestWebView.qml
@@ -5,43 +5,47 @@ import QtWebKit.experimental 1.0
WebView {
property var loadStatus: null
+ property var viewportReady: false
function waitForLoadSucceeded() {
- var timeout = 5000
- var i = 0
- while (i < timeout && loadStatus != WebView.LoadSucceededStatus) {
- testResult.wait(50)
- i += 50
- }
- var success = loadStatus == WebView.LoadSucceededStatus
+ var success = _waitFor(function() { return loadStatus == WebView.LoadSucceededStatus })
loadStatus = null
return success
}
+ function waitForViewportReady() {
+ // Note: You need to have "when: windowShown" in your TestCase for this to work.
+ // The viewport is locked until the first frame is rendered, and the rendering isn't
+ // activated until the WebView is visible in a mapped QQuickView.
+ return _waitFor(function() { return viewportReady })
+ }
function waitForLoadFailed() {
- var timeout = 5000
- var i = 0
- while (i < timeout && loadStatus != WebView.LoadFailedStatus) {
- testResult.wait(50)
- i += 50
- }
- var failure = loadStatus == WebView.LoadFailedStatus
+ var failure = _waitFor(function() { return loadStatus == WebView.LoadFailedStatus })
loadStatus = null
return failure
}
function waitForLoadStopped() {
+ var stop = _waitFor(function() { return loadStatus == WebView.LoadStoppedStatus })
+ loadStatus = null
+ return stop
+ }
+ function _waitFor(predicate) {
var timeout = 5000
var i = 0
- while (i < timeout && loadStatus != WebView.LoadStoppedStatus) {
+ while (i < timeout && !predicate()) {
testResult.wait(50)
i += 50
}
- var stop = loadStatus == WebView.LoadStoppedStatus
- loadStatus = null
- return stop
+ return predicate()
}
TestResult { id: testResult }
- onLoadingChanged: loadStatus = loadRequest.status
+ experimental.onLoadVisuallyCommitted: viewportReady = true
+ onLoadingChanged: {
+ loadStatus = loadRequest.status
+ if (loadRequest.status == WebView.LoadStartedStatus)
+ viewportReady = false
+ }
+
}
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro
index 4a8d86f80..bc5307f2d 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/qquickwebview.pro
@@ -1,4 +1,4 @@
include(../tests.pri)
SOURCES += $${TARGET}.cpp
-QT += webkit-private
+QT += webkitwidgets-private
DEFINES += IMPORT_DIR=\"\\\"$${ROOT_BUILD_DIR}$${QMAKE_DIR_SEP}imports\\\"\"
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
index 5b98ae7b7..558053729 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp
@@ -440,10 +440,11 @@ void tst_QQuickWebView::inputMethodHints()
void tst_QQuickWebView::scrollRequest()
{
- webView()->setSize(QSizeF(300, 400));
+ m_window->setGeometry(0, 0, 300, 400);
+ m_window->show();
webView()->setUrl(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/scroll.html")));
- QVERIFY(waitForLoadSucceeded(webView()));
+ QVERIFY(waitForViewportReady(webView()));
// COMPARE with the position requested in the html
// Use qRound as that is also used when calculating the position
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro
index 02dc197c7..ba8f4cea3 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/qrawwebview.pro
@@ -1,3 +1,3 @@
include(../tests.pri)
SOURCES += $${TARGET}.cpp
-QT += webkit-private
+QT += webkitwidgets-private
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp
index 31102b876..208288d1e 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/tests/qrawwebview/tst_qrawwebview.cpp
@@ -27,6 +27,7 @@
#include <WebKit2/WKContext.h>
#include <WebKit2/WKPageGroup.h>
+#include <WebKit2/WKPageLoadTypes.h>
#include <WebKit2/WKPreferences.h>
#include <WebKit2/WKPreferencesPrivate.h>
#include <WebKit2/WKStringQt.h>
@@ -60,15 +61,18 @@ class WebView : public QObject, public QRawWebViewClient {
public:
WebView(const QSize& size, bool transparent = false)
{
+ m_webView = new QRawWebView(webContext(), webPageGroup(QString()), this);
+ m_webView->setTransparentBackground(transparent);
+ m_webView->create();
+
WKPageLoaderClient loaderClient;
memset(&loaderClient, 0, sizeof(WKPageLoaderClient));
+ loaderClient.version = kWKPageLoaderClientCurrentVersion;
loaderClient.clientInfo = this;
- loaderClient.didFirstVisuallyNonEmptyLayoutForFrame = WebView::finishFirstLayoutForFrame;
+ loaderClient.didLayout = WebView::didLayout;
- m_webView = new QRawWebView(webContext(), webPageGroup(QString()), this);
WKPageSetPageLoaderClient(m_webView->pageRef(), &loaderClient);
- m_webView->setTransparentBackground(transparent);
- m_webView->create();
+ WKPageListenForLayoutMilestones(m_webView->pageRef(), kWKDidFirstVisuallyNonEmptyLayout);
WKPageSetUseFixedLayout(m_webView->pageRef(), true);
m_webView->setSize(size);
@@ -118,7 +122,7 @@ public:
static_cast<WebView*>(context)->onRepaintDone();
}
- static void finishFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
+ static void didLayout(WKPageRef page, WKLayoutMilestones milestones, WKTypeRef userData, const void *clientInfo)
{
static_cast<WebView*>(const_cast<void*>(clientInfo))->frameLoaded();
}
@@ -152,7 +156,9 @@ public:
tst_qrawwebview()
: m_resourceDir(QString::fromLatin1(TESTS_SOURCE_DIR "/html/resources"))
, m_baseUrl(QUrl::fromLocalFile(TESTS_SOURCE_DIR "/html").toString())
- { }
+ {
+ addQtWebProcessToPath();
+ }
private Q_SLOTS:
void paint() { run(&tst_qrawwebview::doPaint, m_resourceDir + "/qwkview_paint.png"); }
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/tests.pri b/Source/WebKit2/UIProcess/API/qt/tests/tests.pri
index a1133530d..123b25ce2 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/tests.pri
+++ b/Source/WebKit2/UIProcess/API/qt/tests/tests.pri
@@ -6,7 +6,7 @@ TARGET = tst_$$TARGET
INCLUDEPATH += $$PWD
SOURCES += ../util.cpp
-QT += testlib webkit
+QT += testlib webkitwidgets
have?(QTQUICK) {
QT += qml quick quick-private
HEADERS += ../bytearraytestdata.h \
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/util.cpp b/Source/WebKit2/UIProcess/API/qt/tests/util.cpp
index 4525e882b..fce3cc7f6 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/util.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/tests/util.cpp
@@ -57,10 +57,10 @@ bool waitForSignal(QObject* obj, const char* signal, int timeout)
return timeoutSpy.isEmpty();
}
-static void messageHandler(QtMsgType type, const char* message)
+static void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& message)
{
if (type == QtCriticalMsg) {
- fprintf(stderr, "%s\n", message);
+ fprintf(stderr, "%s\n", qPrintable(message));
return;
}
// Do nothing
@@ -68,7 +68,7 @@ static void messageHandler(QtMsgType type, const char* message)
void suppressDebugOutput()
{
- qInstallMsgHandler(messageHandler); \
+ qInstallMessageHandler(messageHandler); \
if (qgetenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT").isEmpty()) \
qputenv("QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT", "1");
}
@@ -126,6 +126,13 @@ bool waitForLoadFailed(QQuickWebView* webView, int timeout)
return timeoutSpy.isEmpty();
}
+bool waitForViewportReady(QQuickWebView* webView, int timeout)
+{
+ // The viewport is locked until the first frame of a page load is rendered.
+ // The QQuickView needs to be shown for this to succeed.
+ return waitForSignal(webView->experimental(), SIGNAL(loadVisuallyCommitted()), timeout);
+}
+
LoadStartedCatcher::LoadStartedCatcher(QQuickWebView* webView)
: m_webView(webView)
{
diff --git a/Source/WebKit2/UIProcess/API/qt/tests/util.h b/Source/WebKit2/UIProcess/API/qt/tests/util.h
index 0c14a1ff4..4834029b4 100644
--- a/Source/WebKit2/UIProcess/API/qt/tests/util.h
+++ b/Source/WebKit2/UIProcess/API/qt/tests/util.h
@@ -36,6 +36,7 @@ void suppressDebugOutput();
#if defined(HAVE_QTQUICK) && HAVE_QTQUICK
bool waitForLoadSucceeded(QQuickWebView* webView, int timeout = 10000);
bool waitForLoadFailed(QQuickWebView* webView, int timeout = 10000);
+bool waitForViewportReady(QQuickWebView* webView, int timeout = 10000);
class LoadStartedCatcher : public QObject {
Q_OBJECT