diff options
Diffstat (limited to 'src/webwindow')
| -rw-r--r-- | src/webwindow/networkaccessmanager.cpp | 185 | ||||
| -rw-r--r-- | src/webwindow/networkaccessmanager.h | 63 | ||||
| -rw-r--r-- | src/webwindow/webpage.cpp | 74 | ||||
| -rw-r--r-- | src/webwindow/webpage.h | 58 | 
4 files changed, 0 insertions, 380 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); -} diff --git a/src/webwindow/networkaccessmanager.h b/src/webwindow/networkaccessmanager.h deleted file mode 100644 index 1c9c3905..00000000 --- a/src/webwindow/networkaccessmanager.h +++ /dev/null @@ -1,63 +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/>. -* -* ============================================================ */ - - -#ifndef NETWORKACCESSMANAGER_H -#define NETWORKACCESSMANAGER_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// KDE Includes -#include <KIO/AccessManager> - -// Qt Includes -#include <QByteArray> - -// Forward Declarations -class QWebFrame; - - -class REKONQ_TESTS_EXPORT NetworkAccessManager : public KIO::Integration::AccessManager -{ -    Q_OBJECT - -public: -    NetworkAccessManager(QObject *parent); - -protected: -    virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); - -private Q_SLOTS: -    void slotFinished(bool); - -private: -    QMultiHash<QWebFrame*, QUrl> m_blockedRequests; -    QByteArray _acceptLanguage; -}; - -#endif // NETWORKACCESSMANAGER_H diff --git a/src/webwindow/webpage.cpp b/src/webwindow/webpage.cpp deleted file mode 100644 index 7da39e0f..00000000 --- a/src/webwindow/webpage.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net> -* Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org> -* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com> -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* Copyright (C) 2010 by Matthieu Gicquel <matgic78 at gmail dot com> -* Copyright (C) 2009-2010 Dawit Alemayehu <adawit at kde dot org> -* -* -* 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 "webpage.h" -#include "webpage.moc" - -#include "networkaccessmanager.h" - - -WebPage::WebPage(QWidget *parent) -    : KWebPage(parent, KWalletIntegration) -{ -    // rekonq Network Manager -    NetworkAccessManager *manager = new NetworkAccessManager(this); - -    // set network reply object to emit readyRead when it receives meta data -    manager->setEmitReadyReadOnMetaDataChange(true); - -    // disable QtWebKit cache to just use KIO one.. -    manager->setCache(0); - -    // set cookieJar window.. -    if (parent && parent->window()) -        manager->setWindow(parent->window()); - -    setNetworkAccessManager(manager); -} - - -WebPage::~WebPage() -{ -} - - -WebPage *WebPage::createWindow(QWebPage::WebWindowType type) -{ -    // added to manage web modal dialogs -    if (type == QWebPage::WebModalDialog) -        kDebug() << "Modal Dialog"; - -    WebPage* p = new WebPage; -    emit pageCreated(p); -    return p; -} diff --git a/src/webwindow/webpage.h b/src/webwindow/webpage.h deleted file mode 100644 index f953d3fc..00000000 --- a/src/webwindow/webpage.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2008 Benjamin C. Meyer <ben@meyerhome.net> -* Copyright (C) 2008 Dirk Mueller <mueller@kde.org> -* Copyright (C) 2008 Urs Wolfer <uwolfer @ kde.org> -* Copyright (C) 2008 Michael Howell <mhowell123@gmail.com> -* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> -* Copyright (C) 2010 by Matthieu Gicquel <matgic78 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/>. -* -* ============================================================ */ - - -#ifndef WEBPAGE_H -#define WEBPAGE_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// KDE Includes -#include <KWebPage> - - -class WebPage : public KWebPage -{ -    Q_OBJECT - -public: -    WebPage(QWidget *parent = 0); -    ~WebPage(); - -protected: -    WebPage *createWindow(WebWindowType type); - -Q_SIGNALS: -    void pageCreated(WebPage *); -}; - -#endif  | 
