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