diff options
author | Kristian Monsen <kristianm@google.com> | 2010-07-30 10:46:49 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2010-08-04 13:01:34 +0100 |
commit | 0617145a89917ae7735fe1c9538688ab9a577df5 (patch) | |
tree | 56206078694427c37ed7bdf27eb5221398b833c0 /WebKitTools/DumpRenderTree/qt | |
parent | ef1adcdfc805d4d13103f6f15cc5b4d96828a60f (diff) | |
download | external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.zip external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.tar.gz external_webkit-0617145a89917ae7735fe1c9538688ab9a577df5.tar.bz2 |
Merge WebKit at r64264 : Initial merge by git.
Change-Id: Ic42bef02efef8217a0f84c47176a9c617c28d1f1
Diffstat (limited to 'WebKitTools/DumpRenderTree/qt')
4 files changed, 46 insertions, 27 deletions
diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp index 022a867..c6c39b5 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp @@ -130,16 +130,6 @@ public: }; #endif -void checkPermissionCallback(QObject* receiver, const QUrl& url, NotificationPermission& permission) -{ - qobject_cast<DumpRenderTree*>(receiver)->checkPermission(url, permission); -} - -void requestPermissionCallback(QObject* receiver, const QString& origin) -{ - qobject_cast<DumpRenderTree*>(receiver)->requestPermission(origin); -} - WebPage::WebPage(QObject* parent, DumpRenderTree* drt) : QWebPage(parent) , m_webInspector(0) @@ -167,10 +157,9 @@ WebPage::WebPage(QObject* parent, DumpRenderTree* drt) setNetworkAccessManager(m_drt->networkAccessManager()); setPluginFactory(new TestPlugin(this)); - DumpRenderTreeSupportQt::setNotificationsReceiver(m_drt); - DumpRenderTreeSupportQt::setCheckPermissionFunction(checkPermissionCallback); - DumpRenderTreeSupportQt::setRequestPermissionFunction(requestPermissionCallback); - + connect(this, SIGNAL(requestPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain)), this, SLOT(requestPermission(QWebFrame*, QWebPage::PermissionDomain))); + connect(this, SIGNAL(checkPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain, QWebPage::PermissionPolicy&)), this, SLOT(checkPermission(QWebFrame*, QWebPage::PermissionDomain, QWebPage::PermissionPolicy&))); + connect(this, SIGNAL(cancelRequestsForPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain)), this, SLOT(cancelRequestsForPermissionFromUser(QWebFrame*, QWebPage::PermissionDomain))); } WebPage::~WebPage() @@ -228,6 +217,36 @@ void WebPage::javaScriptAlert(QWebFrame*, const QString& message) fprintf(stdout, "ALERT: %s\n", message.toUtf8().constData()); } +void WebPage::requestPermission(QWebFrame* frame, QWebPage::PermissionDomain domain) +{ + switch (domain) { + case NotificationsPermissionDomain: + if (!m_drt->layoutTestController()->ignoreReqestForPermission()) + setUserPermission(frame, domain, PermissionGranted); + break; + default: + break; + } +} + +void WebPage::checkPermission(QWebFrame* frame, QWebPage::PermissionDomain domain, QWebPage::PermissionPolicy& policy) +{ + switch (domain) { + case NotificationsPermissionDomain: + { + QUrl url = frame->url(); + policy = m_drt->layoutTestController()->checkDesktopNotificationPermission(url.scheme() + "://" + url.host()) ? PermissionGranted : PermissionDenied; + break; + } + default: + break; + } +} + +void WebPage::cancelRequestsForPermission(QWebFrame*, QWebPage::PermissionDomain) +{ +} + static QString urlSuitableForTestResult(const QString& url) { if (url.isEmpty() || !url.startsWith(QLatin1String("file://"))) @@ -992,16 +1011,6 @@ void DumpRenderTree::switchFocus(bool focused) } -void DumpRenderTree::checkPermission(const QUrl& url, NotificationPermission& permission) -{ - permission = m_controller->checkDesktopNotificationPermission(url.scheme() + "://" + url.host()) ? NotificationAllowed : NotificationDenied; -} - -void DumpRenderTree::requestPermission(const QString& origin) -{ - DumpRenderTreeSupportQt::allowNotificationForOrigin(origin); -} - #if defined(Q_WS_X11) void DumpRenderTree::initializeFonts() { diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h index f258189..de0c6c5 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTreeQt.h @@ -119,8 +119,6 @@ public Q_SLOTS: void dumpDatabaseQuota(QWebFrame* frame, const QString& dbName); void statusBarMessage(const QString& message); void windowCloseRequested(); - void checkPermission(const QUrl&, NotificationPermission&); - void requestPermission(const QString&); Q_SIGNALS: void quit(); @@ -193,6 +191,9 @@ public: public slots: bool shouldInterruptJavaScript() { return false; } bool allowGeolocationRequest(QWebFrame *frame); + void requestPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); + void checkPermission(QWebFrame* frame, QWebPage::PermissionDomain domain, QWebPage::PermissionPolicy& policy); + void cancelRequestsForPermission(QWebFrame* frame, QWebPage::PermissionDomain domain); protected: bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, NavigationType type); diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp index 3a6229f..8ebdbae 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp @@ -67,6 +67,7 @@ void LayoutTestController::reset() m_globalFlag = false; m_userStyleSheetEnabled = false; m_desktopNotificationAllowedOrigins.clear(); + m_ignoreDesktopNotification = false; DumpRenderTreeSupportQt::dumpEditingCallbacks(false); DumpRenderTreeSupportQt::dumpFrameLoader(false); @@ -193,9 +194,14 @@ void LayoutTestController::grantDesktopNotificationPermission(const QString& ori m_desktopNotificationAllowedOrigins.append(origin); } +void LayoutTestController::ignoreDesktopNotificationPermissionRequests() +{ + m_ignoreDesktopNotification = true; +} + bool LayoutTestController::checkDesktopNotificationPermission(const QString& origin) { - return m_desktopNotificationAllowedOrigins.contains(origin); + return !m_ignoreDesktopNotification && m_desktopNotificationAllowedOrigins.contains(origin); } void LayoutTestController::display() diff --git a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h index 4e95381..4ebf99d 100644 --- a/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h +++ b/WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.h @@ -70,6 +70,7 @@ public: bool canOpenWindows() const { return m_canOpenWindows; } bool shouldDumpTitleChanges() const { return m_dumpTitleChanges; } bool waitForPolicy() const { return m_waitForPolicy; } + bool ignoreReqestForPermission() const { return m_ignoreDesktopNotification; } void reset(); @@ -120,6 +121,7 @@ public slots: void setCloseRemainingWindowsWhenComplete(bool = false) {} int windowCount(); void grantDesktopNotificationPermission(const QString& origin); + void ignoreDesktopNotificationPermissionRequests(); bool checkDesktopNotificationPermission(const QString& origin); void display(); void clearBackForwardList(); @@ -252,6 +254,7 @@ private: WebCore::DumpRenderTree* m_drt; QWebHistory* m_webHistory; QStringList m_desktopNotificationAllowedOrigins; + bool m_ignoreDesktopNotification; }; #endif // LayoutTestControllerQt_h |