File indexing completed on 2025-02-16 04:49:25

0001 /*
0002     SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "markdownenginepage.h"
0008 #include <QWebEngineProfile>
0009 #include <QWebEngineSettings>
0010 
0011 MarkdownEnginePage::MarkdownEnginePage(QObject *parent)
0012     : QWebEnginePage(parent)
0013 {
0014     settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, false);
0015     settings()->setAttribute(QWebEngineSettings::PluginsEnabled, false);
0016     settings()->setAttribute(QWebEngineSettings::AutoLoadImages, true);
0017     settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, false);
0018     settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, false);
0019     settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, false);
0020     settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false);
0021     settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
0022     settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, false);
0023     settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, false);
0024     settings()->setAttribute(QWebEngineSettings::WebGLEnabled, false);
0025     settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, false);
0026     settings()->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, false);
0027     settings()->setAttribute(QWebEngineSettings::WebGLEnabled, false);
0028 
0029     settings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, false);
0030     settings()->setAttribute(QWebEngineSettings::AllowRunningInsecureContent, false);
0031 
0032     settings()->setAttribute(QWebEngineSettings::ShowScrollBars, true);
0033     settings()->setAttribute(QWebEngineSettings::AllowWindowActivationFromJavaScript, false);
0034     settings()->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture, false);
0035     settings()->setAttribute(QWebEngineSettings::JavascriptCanPaste, false);
0036     settings()->setAttribute(QWebEngineSettings::WebRTCPublicInterfacesOnly, false);
0037     settings()->setAttribute(QWebEngineSettings::PdfViewerEnabled, false);
0038     profile()->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies);
0039 }
0040 
0041 MarkdownEnginePage::~MarkdownEnginePage() = default;
0042 
0043 bool MarkdownEnginePage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
0044 {
0045     Q_UNUSED(type)
0046     Q_UNUSED(isMainFrame)
0047     if (url.scheme() == QLatin1StringView("data")) {
0048         return true;
0049     }
0050     return false;
0051 }
0052 
0053 #include "moc_markdownenginepage.cpp"