diff --git a/src/articleviewer-ng/webengine/articleviewerwebengine.cpp b/src/articleviewer-ng/webengine/articleviewerwebengine.cpp --- a/src/articleviewer-ng/webengine/articleviewerwebengine.cpp +++ b/src/articleviewer-ng/webengine/articleviewerwebengine.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -57,17 +58,38 @@ using namespace Akregator; +class AkregatorRequestInterceptor : public QWebEngineUrlRequestInterceptor +{ + Q_OBJECT + +public: + explicit AkregatorRequestInterceptor(QObject *parent = nullptr) : QWebEngineUrlRequestInterceptor(parent) { + } + + void interceptRequest(QWebEngineUrlRequestInfo &info) override { + Q_UNUSED(info); + } +}; + 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); + // Needed to workaround crash in webengine, see https://bugreports.qt.io/browse/QTBUG-72260 + auto webEngineUrlInterceptor = new AkregatorRequestInterceptor(); + profile->setRequestInterceptor(webEngineUrlInterceptor); + connect(profile, &QObject::destroyed, webEngineUrlInterceptor, [&webEngineUrlInterceptor] { + webEngineUrlInterceptor->deleteLater(); + }); + setPage(mPageEngine); connect(this, &ArticleViewerWebEngine::showContextMenu, this, &ArticleViewerWebEngine::slotShowContextMenu); @@ -494,3 +516,5 @@ interface->setUrl(mCurrentUrl); interface->execute(); } + +#include "articleviewerwebengine.moc"