summaryrefslogtreecommitdiffstats
path: root/WebKitTools/DumpRenderTree/qt
diff options
context:
space:
mode:
authorLeon Clarke <leonclarke@google.com>2010-06-03 14:33:32 +0100
committerLeon Clarke <leonclarke@google.com>2010-06-08 12:24:51 +0100
commit5af96e2c7b73ebc627c6894727826a7576d31758 (patch)
treef9d5e6f6175ccd7e3d14de9b290f08937a0d17ba /WebKitTools/DumpRenderTree/qt
parent8cc4fcf4f6adcbc0e0aebfc24fbad9a4cddf2cfb (diff)
downloadexternal_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')
-rw-r--r--WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp27
-rw-r--r--WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h3
-rw-r--r--WebKitTools/DumpRenderTree/qt/EventSenderQt.cpp24
-rw-r--r--WebKitTools/DumpRenderTree/qt/EventSenderQt.h4
-rw-r--r--WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp12
-rw-r--r--WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h1
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