QNetworkReply *NetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData) { WebPage *parentPage = qobject_cast<WebPage *>(parent()); QNetworkReply *reply = 0; QNetworkRequest req = request; req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true); req.setRawHeader("Accept-Language", _acceptLanguage); KIO::CacheControl cc = KProtocolManager::cacheControl(); switch (cc) { case KIO::CC_CacheOnly: // Fail request if not in cache. req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache); break; 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: req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); break; } // WARNING // There are actually 2 exceptions here handled with QNAM // instead of KIO that need fixes upstream before removing. They are: // 1) DeleteOperation // 2) CustomOperation switch(op) { case QNetworkAccessManager::HeadOperation: break; case QNetworkAccessManager::GetOperation: reply = Application::adblockManager()->block(req, parentPage); break; case QNetworkAccessManager::PutOperation: break; case QNetworkAccessManager::PostOperation: break; case QNetworkAccessManager::DeleteOperation: kDebug() << "DELETE OPERATION..."; reply = QNetworkAccessManager::createRequest(op, req, outgoingData); if(!reply) kDebug() << "OOOOOOOOOOOOOOOOOOO DELETE REPLY NULL"; break; case QNetworkAccessManager::CustomOperation: kDebug() << "CUSTOM OPERATION..."; reply = QNetworkAccessManager::createRequest(op, req, outgoingData); if(!reply) kDebug() << "OOOOOOOOOOOOOOOOOOO CUSTOM REPLY NULL"; break; default: kDebug() << "NON EXTANT CASE..."; break; } if(!reply) reply = AccessManager::createRequest(op, req, outgoingData); if(parentPage && parentPage->hasNetworkAnalyzerEnabled()) emit networkData( op, req, reply ); return reply; }