summaryrefslogtreecommitdiff
path: root/src/webwindow/networkaccessmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/webwindow/networkaccessmanager.cpp')
-rw-r--r--src/webwindow/networkaccessmanager.cpp185
1 files changed, 0 insertions, 185 deletions
diff --git a/src/webwindow/networkaccessmanager.cpp b/src/webwindow/networkaccessmanager.cpp
deleted file mode 100644
index e817faca..00000000
--- a/src/webwindow/networkaccessmanager.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/* ============================================================
-*
-* This file is a part of the rekonq project
-*
-* Copyright (C) 2007-2008 Trolltech ASA. All rights reserved
-* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com>
-*
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License or (at your option) version 3 or any later version
-* accepted by the membership of KDE e.V. (or its successor approved
-* by the membership of KDE e.V.), which shall act as a proxy
-* defined in Section 14 of version 3 of the license.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*
-* ============================================================ */
-
-
-
-// Self Includes
-#include "networkaccessmanager.h"
-#include "networkaccessmanager.moc"
-
-// Local Includes
-#include "adblockmanager.h"
-
-// KDE Includes
-#include <KLocale>
-#include <KProtocolManager>
-#include <KRun>
-
-// Qt Includes
-#include <QNetworkReply>
-#include <QTimer>
-#include <QWebElement>
-#include <QWebFrame>
-#include <QWidget>
-
-
-class NullNetworkReply : public QNetworkReply
-{
-public:
- NullNetworkReply(const QNetworkRequest &req, QObject* parent = 0)
- : QNetworkReply(parent)
- {
- setRequest(req);
- setUrl(req.url());
- setHeader(QNetworkRequest::ContentLengthHeader, 0);
- setHeader(QNetworkRequest::ContentTypeHeader, "text/plain");
- setError(QNetworkReply::ContentAccessDenied, i18n("Blocked by ad filter"));
- setAttribute(QNetworkRequest::User, QNetworkReply::ContentAccessDenied);
- QTimer::singleShot(0, this, SIGNAL(finished()));
- }
-
- virtual void abort() {}
- virtual qint64 bytesAvailable() const
- {
- return 0;
- }
-
-protected:
- virtual qint64 readData(char*, qint64)
- {
- return -1;
- }
-};
-
-
-// ----------------------------------------------------------------------------------------------
-
-
-#define HIDABLE_ELEMENTS QL1S("audio,img,embed,object,iframe,frame,video")
-
-
-static void hideBlockedElements(const QUrl& url, QWebElementCollection& collection)
-{
- for (QWebElementCollection::iterator it = collection.begin(); it != collection.end(); ++it)
- {
- const QUrl baseUrl ((*it).webFrame()->baseUrl());
- QString src = (*it).attribute(QL1S("src"));
-
- if (src.isEmpty())
- src = (*it).evaluateJavaScript(QL1S("this.src")).toString();
-
- if (src.isEmpty())
- continue;
- const QUrl resolvedUrl (baseUrl.resolved(src));
- if (url == resolvedUrl)
- {
- //kDebug() << "*** HIDING ELEMENT: " << (*it).tagName() << resolvedUrl;
- (*it).removeFromDocument();
- }
- }
-}
-
-
-// ----------------------------------------------------------------------------------------------
-
-
-NetworkAccessManager::NetworkAccessManager(QObject *parent)
- : AccessManager(parent)
-{
- QString c = KGlobal::locale()->language();
-
- if (c == QL1S("C"))
- c = QL1S("en-US");
- else
- c = c.replace(QL1C('_') , QL1C('-'));
-
- c.append(QL1S(", en-US; q=0.8, en; q=0.6"));
-
- _acceptLanguage = c.toLatin1();
-}
-
-
-QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData)
-{
- bool blocked = false;
-
- // Handle GET operations with AdBlock
- if (op == QNetworkAccessManager::GetOperation)
- blocked = AdBlockManager::self()->blockRequest(req);
-
- if (!blocked)
- {
- if (KProtocolInfo::isHelperProtocol(req.url()))
- {
- (void) new KRun(req.url(), qobject_cast<QWidget*>(req.originatingObject()));
- return new NullNetworkReply(req, this);
- }
-
- // set our "nice" accept-language header...
- QNetworkRequest request = req;
- request.setRawHeader("Accept-Language", _acceptLanguage);
-
- return KIO::AccessManager::createRequest(op, request, outgoingData);
- }
-
- QWebFrame* frame = qobject_cast<QWebFrame*>(req.originatingObject());
- if (frame)
- {
- if (!m_blockedRequests.contains(frame))
- connect(frame, SIGNAL(loadFinished(bool)), this, SLOT(slotFinished(bool)));
- m_blockedRequests.insert(frame, req.url());
- }
-
- return new NullNetworkReply(req, this);
-}
-
-
-void NetworkAccessManager::slotFinished(bool ok)
-{
- if (!ok)
- return;
-
- if(!AdBlockManager::self()->isEnabled())
- return;
-
- if(!AdBlockManager::self()->isHidingElements())
- return;
-
- QWebFrame* frame = qobject_cast<QWebFrame*>(sender());
- if (!frame)
- return;
-
- QList<QUrl> urls = m_blockedRequests.values(frame);
- if (urls.isEmpty())
- return;
-
- QWebElementCollection collection = frame->findAllElements(HIDABLE_ELEMENTS);
- if (frame->parentFrame())
- collection += frame->parentFrame()->findAllElements(HIDABLE_ELEMENTS);
-
- Q_FOREACH(const QUrl& url, urls)
- hideBlockedElements(url, collection);
-}