diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2013-04-07 12:45:15 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2013-04-07 12:45:15 +0200 |
commit | 38387fcc68f8b645bf1591ffde3e986e4c82d787 (patch) | |
tree | 750b6051cba4df4ecb0197267ccb7bc2df8dea96 | |
parent | Use kurifilter instead of custom rekonq code. (diff) | |
download | rekonq-38387fcc68f8b645bf1591ffde3e986e4c82d787.tar.xz |
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
-rw-r--r-- | src/webtab/networkaccessmanager.cpp | 19 | ||||
-rw-r--r-- | src/webtab/networkaccessmanager.h | 4 | ||||
-rw-r--r-- | src/webtab/webpage.cpp | 2 |
3 files changed, 24 insertions, 1 deletions
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<QWebFrame*, QUrl> 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 |