src/WebPage.cpp in capybara-webkit-1.0.0 vs src/WebPage.cpp in capybara-webkit-1.1.0

- old
+ new

@@ -8,10 +8,11 @@ #include "NetworkReplyProxy.h" #include <QResource> #include <iostream> #include <QWebSettings> #include <QUuid> +#include <QApplication> WebPage::WebPage(WebPageManager *manager, QObject *parent) : QWebPage(parent) { m_loading = false; m_failed = false; m_manager = manager; @@ -140,18 +141,18 @@ bool WebPage::shouldInterruptJavaScript() { return false; } -InvocationResult WebPage::invokeCapybaraFunction(const char *name, const QStringList &arguments) { +InvocationResult WebPage::invokeCapybaraFunction(const char *name, bool allowUnattached, const QStringList &arguments) { QString qname(name); - JavascriptInvocation invocation(qname, arguments, this); + JavascriptInvocation invocation(qname, allowUnattached, arguments, this); return invocation.invoke(currentFrame()); } -InvocationResult WebPage::invokeCapybaraFunction(QString &name, const QStringList &arguments) { - return invokeCapybaraFunction(name.toLatin1().data(), arguments); +InvocationResult WebPage::invokeCapybaraFunction(QString &name, bool allowUnattached, const QStringList &arguments) { + return invokeCapybaraFunction(name.toLatin1().data(), allowUnattached, arguments); } void WebPage::javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID) { QVariantMap m; m["message"] = message; @@ -212,10 +213,23 @@ return message; else return message + m_errorPageMessage; } +void WebPage::mouseEvent(QEvent::Type type, const QPoint &position, Qt::MouseButton button) { + m_mousePosition = position; + QMouseEvent event(type, position, button, button, Qt::NoModifier); + QApplication::sendEvent(this, &event); +} + +bool WebPage::clickTest(QWebElement element, int absoluteX, int absoluteY) { + QPoint mousePos(absoluteX, absoluteY); + m_mousePosition = mousePos; + QWebHitTestResult res = mainFrame()->hitTestContent(mousePos); + return res.frame() == element.webFrame(); +} + bool WebPage::render(const QString &fileName, const QSize &minimumSize) { QFileInfo fileInfo(fileName); QDir dir; dir.mkpath(fileInfo.absolutePath()); @@ -234,9 +248,13 @@ p.setRenderHint( QPainter::TextAntialiasing, true); p.setRenderHint( QPainter::SmoothPixmapTransform, true); this->setViewportSize(pageSize); this->mainFrame()->render(&p); + + QImage pointer = QImage(":/pointer.png"); + p.drawImage(m_mousePosition, pointer); + p.end(); this->setViewportSize(viewportSize); return buffer.save(fileName); }