diff options
Diffstat (limited to 'src/analyzer')
-rw-r--r-- | src/analyzer/analyzerpanel.cpp | 95 | ||||
-rw-r--r-- | src/analyzer/analyzerpanel.h | 66 | ||||
-rw-r--r-- | src/analyzer/networkanalyzer.cpp | 237 | ||||
-rw-r--r-- | src/analyzer/networkanalyzer.h | 79 |
4 files changed, 0 insertions, 477 deletions
diff --git a/src/analyzer/analyzerpanel.cpp b/src/analyzer/analyzerpanel.cpp deleted file mode 100644 index 5f9fc00d..00000000 --- a/src/analyzer/analyzerpanel.cpp +++ /dev/null @@ -1,95 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2010-2011 by Matthieu Gicquel <matgic78 at gmail dot com> -* Copyright (C) 2010-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 "analyzerpanel.h" -#include "analyzerpanel.moc" - -// Local Includes -#include "mainwindow.h" -#include "networkanalyzer.h" -#include "networkaccessmanager.h" -#include "webtab.h" -#include "webview.h" -#include "webpage.h" - -// KDE Includes -#include "KAction" - - -NetworkAnalyzerPanel::NetworkAnalyzerPanel(const QString &title, QWidget *parent) - : QDockWidget(title, parent) - , _viewer(new NetworkAnalyzer(this)) -{ - setObjectName("networkAnalyzerDock"); - setWidget(_viewer); -} - - -void NetworkAnalyzerPanel::closeEvent(QCloseEvent *event) -{ - Q_UNUSED(event); - toggle(false); -} - - -MainWindow* NetworkAnalyzerPanel::mainWindow() -{ - return qobject_cast<MainWindow *>(parentWidget()); -} - - -void NetworkAnalyzerPanel::toggle(bool enable) -{ - mainWindow()->actionByName("net_analyzer")->setChecked(enable); - WebPage *page = mainWindow()->currentTab()->page(); - NetworkAccessManager *manager = qobject_cast<NetworkAccessManager *>(page->networkAccessManager()); - - page->enableNetworkAnalyzer(enable); - - if (enable) - { - connect(page, SIGNAL(loadStarted()), _viewer, SLOT(clear())); - connect(manager, SIGNAL(networkData(QNetworkAccessManager::Operation, QNetworkRequest, QNetworkReply*)), - _viewer, SLOT(addRequest(QNetworkAccessManager::Operation, QNetworkRequest, QNetworkReply*))); - } - else - { - disconnect(page, SIGNAL(loadStarted()), _viewer, SLOT(clear())); - disconnect(manager, SIGNAL(networkData(QNetworkAccessManager::Operation, QNetworkRequest, QNetworkReply*)), - _viewer, SLOT(addRequest(QNetworkAccessManager::Operation, QNetworkRequest, QNetworkReply*))); - } - - setVisible(enable); -} - - -void NetworkAnalyzerPanel::changeCurrentPage() -{ - bool enable = mainWindow()->currentTab()->page()->hasNetworkAnalyzerEnabled(); - toggle(enable); -} diff --git a/src/analyzer/analyzerpanel.h b/src/analyzer/analyzerpanel.h deleted file mode 100644 index 591e5947..00000000 --- a/src/analyzer/analyzerpanel.h +++ /dev/null @@ -1,66 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2010-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 ANALYZER_PANEL_H -#define ANALYZER_PANEL_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// Qt Includes -#include <QDockWidget> - -// Forward Declarations -class MainWindow; -class NetworkAnalyzer; - - -/** - Docked network analyzer - behaviour : hide/show by tab, not globally -*/ -class REKONQ_TESTS_EXPORT NetworkAnalyzerPanel : public QDockWidget -{ - Q_OBJECT - -public: - NetworkAnalyzerPanel(const QString &title, QWidget *parent); - -public Q_SLOTS: - void toggle(bool enable); - void changeCurrentPage(); - -protected: - virtual void closeEvent(QCloseEvent *event); - - MainWindow *mainWindow(); - -private: - NetworkAnalyzer *_viewer; -}; - -#endif // NET_ANALYZER_PANEL_H diff --git a/src/analyzer/networkanalyzer.cpp b/src/analyzer/networkanalyzer.cpp deleted file mode 100644 index 61ab69a5..00000000 --- a/src/analyzer/networkanalyzer.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009-2010 by Richard J. Moore <rich@kde.org> -* Copyright (C) 2010-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 "networkanalyzer.h" -#include "networkanalyzer.moc" - -// KDE Includes -#include <KAction> -#include <klocalizedstring.h> -#include <KMenu> -#include <KIcon> -#include <KPassivePopup> - -// Qt Includes -#include <QTreeWidget> -#include <QVBoxLayout> -#include <QHeaderView> -#include <QLabel> -#include <QApplication> -#include <QSignalMapper> -#include <QClipboard> - -#include <QNetworkReply> -#include <QNetworkRequest> - - -NetworkAnalyzer::NetworkAnalyzer(QWidget *parent) - : QWidget(parent) - , _mapper(new QSignalMapper(this)) - , _requestList(new QTreeWidget(this)) -{ - QStringList headers; - headers << i18n("Method") << i18n("URL") << i18n("Response") << i18n("Length") << i18n("Content Type") << i18n("Info"); - _requestList->setHeaderLabels(headers); - - _requestList->header()->setResizeMode(0, QHeaderView::Interactive); - _requestList->header()->setResizeMode(1, QHeaderView::Interactive); - _requestList->header()->setResizeMode(2, QHeaderView::Interactive); - _requestList->header()->setResizeMode(3, QHeaderView::Interactive); - _requestList->header()->setResizeMode(4, QHeaderView::Interactive); - - _requestList->setAlternatingRowColors(true); - - QVBoxLayout *lay = new QVBoxLayout(this); - lay->addWidget(_requestList); - - _requestList->setContextMenuPolicy(Qt::CustomContextMenu); - connect(_mapper, SIGNAL(mapped(QObject*)), this, SLOT(requestFinished(QObject*))); - connect(_requestList, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(showItemDetails(QTreeWidgetItem*))); - connect(_requestList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(popupContextMenu(QPoint))); -} - - -void NetworkAnalyzer::popupContextMenu(const QPoint& pos) -{ - if (_requestList->topLevelItemCount() >= 1) - { - KMenu menu(_requestList); - KAction *copy; - copy = new KAction(KIcon("edit-copy"), i18n("Copy URL"), this); - connect(copy, SIGNAL(triggered(bool)), this, SLOT(copyURL())); - menu.addAction(copy); - menu.exec(mapToGlobal(pos)); - } -} - -void NetworkAnalyzer::copyURL() -{ - QClipboard *clipboard = QApplication::clipboard(); - clipboard->setText(_requestList->currentItem()->text(1)); -} - -void NetworkAnalyzer::addRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QNetworkReply *reply) -{ - // Add to list of requests - QStringList cols; - switch (op) - { - case QNetworkAccessManager::HeadOperation: - cols << QL1S("HEAD"); - break; - case QNetworkAccessManager::GetOperation: - cols << QL1S("GET"); - break; - case QNetworkAccessManager::PutOperation: - cols << QL1S("PUT"); - break; - case QNetworkAccessManager::PostOperation: - cols << QL1S("POST"); - break; - case QNetworkAccessManager::DeleteOperation: - cols << QL1S("DELETE"); - break; - case QNetworkAccessManager::CustomOperation: - cols << QL1S("CUSTOM"); - break; - - default: - kDebug() << "Unknown network operation"; - } - cols << req.url().toString(); - cols << i18n("Pending"); - - QTreeWidgetItem *item = new QTreeWidgetItem(cols); - _requestList->addTopLevelItem(item); - - // Add to maps - _requestMap.insert(reply, req); - _itemMap.insert(reply, item); - _itemRequestMap.insert(item, req); - - _mapper->setMapping(reply, reply); - connect(reply, SIGNAL(finished()), _mapper, SLOT(map())); - - _requestList->header()->resizeSections(QHeaderView::ResizeToContents); -} - - -void NetworkAnalyzer::clear() -{ - _requestMap.clear(); - _itemMap.clear(); - _itemReplyMap.clear(); - _itemRequestMap.clear(); - _requestList->clear(); -} - - -void NetworkAnalyzer::requestFinished(QObject *replyObject) -{ - QNetworkReply *reply = qobject_cast<QNetworkReply *>(replyObject); - if (!reply) - { - kDebug() << "Failed to downcast reply"; - return; - } - - QTreeWidgetItem *item = _itemMap[reply]; - if (!item) - { - kDebug() << "No Item mapped. Returning..."; - return; - } - - // Record the reply headers - QList<QByteArray> headerValues; - Q_FOREACH(const QByteArray & header, reply->rawHeaderList()) - { - headerValues += reply->rawHeader(header); - } - - QPair< QList<QByteArray>, QList<QByteArray> > replyHeaders; - replyHeaders.first = reply->rawHeaderList(); - replyHeaders.second = headerValues; - _itemReplyMap[item] = replyHeaders; - - // Display the request - int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); - QString reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString(); - item->setText(2, i18n("%1 %2", status, reason)); - - QString length = reply->header(QNetworkRequest::ContentLengthHeader).toString(); - item->setText(3, length); - - QString contentType = reply->header(QNetworkRequest::ContentTypeHeader).toString(); - item->setText(4, contentType); - - if (status == 302) - { - QUrl target = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); - item->setText(5, i18n("Redirect: %1", target.toString())); - } -} - - -void NetworkAnalyzer::showItemDetails(QTreeWidgetItem *item) -{ - // Show request details - QString details; - - QNetworkRequest req = _itemRequestMap[item]; - details += i18n("<h3>Request Details</h3>"); - details += QL1S("<ul>"); - Q_FOREACH(const QByteArray & header, req.rawHeaderList()) - { - details += QL1S("<li>"); - details += QL1S(header); - details += QL1S(": "); - details += QL1S(req.rawHeader(header)); - details += QL1S("</li>"); - } - details += QL1S("</ul>"); - - QPair< QList<QByteArray>, QList<QByteArray> > replyHeaders = _itemReplyMap[item]; - details += i18n("<h3>Response Details</h3>"); - details += QL1S("<ul>"); - for (int i = 0; i < replyHeaders.first.count(); i++) - { - details += QL1S("<li>"); - details += QL1S(replyHeaders.first[i]); - details += QL1S(": "); - details += QL1S(replyHeaders.second[i]); - details += QL1S("</li>"); - } - details += QL1S("</ul>"); - -// QLabel *label = new QLabel(details, this); -// KPassivePopup *popup = new KPassivePopup(this); -// popup->setView(label); -// popup->show(_requestList->mapToGlobal(_requestList->pos())); - KPassivePopup::message(details, this); -} diff --git a/src/analyzer/networkanalyzer.h b/src/analyzer/networkanalyzer.h deleted file mode 100644 index af1e1145..00000000 --- a/src/analyzer/networkanalyzer.h +++ /dev/null @@ -1,79 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009-2010 by Richard J. Moore <rich@kde.org> -* Copyright (C) 2010-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 NETWORK_ANALYZER_H -#define NETWORK_ANALYZER_H - - -// Rekonq Includes -#include "rekonq_defines.h" - -// Qt Includes -#include <QWidget> - -#include <QMap> -#include <QList> - -#include <QNetworkAccessManager> - -// Forward Declarations -class QTreeWidgetItem; -class QSignalMapper; -class QTreeWidget; - -class QNetworkReply; -class QNetworkRequest; - - -class NetworkAnalyzer : public QWidget -{ - Q_OBJECT - -public: - NetworkAnalyzer(QWidget *parent = 0); - -private Q_SLOTS: - void addRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &req, QNetworkReply *reply); - - void clear(); - void requestFinished(QObject *replyObject); - void showItemDetails(QTreeWidgetItem *item); - void copyURL(); - void popupContextMenu(const QPoint &pos); - -private: - QMap<QNetworkReply *, QNetworkRequest> _requestMap; - QMap<QTreeWidgetItem *, QNetworkRequest> _itemRequestMap; - QMap<QNetworkReply *, QTreeWidgetItem *> _itemMap; - QMap<QTreeWidgetItem *, QPair< QList<QByteArray>, QList<QByteArray> > > _itemReplyMap; - - QSignalMapper *_mapper; - QTreeWidget *_requestList; -}; - -#endif // NETWORK_ANALYZER_H |