File indexing completed on 2025-03-09 04:54:40

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "mailwebenginepage.h"
0007 #include <QFontDatabase>
0008 #include <QFontInfo>
0009 #include <QWebEngineProfile>
0010 #include <QWebEngineSettings>
0011 
0012 using namespace MessageViewer;
0013 
0014 MailWebEnginePage::MailWebEnginePage(QObject *parent)
0015     : WebEngineViewer::WebEnginePage(parent)
0016 {
0017     initialize();
0018 }
0019 
0020 void MailWebEnginePage::initialize()
0021 {
0022     const bool enableElement = false;
0023     settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, enableElement);
0024     settings()->setAttribute(QWebEngineSettings::PluginsEnabled, enableElement);
0025     settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, enableElement);
0026     settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, enableElement);
0027     settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, enableElement);
0028     settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, enableElement);
0029     // We need to activate in qt6 otherwise it can't load external url.
0030     settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
0031     // We need to activate it in qt5.15 otherwise we can't load local css file and co
0032     // settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, enableElement);
0033     settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, enableElement);
0034     settings()->setAttribute(QWebEngineSettings::HyperlinkAuditingEnabled, enableElement);
0035     settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, enableElement);
0036     settings()->setAttribute(QWebEngineSettings::WebGLEnabled, enableElement);
0037     settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, enableElement);
0038     settings()->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, enableElement);
0039     settings()->setAttribute(QWebEngineSettings::WebGLEnabled, enableElement);
0040 
0041     settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, enableElement);
0042     settings()->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, enableElement);
0043     settings()->setAttribute(QWebEngineSettings::PdfViewerEnabled, enableElement);
0044     settings()->setAttribute(QWebEngineSettings::NavigateOnDropEnabled, enableElement);
0045     profile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
0046     profile()->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
0047 
0048     const QFontInfo font(QFontDatabase::systemFont(QFontDatabase::GeneralFont));
0049     settings()->setFontFamily(QWebEngineSettings::StandardFont, font.family());
0050     settings()->setFontSize(QWebEngineSettings::DefaultFontSize, font.pixelSize());
0051     connect(this, &QWebEnginePage::featurePermissionRequested, this, &MailWebEnginePage::slotFeaturePermissionRequested);
0052 }
0053 
0054 void MailWebEnginePage::setPrintElementBackground(bool printElementBackground)
0055 {
0056     settings()->setAttribute(QWebEngineSettings::PrintElementBackgrounds, printElementBackground);
0057 }
0058 
0059 void MailWebEnginePage::slotFeaturePermissionRequested(const QUrl &url, QWebEnginePage::Feature feature)
0060 {
0061     // Denied all permissions.
0062     setFeaturePermission(url, feature, QWebEnginePage::PermissionDeniedByUser);
0063 }
0064 
0065 #include "moc_mailwebenginepage.cpp"