From 38387fcc68f8b645bf1591ffde3e986e4c82d787 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sun, 7 Apr 2013 12:45:15 +0200 Subject: Workaround about private browsing Use a unique QNAM for private browsing. This lets private windows share navigation info. I guess the "optimus workaround" should be creating this "per window". But I think this way it's easier and enough (to be a workaround...) BUG: 317565 --- src/webtab/networkaccessmanager.cpp | 19 +++++++++++++++++++ src/webtab/networkaccessmanager.h | 4 ++++ src/webtab/webpage.cpp | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/webtab/networkaccessmanager.cpp b/src/webtab/networkaccessmanager.cpp index 8e1394ca..ae3c44f7 100644 --- a/src/webtab/networkaccessmanager.cpp +++ b/src/webtab/networkaccessmanager.cpp @@ -106,6 +106,23 @@ static void hideBlockedElements(const QUrl& url, QWebElementCollection& collecti // ---------------------------------------------------------------------------------------------- +QNetworkAccessManager *NetworkAccessManager::s_privateAccessManager = 0; + + +QNetworkAccessManager *NetworkAccessManager::privateAccessManager() +{ + if (s_privateAccessManager == 0) + { + s_privateAccessManager = new QNetworkAccessManager(); + } + + return s_privateAccessManager; +} + + +// ---------------------------------------------------------------------------------------------- + + NetworkAccessManager::NetworkAccessManager(QObject *parent) : AccessManager(parent) { @@ -183,3 +200,5 @@ void NetworkAccessManager::applyHidingBlockedElements(bool ok) Q_FOREACH(const QUrl & url, urls) hideBlockedElements(url, collection); } + + diff --git a/src/webtab/networkaccessmanager.h b/src/webtab/networkaccessmanager.h index 3bf45e18..809d69f7 100644 --- a/src/webtab/networkaccessmanager.h +++ b/src/webtab/networkaccessmanager.h @@ -49,6 +49,8 @@ class REKONQ_TESTS_EXPORT NetworkAccessManager : public KIO::Integration::Access public: explicit NetworkAccessManager(QObject *parent); + static QNetworkAccessManager *privateAccessManager(); + protected: virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0); @@ -58,6 +60,8 @@ private Q_SLOTS: private: QMultiHash m_blockedRequests; QByteArray _acceptLanguage; + + static QNetworkAccessManager *s_privateAccessManager; }; #endif // NETWORKACCESSMANAGER_H diff --git a/src/webtab/webpage.cpp b/src/webtab/webpage.cpp index 6274b882..479997e4 100644 --- a/src/webtab/webpage.cpp +++ b/src/webtab/webpage.cpp @@ -141,7 +141,7 @@ WebPage::WebPage(QWidget *parent, bool isPrivateBrowsing) // The problem is basically cookie related. This way we lose some features in private // browsing mode, but we ensure PRIVACY! This change cannot be reverted until a proper // fix for KIO (or the right workaround for rekonq) will be found. - QNetworkAccessManager *manager = new QNetworkAccessManager(this); + QNetworkAccessManager *manager = NetworkAccessManager::privateAccessManager(); setNetworkAccessManager(manager); // ----- last stuffs -- cgit v1.2.1