diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-01 10:36:58 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-01 10:36:58 +0200 |
commit | b1e9e47fa11f608ae16bc07f97a2acf95bf80272 (patch) | |
tree | c88c45e80c9c44506e7cdf9a3bb39ebf82a8cd5b /Source/WebKit2/UIProcess/API/qt/qwebkittest.cpp | |
parent | be01689f43cf6882cf670d33df49ead1f570c53a (diff) | |
download | qtwebkit-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.cpp | 96 |
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(); } |