src/WebPage.cpp in capybara-webkit-0.6.1 vs src/WebPage.cpp in capybara-webkit-0.7.0

- old
+ new

@@ -1,27 +1,36 @@ #include "WebPage.h" #include "JavascriptInvocation.h" #include "NetworkAccessManager.h" +#include "NetworkCookieJar.h" +#include "UnsupportedContentHandler.h" #include <QResource> #include <iostream> WebPage::WebPage(QObject *parent) : QWebPage(parent) { + setForwardUnsupportedContent(true); loadJavascript(); setUserStylesheet(); m_loading = false; + this->setCustomNetworkAccessManager(); - NetworkAccessManager *manager = new NetworkAccessManager(); - this->setNetworkAccessManager(manager); - connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *))); - 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 *))); + connect(this, SIGNAL(unsupportedContent(QNetworkReply*)), + this, SLOT(handleUnsupportedContent(QNetworkReply*))); } +void WebPage::setCustomNetworkAccessManager() { + NetworkAccessManager *manager = new NetworkAccessManager(); + manager->setCookieJar(new NetworkCookieJar()); + this->setNetworkAccessManager(manager); + connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *))); +} + void WebPage::loadJavascript() { QResource javascript(":/capybara.js"); if (javascript.isCompressed()) { QByteArray uncompressedBytes(qUncompress(javascript.data(), javascript.size())); m_capybaraJavascript = QString(uncompressedBytes); @@ -106,12 +115,12 @@ void WebPage::loadStarted() { m_loading = true; } void WebPage::loadFinished(bool success) { - Q_UNUSED(success); m_loading = false; + emit pageFinished(success); } bool WebPage::isLoading() const { return m_loading; } @@ -153,10 +162,11 @@ return getLastAttachedFileName(); } bool WebPage::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output) { + Q_UNUSED(option); if (extension == ChooseMultipleFilesExtension) { QStringList names = QStringList() << getLastAttachedFileName(); static_cast<ChooseMultipleFilesExtensionReturn*>(output)->fileNames = names; return true; } @@ -166,24 +176,36 @@ QString WebPage::getLastAttachedFileName() { return currentFrame()->evaluateJavaScript(QString("Capybara.lastAttachedFile")).toString(); } void WebPage::replyFinished(QNetworkReply *reply) { - QStringList headers; - lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - QList<QByteArray> list = reply->rawHeaderList(); + if (reply->url() == this->currentFrame()->url()) { + QStringList headers; + m_lastStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + QList<QByteArray> list = reply->rawHeaderList(); - int length = list.size(); - for(int i = 0; i < length; i++) { - headers << list.at(i)+": "+reply->rawHeader(list.at(i)); - } + int length = list.size(); + for(int i = 0; i < length; i++) { + headers << list.at(i)+": "+reply->rawHeader(list.at(i)); + } - m_pageHeaders = headers.join("\n"); + m_pageHeaders = headers.join("\n"); + } } int WebPage::getLastStatus() { - return lastStatus; + return m_lastStatus; } +void WebPage::resetResponseHeaders() { + m_lastStatus = 0; + m_pageHeaders = QString(); +} + QString WebPage::pageHeaders() { return m_pageHeaders; +} + +void WebPage::handleUnsupportedContent(QNetworkReply *reply) { + UnsupportedContentHandler *handler = new UnsupportedContentHandler(this, reply); + Q_UNUSED(handler); }