diff --git a/src/articleviewer-ng/webengine/articleviewerwebengine.cpp b/src/articleviewer-ng/webengine/articleviewerwebengine.cpp index b70c1453..33a2df80 100644 --- a/src/articleviewer-ng/webengine/articleviewerwebengine.cpp +++ b/src/articleviewer-ng/webengine/articleviewerwebengine.cpp @@ -17,85 +17,89 @@ Boston, MA 02110-1301, USA. */ #include "articleviewerwebengine.h" #include "akregator_debug.h" #include "articleviewerwebenginepage.h" #include "webengine/urlhandlerwebenginemanager.h" #include #include "actionmanager.h" #include "akregatorconfig.h" #include "actions/actions.h" #include "urlhandler/webengine/urlhandlerwebengine.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include +#include #include #include #include #include #include using namespace Akregator; +Q_GLOBAL_STATIC_WITH_ARGS(AkregatorRequestInterceptor, sInterceptor, (nullptr)) + ArticleViewerWebEngine::ArticleViewerWebEngine(KActionCollection *ac, QWidget *parent) : WebEngineViewer::WebEngineView(parent) , mActionCollection(ac) , mLastButtonClicked(LeftButton) , mViewerPluginToolManager(nullptr) { mNetworkAccessManager = new WebEngineViewer::InterceptorManager(this, ac, this); QWebEngineProfile *profile = QWebEngineProfile::defaultProfile(); mPageEngine = new ArticleViewerWebEnginePage(profile, this); profile->setPersistentCookiesPolicy(QWebEngineProfile::ForcePersistentCookies); + profile->setRequestInterceptor(sInterceptor); setPage(mPageEngine); connect(this, &ArticleViewerWebEngine::showContextMenu, this, &ArticleViewerWebEngine::slotShowContextMenu); setFocusPolicy(Qt::WheelFocus); connect(mPageEngine, &ArticleViewerWebEnginePage::urlClicked, this, &ArticleViewerWebEngine::slotLinkClicked); mWebEngineViewAccessKey = new WebEngineViewer::WebEngineAccessKey(this, this); mWebEngineViewAccessKey->setActionCollection(mActionCollection); connect(mWebEngineViewAccessKey, &WebEngineViewer::WebEngineAccessKey::openUrl, this, &ArticleViewerWebEngine::slotLinkClicked); connect(this, &ArticleViewerWebEngine::loadStarted, this, &ArticleViewerWebEngine::slotLoadStarted); connect(this, &ArticleViewerWebEngine::loadFinished, this, &ArticleViewerWebEngine::slotLoadFinished); connect(page(), &QWebEnginePage::linkHovered, this, &ArticleViewerWebEngine::slotLinkHovered); setContextMenuPolicy(Qt::DefaultContextMenu); mWebShortcutMenuManager = new KIO::KUriFilterSearchProviderActions(this); mShareServiceManager = new PimCommon::ShareServiceUrlManager(this); connect(mShareServiceManager, &PimCommon::ShareServiceUrlManager::serviceUrlSelected, this, &ArticleViewerWebEngine::slotServiceUrlSelected); connect(page(), &QWebEnginePage::audioMutedChanged, this, &ArticleViewerWebEngine::slotWebPageMutedOrAudibleChanged); connect(page(), &QWebEnginePage::recentlyAudibleChanged, this, &ArticleViewerWebEngine::slotWebPageMutedOrAudibleChanged); connect(phishingDatabase(), &WebEngineViewer::LocalDataBaseManager::checkUrlFinished, this, &ArticleViewerWebEngine::slotCheckedUrlFinished); } ArticleViewerWebEngine::~ArticleViewerWebEngine() { } diff --git a/src/articleviewer-ng/webengine/articleviewerwebengine.h b/src/articleviewer-ng/webengine/articleviewerwebengine.h index ed02713c..b1aa2150 100644 --- a/src/articleviewer-ng/webengine/articleviewerwebengine.h +++ b/src/articleviewer-ng/webengine/articleviewerwebengine.h @@ -1,78 +1,94 @@ /* Copyright (c) 2015-2018 Montel Laurent 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) any later version. 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; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef ARTICLEVIEWERWEBENGINE_H #define ARTICLEVIEWERWEBENGINE_H #include #include #include #include #include +#include class KActionCollection; namespace WebEngineViewer { class WebHitTestResult; class WebEngineAccessKey; class InterceptorManager; } namespace MessageViewer { class ViewerPluginToolManager; class ViewerPluginInterface; } namespace PimCommon { class ShareServiceUrlManager; } namespace KIO { class KUriFilterSearchProviderActions; } namespace Akregator { class ArticleViewerWebEnginePage; + + +class AkregatorRequestInterceptor : public QWebEngineUrlRequestInterceptor +{ + Q_OBJECT + +public: + explicit AkregatorRequestInterceptor(QObject *parent) + : QWebEngineUrlRequestInterceptor(parent) {} + virtual ~AkregatorRequestInterceptor() = default; + + void interceptRequest(QWebEngineUrlRequestInfo &info) { Q_UNUSED(info); } +}; + + class AKREGATOR_EXPORT ArticleViewerWebEngine : public WebEngineViewer::WebEngineView { Q_OBJECT public: enum ArticleAction { DeleteAction = 0, MarkAsRead, MarkAsUnRead, MarkAsImportant, SendUrlArticle, SendFileArticle, OpenInExternalBrowser, Share, OpenInBackgroundTab }; explicit ArticleViewerWebEngine(KActionCollection *ac, QWidget *parent); ~ArticleViewerWebEngine() override; void showAboutPage(); void disableIntroduction(); void setArticleAction(ArticleViewerWebEngine::ArticleAction type, const QString &articleId, const QString &feed); void restoreCurrentPosition(); void createViewerPluginToolManager(KActionCollection *ac, QWidget *parent); void execPrintPreviewPage(QPrinter *printer, int timeout); protected: QUrl mCurrentUrl; KActionCollection *mActionCollection = nullptr; PimCommon::ShareServiceUrlManager *mShareServiceManager = nullptr; KIO::KUriFilterSearchProviderActions *mWebShortcutMenuManager = nullptr;