Messagelib

mailwebenginepage.cpp
1 /*
2  SPDX-FileCopyrightText: 2016-2023 Laurent Montel <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 #include "mailwebenginepage.h"
7 #include <QFontDatabase>
8 #include <QFontInfo>
9 #include <QWebEngineProfile>
10 #include <QWebEngineSettings>
11 
12 using namespace MessageViewer;
13 
14 MailWebEnginePage::MailWebEnginePage(QObject *parent)
15  : WebEngineViewer::WebEnginePage(parent)
16 {
17  initialize();
18 }
19 
20 void MailWebEnginePage::initialize()
21 {
22  const bool enableElement = false;
23  settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, enableElement);
24  settings()->setAttribute(QWebEngineSettings::PluginsEnabled, enableElement);
25  settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, enableElement);
26  settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, enableElement);
27  settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, enableElement);
28  settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, enableElement);
29  settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, enableElement);
30  // We need to activate it in qt5.15 otherwise we can't load local css file and co
31  // settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, enableElement);
32  settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, enableElement);
33  settings()->setAttribute(QWebEngineSettings::HyperlinkAuditingEnabled, enableElement);
34  settings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, enableElement);
35  settings()->setAttribute(QWebEngineSettings::WebGLEnabled, enableElement);
36  settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, enableElement);
37  settings()->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, enableElement);
38  settings()->setAttribute(QWebEngineSettings::WebGLEnabled, enableElement);
39 
40  settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, enableElement);
41  settings()->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, enableElement);
42  settings()->setAttribute(QWebEngineSettings::PdfViewerEnabled, enableElement);
43  profile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
44  profile()->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
45 
46 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
47  const QFontInfo font(QFontDatabase().systemFont(QFontDatabase::GeneralFont));
48 #else
50 #endif
51  settings()->setFontFamily(QWebEngineSettings::StandardFont, font.family());
52  settings()->setFontSize(QWebEngineSettings::DefaultFontSize, font.pixelSize());
53  connect(this, &QWebEnginePage::featurePermissionRequested, this, &MailWebEnginePage::slotFeaturePermissionRequested);
54 }
55 
56 void MailWebEnginePage::setPrintElementBackground(bool printElementBackground)
57 {
58  settings()->setAttribute(QWebEngineSettings::PrintElementBackgrounds, printElementBackground);
59 }
60 
61 void MailWebEnginePage::slotFeaturePermissionRequested(const QUrl &url, QWebEnginePage::Feature feature)
62 {
63  // Denied all permissions.
64  setFeaturePermission(url, feature, QWebEnginePage::PermissionDeniedByUser);
65 }
QFont systemFont(QFontDatabase::SystemFont type)
void initialize(StandardShortcut id)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Mar 22 2023 04:07:14 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.