src/WebPage.cpp in capybara-webkit-0.1.7 vs src/WebPage.cpp in capybara-webkit-0.2.0

- old
+ new

@@ -2,37 +2,43 @@ #include "JavascriptInvocation.h" #include <QResource> #include <iostream> WebPage::WebPage(QObject *parent) : QWebPage(parent) { - connect(mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), - this, SLOT(injectJavascriptHelpers())); QResource javascript(":/capybara.js"); char * javascriptString = new char[javascript.size() + 1]; strcpy(javascriptString, (const char *)javascript.data()); javascriptString[javascript.size()] = 0; m_capybaraJavascript = javascriptString; m_loading = false; connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted())); connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); + connect(this, SIGNAL(frameCreated(QWebFrame *)), + this, SLOT(frameCreated(QWebFrame *))); } +void WebPage::frameCreated(QWebFrame * frame) { + connect(frame, SIGNAL(javaScriptWindowObjectCleared()), + this, SLOT(injectJavascriptHelpers())); +} + void WebPage::injectJavascriptHelpers() { - mainFrame()->evaluateJavaScript(m_capybaraJavascript); + QWebFrame* frame = qobject_cast<QWebFrame *>(QObject::sender()); + frame->evaluateJavaScript(m_capybaraJavascript); } bool WebPage::shouldInterruptJavaScript() { return false; } QVariant WebPage::invokeCapybaraFunction(const char *name, QStringList &arguments) { QString qname(name); QString objectName("CapybaraInvocation"); JavascriptInvocation invocation(qname, arguments); - mainFrame()->addToJavaScriptWindowObject(objectName, &invocation); + currentFrame()->addToJavaScriptWindowObject(objectName, &invocation); QString javascript = QString("Capybara.invoke()"); - return mainFrame()->evaluateJavaScript(javascript); + return currentFrame()->evaluateJavaScript(javascript); } QVariant WebPage::invokeCapybaraFunction(QString &name, QStringList &arguments) { return invokeCapybaraFunction(name.toAscii().data(), arguments); } @@ -74,8 +80,8 @@ bool WebPage::isLoading() const { return m_loading; } QString WebPage::failureString() { - return QString("Unable to load URL: ") + mainFrame()->url().toString(); + return QString("Unable to load URL: ") + currentFrame()->url().toString(); }