diff options
author | Leon Clarke <leonclarke@google.com> | 2010-06-03 14:33:32 +0100 |
---|---|---|
committer | Leon Clarke <leonclarke@google.com> | 2010-06-08 12:24:51 +0100 |
commit | 5af96e2c7b73ebc627c6894727826a7576d31758 (patch) | |
tree | f9d5e6f6175ccd7e3d14de9b290f08937a0d17ba /WebKitTools/DumpRenderTree/qt | |
parent | 8cc4fcf4f6adcbc0e0aebfc24fbad9a4cddf2cfb (diff) | |
download | external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.zip external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.tar.gz external_webkit-5af96e2c7b73ebc627c6894727826a7576d31758.tar.bz2 |
Merge webkit.org at r60469 : Initial merge by git.
Change-Id: I66a0047aa2af802f66bb0c7f2a8b02247a596234
Diffstat (limited to 'WebKitTools/DumpRenderTree/qt')
6 files changed, 66 insertions, 5 deletions
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp index f119dd0..ba9780b 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp @@ -130,6 +130,15 @@ public: }; #endif +void checkPermissionCallback(QObject* receiver, const QUrl& url, NotificationPermission& permission) +{ + qobject_cast<DumpRenderTree*>(receiver)->checkPermission(url, permission); +} + +void requestPermissionCallback(QObject* receiver, QWebPage* page, const QString& origin) +{ + qobject_cast<DumpRenderTree*>(receiver)->requestPermission(page, origin); +} WebPage::WebPage(QObject* parent, DumpRenderTree* drt) : QWebPage(parent) @@ -158,6 +167,11 @@ WebPage::WebPage(QObject* parent, DumpRenderTree* drt) setNetworkAccessManager(m_drt->networkAccessManager()); setPluginFactory(new TestPlugin(this)); + + DumpRenderTreeSupportQt::setNotificationsReceiver(this, m_drt); + DumpRenderTreeSupportQt::setCheckPermissionFunction(checkPermissionCallback); + DumpRenderTreeSupportQt::setRequestPermissionFunction(requestPermissionCallback); + } WebPage::~WebPage() @@ -457,6 +471,9 @@ void DumpRenderTree::resetToConsistentStateBeforeTesting() DumpRenderTreeSupportQt::resetOriginAccessWhiteLists(); + // Qt defaults to Windows editing behavior. + DumpRenderTreeSupportQt::setEditingBehavior(m_page, "win"); + QLocale::setDefault(QLocale::c()); setlocale(LC_ALL, ""); } @@ -898,6 +915,16 @@ void DumpRenderTree::switchFocus(bool focused) QApplication::sendEvent(m_mainView, &event); } +void DumpRenderTree::checkPermission(const QUrl& url, NotificationPermission& permission) +{ + permission = m_controller->checkDesktopNotificationPermission(url.scheme() + "://" + url.host()) ? NotificationAllowed : NotificationDenied; +} + +void DumpRenderTree::requestPermission(QWebPage* page, const QString& origin) +{ + DumpRenderTreeSupportQt::allowNotificationForOrigin(page, origin); +} + #if defined(Q_WS_X11) void DumpRenderTree::initializeFonts() { diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h index ad41e3a..3fa4485 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h @@ -40,6 +40,7 @@ #include <QSslError> #endif +#include "../../../WebKit/qt/WebCoreSupport/DumpRenderTreeSupportQt.h" #include <qwebframe.h> #include <qwebinspector.h> #include <qwebpage.h> @@ -113,6 +114,8 @@ public Q_SLOTS: void dumpDatabaseQuota(QWebFrame* frame, const QString& dbName); void statusBarMessage(const QString& message); void windowCloseRequested(); + void checkPermission(const QUrl&, NotificationPermission&); + void requestPermission(QWebPage* page, const QString&); Q_SIGNALS: void quit(); diff --git a/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp b/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp index 7432052..a548a63 100644 --- a/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp @@ -70,6 +70,9 @@ EventSender::EventSender(QWebPage* parent) m_currentButton = 0; resetClickCount(); m_page->view()->installEventFilter(this); + // So that we can match Scrollbar::pixelsPerLineStep() in WheelEventQt.cpp and + // pass fast/events/platform-wheelevent-in-scrolling-div.html + QApplication::setWheelScrollLines(2); } void EventSender::mouseDown(int button) @@ -155,6 +158,27 @@ void EventSender::mouseMoveTo(int x, int y) sendOrQueueEvent(event); } +#ifndef QT_NO_WHEELEVENT +void EventSender::mouseScrollBy(int x, int y) +{ + continuousMouseScrollBy((x*120), (y*120)); +} + +void EventSender::continuousMouseScrollBy(int x, int y) +{ + // continuousMouseScrollBy() mimics devices that send fine-grained scroll events where the 'delta' specified is not the usual + // multiple of 120. See http://doc.qt.nokia.com/4.6/qwheelevent.html#delta for a good explanation of this. + if (x) { + QWheelEvent* event = new QWheelEvent(m_mousePos, m_mousePos, x, m_mouseButtons, Qt::NoModifier, Qt::Horizontal); + sendOrQueueEvent(event); + } + if (y) { + QWheelEvent* event = new QWheelEvent(m_mousePos, m_mousePos, y, m_mouseButtons, Qt::NoModifier, Qt::Vertical); + sendOrQueueEvent(event); + } +} +#endif + void EventSender::leapForward(int ms) { eventQueue[endOfQueue].m_delay = ms; diff --git a/WebKitTools/DumpRenderTree/qt/EventSenderQt.h b/WebKitTools/DumpRenderTree/qt/EventSenderQt.h index e824e0f..d5b45ac 100644 --- a/WebKitTools/DumpRenderTree/qt/EventSenderQt.h +++ b/WebKitTools/DumpRenderTree/qt/EventSenderQt.h @@ -57,6 +57,10 @@ public slots: void mouseDown(int button = 0); void mouseUp(int button = 0); void mouseMoveTo(int x, int y); +#ifndef QT_NO_WHEELEVENT + void mouseScrollBy(int x, int y); + void continuousMouseScrollBy(int x, int y); +#endif void leapForward(int ms); void keyDown(const QString& string, const QStringList& modifiers = QStringList(), unsigned int location = 0); void clearKillRing() {} diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp index 9616835..9079be2 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp @@ -64,6 +64,8 @@ void LayoutTestController::reset() m_handleErrorPages = false; m_webHistory = 0; m_globalFlag = false; + m_desktopNotificationAllowedOrigins.clear(); + DumpRenderTreeSupportQt::dumpEditingCallbacks(false); DumpRenderTreeSupportQt::dumpFrameLoader(false); DumpRenderTreeSupportQt::dumpResourceLoadCallbacks(false); @@ -71,6 +73,7 @@ void LayoutTestController::reset() DumpRenderTreeSupportQt::setWillSendRequestReturnsNull(false); DumpRenderTreeSupportQt::setWillSendRequestClearHeaders(QStringList()); setIconDatabaseEnabled(false); + emit hidePage(); } @@ -181,13 +184,12 @@ int LayoutTestController::windowCount() void LayoutTestController::grantDesktopNotificationPermission(const QString& origin) { - // FIXME: Implement for notification security + m_desktopNotificationAllowedOrigins.append(origin); } bool LayoutTestController::checkDesktopNotificationPermission(const QString& origin) { - // FIXME: Implement for notification security - return true; + return m_desktopNotificationAllowedOrigins.contains(origin); } void LayoutTestController::display() @@ -484,7 +486,7 @@ void LayoutTestController::addOriginAccessWhitelistEntry(const QString& sourceOr void LayoutTestController::removeOriginAccessWhitelistEntry(const QString& sourceOrigin, const QString& destinationProtocol, const QString& destinationHost, bool allowDestinationSubdomains) { - // FIXME: Implement. + DumpRenderTreeSupportQt::removeWhiteListAccessFromOrigin(sourceOrigin, destinationProtocol, destinationHost, allowDestinationSubdomains); } void LayoutTestController::waitForPolicyDelegate() @@ -640,7 +642,7 @@ void LayoutTestController::setIconDatabaseEnabled(bool enable) void LayoutTestController::setEditingBehavior(const QString& editingBehavior) { - // FIXME: Implement. + DumpRenderTreeSupportQt::setEditingBehavior(m_drt->webPage(), editingBehavior); } const unsigned LayoutTestController::maxViewWidth = 800; diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h index 5fb40b6..d7bb839 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h @@ -218,6 +218,7 @@ private: QWebFrame* m_topLoadingFrame; WebCore::DumpRenderTree* m_drt; QWebHistory* m_webHistory; + QStringList m_desktopNotificationAllowedOrigins; }; #endif // LayoutTestControllerQt_h |