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"