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);
}