From 50d2f90b32782c0712a59eed16f7b0b2778dc7ab Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sun, 25 Apr 2010 02:14:04 +0200 Subject: Various changes - moved updateCOnfiguration slot to Application class from MainWindow (its right place) - loaded conf out of ctor (this will increase boot speed, but could in theory let rekonq fails on first load. We'll see..) - set accept-language (raw) header. RFC 2626, section 14. Choose your preferred language. - Try fixing CacheControl values (rekonq seems work quite well offline, now) --- src/networkaccessmanager.cpp | 65 ++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 27 deletions(-) (limited to 'src/networkaccessmanager.cpp') diff --git a/src/networkaccessmanager.cpp b/src/networkaccessmanager.cpp index 95b768d9..15a71317 100644 --- a/src/networkaccessmanager.cpp +++ b/src/networkaccessmanager.cpp @@ -36,54 +36,65 @@ // KDE Includes #include +#include +#include + +// Defines +#define QL1S(x) QLatin1String(x) NetworkAccessManager::NetworkAccessManager(QObject *parent) : AccessManager(parent) - , _parentPage( qobject_cast(parent) ) { + QString c = KGlobal::locale()->country(); + if(c == QL1S("C")) + c = QL1S("en_US"); + if(c != QL1S("en_US")) + c.append( QL1S(", en_US") ); + + _acceptLanguage = c.toLatin1(); } QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { + WebPage *parentPage = qobject_cast( parent() ); + QNetworkReply *reply = 0; QNetworkRequest req = request; req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); - req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); -// if (!m_acceptLanguage.isEmpty()) -// req.setRawHeader("Accept-Language", m_acceptLanguage); - - switch(op) + req.setRawHeader("Accept-Language", _acceptLanguage); + + KIO::CacheControl cc = KProtocolManager::cacheControl(); + switch(cc) { - case QNetworkAccessManager::HeadOperation: - kDebug() << "HEAD OPERATION"; - break; - - case QNetworkAccessManager::GetOperation: - kDebug() << "GET OPERATION"; - reply = Application::adblockManager()->block(req, _parentPage); - if (reply) - return reply; + case KIO::CC_CacheOnly: // Fail request if not in cache. + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache); break; - - case QNetworkAccessManager::PutOperation: - kDebug() << "PUT OPERATION"; - break; - - case QNetworkAccessManager::PostOperation: - kDebug() << "POST OPERATION"; - break; - - case QNetworkAccessManager::DeleteOperation: - kDebug() << "DELETE OPERATION"; + + case KIO::CC_Refresh: // Always validate cached entry with remote site. + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork); break; + case KIO::CC_Reload: // Always fetch from remote site + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + break; + + case KIO::CC_Cache: // Use cached entry if available. + case KIO::CC_Verify: // Validate cached entry with remote site if expired. default: - kDebug() << "UNKNOWN OPERATION"; + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); break; } + + + if( op == QNetworkAccessManager::GetOperation ) + { + reply = Application::adblockManager()->block(req, parentPage); + if (reply) + return reply; + } return AccessManager::createRequest(op,req,outgoingData); } -- cgit v1.2.1