summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-06-01 10:36:58 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-06-01 10:36:58 +0200
commitb1e9e47fa11f608ae16bc07f97a2acf95bf80272 (patch)
treec88c45e80c9c44506e7cdf9a3bb39ebf82a8cd5b /Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
parentbe01689f43cf6882cf670d33df49ead1f570c53a (diff)
downloadqtwebkit-b1e9e47fa11f608ae16bc07f97a2acf95bf80272.tar.gz
Imported WebKit commit 499c84c99aa98e9870fa7eaa57db476c6d160d46 (http://svn.webkit.org/repository/webkit/trunk@119200)
Weekly update :). Particularly relevant changes for Qt are the use of the WebCore image decoders and direct usage of libpng/libjpeg if available in the system.
Diffstat (limited to 'Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp96
1 files changed, 66 insertions, 30 deletions
diff --git a/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp b/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
index 529df01eb..e0a441c0e 100644
--- a/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
+++ b/Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp
@@ -22,9 +22,10 @@
#include "qwebkittest_p.h"
#include "QtViewportInteractionEngine.h"
-#include "QtWebPageEventHandler.h"
-#include "qquickwebview_p.h"
#include "qquickwebview_p_p.h"
+#include "qwindowsysteminterface_qpa.h"
+#include <QMutableListIterator>
+#include <QTouchEvent>
using namespace WebKit;
@@ -43,41 +44,71 @@ static QTouchEvent::TouchPoint touchPoint(qreal x, qreal y)
QPointF localPos(x, y);
QTouchEvent::TouchPoint point;
+ point.setId(1);
point.setLastPos(localPos);
QRectF touchRect(0, 0, 40, 40);
touchRect.moveCenter(localPos);
point.setRect(touchRect);
+ point.setPressure(1);
return point;
}
+bool QWebKitTest::sendTouchEvent(QQuickWebView* window, QEvent::Type type, const QList<QTouchEvent::TouchPoint>& points, ulong timestamp)
+{
+ ASSERT(window);
+
+ static QTouchDevice* device = 0;
+ if (!device) {
+ device = new QTouchDevice;
+ device->setType(QTouchDevice::TouchScreen);
+ QWindowSystemInterface::registerTouchDevice(device);
+ }
+
+ Qt::TouchPointStates touchPointStates = 0;
+ foreach (const QTouchEvent::TouchPoint& touchPoint, points)
+ touchPointStates |= touchPoint.state();
+
+ QTouchEvent event(type, device, Qt::NoModifier, touchPointStates, points);
+ event.setTimestamp(timestamp);
+ event.setAccepted(false);
+
+ window->touchEvent(&event);
+
+ return event.isAccepted();
+}
+
bool QWebKitTest::touchTap(QObject* item, qreal x, qreal y, int delay)
{
- if (!qobject_cast<QQuickWebView*>(item)) {
- // FIXME: We only support the actual web view for now.
- qWarning("Touch event \"DoubleTap\" not accepted by receiving item");
+ QQuickWebView* window = qobject_cast<QQuickWebView*>(item);
+
+ if (!window) {
+ qWarning("Touch event \"TouchBegin\" not accepted by receiving item");
return false;
}
// FIXME: implement delay using QTest::qWait() or similar.
Q_UNUSED(delay);
- m_webViewPrivate->pageView->eventHandler()->handleSingleTapEvent(touchPoint(x, y));
+
+ QList<QTouchEvent::TouchPoint> points;
+ points.append(touchPoint(x, y));
+
+ points[0].setState(Qt::TouchPointPressed);
+ sendTouchEvent(window, QEvent::TouchBegin, points, QDateTime::currentMSecsSinceEpoch());
+
+ points[0].setState(Qt::TouchPointReleased);
+ sendTouchEvent(window, QEvent::TouchEnd, points, QDateTime::currentMSecsSinceEpoch());
return true;
}
bool QWebKitTest::touchDoubleTap(QObject* item, qreal x, qreal y, int delay)
{
- if (!qobject_cast<QQuickWebView*>(item)) {
- // FIXME: We only support the actual web view for now.
- qWarning("Touch event \"DoubleTap\" not accepted by receiving item");
+ if (!touchTap(item, x, y, delay))
return false;
- }
-
- // FIXME: implement delay using QTest::qWait() or similar.
- Q_UNUSED(delay);
- m_webViewPrivate->pageView->eventHandler()->handleDoubleTapEvent(touchPoint(x, y));
+ if (!touchTap(item, x, y, delay))
+ return false;
return true;
}
@@ -89,44 +120,49 @@ QSize QWebKitTest::contentsSize() const
QVariant QWebKitTest::contentsScale() const
{
- if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
- return interactionEngine->currentCSSScale();
-
- return m_webViewPrivate->attributes.initialScale;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return viewport->currentCSSScale();
+ return QVariant();
}
QVariant QWebKitTest::devicePixelRatio() const
{
- return m_webViewPrivate->attributes.devicePixelRatio;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return viewport->m_devicePixelRatio;
+ return QVariant();
}
QVariant QWebKitTest::initialScale() const
{
- return m_webViewPrivate->attributes.initialScale;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return viewport->m_rawAttributes.initialScale;
+ return QVariant();
}
QVariant QWebKitTest::minimumScale() const
{
- if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
- return interactionEngine->m_minimumScale;
-
- return m_webViewPrivate->attributes.minimumScale;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return viewport->m_minimumScale;
+ return QVariant();
}
QVariant QWebKitTest::maximumScale() const
{
- if (QtViewportInteractionEngine* interactionEngine = m_webViewPrivate->viewportInteractionEngine())
- return interactionEngine->m_maximumScale;
-
- return m_webViewPrivate->attributes.maximumScale;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return viewport->m_maximumScale;
+ return QVariant();
}
QVariant QWebKitTest::isScalable() const
{
- return !!m_webViewPrivate->attributes.userScalable;
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return !!viewport->m_rawAttributes.userScalable;
+ return QVariant();
}
QVariant QWebKitTest::layoutSize() const
{
- return QSizeF(m_webViewPrivate->attributes.layoutSize);
+ if (QtViewportInteractionEngine* viewport = m_webViewPrivate->viewportInteractionEngine())
+ return QSizeF(viewport->m_rawAttributes.layoutSize);
+ return QVariant();
}