Set the URL of NoOpReply to the request URL

Prevents insertion of an empty URL into m_responses when the requested
URL is blacklisted.
This commit is contained in:
Matthew Horan 2012-11-26 21:40:52 -05:00
parent 5127c01366
commit b829103bbd
5 changed files with 12 additions and 8 deletions

View File

@ -1935,6 +1935,13 @@ describe Capybara::Webkit::Driver do
driver.find("//p").first.text.should == "Inner"
end
end
it "returns a status code for blocked urls" do
driver.visit("/")
driver.within_frame('frame1') do
driver.status_code.should == 200
end
end
end
describe "timeout for long requests" do

View File

@ -13,7 +13,7 @@ QNetworkReply* NetworkAccessManager::createRequest(QNetworkAccessManager::Operat
QNetworkRequest new_request(request);
QByteArray url = new_request.url().toEncoded();
if (this->isBlacklisted(new_request.url())) {
return this->noOpRequest();
return new NoOpReply(new_request, this);
} else {
if (operation != QNetworkAccessManager::PostOperation && operation != QNetworkAccessManager::PutOperation) {
new_request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant());
@ -99,7 +99,3 @@ bool NetworkAccessManager::isBlacklisted(QUrl url) {
return false;
};
QNetworkReply* NetworkAccessManager::noOpRequest() {
return new NoOpReply();
};

View File

@ -34,7 +34,6 @@ class NetworkAccessManager : public QNetworkAccessManager {
QHash<QString, QString> m_headers;
QHash<QUrl, NetworkResponse> m_responses;
bool isBlacklisted(QUrl url);
QNetworkReply* noOpRequest();
QHash<QUrl, QUrl> m_redirectMappings;
private slots:

View File

@ -1,11 +1,12 @@
#include <QTimer>
#include "NoOpReply.h"
NoOpReply::NoOpReply(QObject *parent) : QNetworkReply(parent) {
NoOpReply::NoOpReply(QNetworkRequest &request, QObject *parent) : QNetworkReply(parent) {
open(ReadOnly | Unbuffered);
setAttribute(QNetworkRequest::HttpStatusCodeAttribute, 200);
setHeader(QNetworkRequest::ContentLengthHeader, QVariant(0));
setHeader(QNetworkRequest::ContentTypeHeader, QVariant(QString("text/plain")));
setUrl(request.url());
QTimer::singleShot( 0, this, SIGNAL(readyRead()) );
QTimer::singleShot( 0, this, SIGNAL(finished()) );

View File

@ -1,10 +1,11 @@
#include <QNetworkReply>
#include <QNetworkRequest>
class NoOpReply : public QNetworkReply {
Q_OBJECT
public:
NoOpReply( QObject *parent=0 );
NoOpReply(QNetworkRequest &request, QObject *parent = 0);
void abort();
qint64 bytesAvailable() const;