From 3eeab7c53488142704e3a5b5a74ae50cc2a93f90 Mon Sep 17 00:00:00 2001 From: Anu Aliyas Date: Thu, 6 Apr 2023 15:34:42 +0200 Subject: Add QWebEngineSettings::DisableReadingFromCanvas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - disables reading from canvas. Fixes: QTBUG-84486 Change-Id: I3e181bfa6e351dea8dfa61f8010bafb94ea8a77d Reviewed-by: Michael BrĂ¼ning --- src/core/api/qwebenginesettings.h | 1 + src/core/doc/src/qwebenginesettings_lgpl.qdoc | 3 +++ src/core/web_engine_settings.cpp | 4 ++++ src/webenginequick/api/qquickwebenginesettings.cpp | 22 ++++++++++++++++++++++ src/webenginequick/api/qquickwebenginesettings_p.h | 4 ++++ 5 files changed, 34 insertions(+) (limited to 'src') diff --git a/src/core/api/qwebenginesettings.h b/src/core/api/qwebenginesettings.h index 09656f670..8cb10f6a7 100644 --- a/src/core/api/qwebenginesettings.h +++ b/src/core/api/qwebenginesettings.h @@ -60,6 +60,7 @@ public: DnsPrefetchEnabled, PdfViewerEnabled, NavigateOnDropEnabled, + DisableReadingFromCanvas, }; enum FontSize { diff --git a/src/core/doc/src/qwebenginesettings_lgpl.qdoc b/src/core/doc/src/qwebenginesettings_lgpl.qdoc index 5cd1e5419..3fdce3ea9 100644 --- a/src/core/doc/src/qwebenginesettings_lgpl.qdoc +++ b/src/core/doc/src/qwebenginesettings_lgpl.qdoc @@ -168,6 +168,9 @@ \value NavigateOnDropEnabled Specifies that navigations can be triggered by dropping URLs on the view. Enabled by default. (Added in Qt 6.4) + \value DisableReadingFromCanvas Specifies that reading from all canvas elements will be disabled. + This setting will have impact on all HTML5 canvas elements irrespective of origin. + Disabled by default. (Added in Qt 6.6) */ /*! diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index 906f9fb72..11adc8d19 100644 --- a/src/core/web_engine_settings.cpp +++ b/src/core/web_engine_settings.cpp @@ -262,6 +262,9 @@ void WebEngineSettings::initDefaults() s_defaultAttributes.insert(QWebEngineSettings::PdfViewerEnabled, false); #endif s_defaultAttributes.insert(QWebEngineSettings::NavigateOnDropEnabled, true); + bool readingFromCanvas = + commandLine->HasSwitch(switches::kDisableReadingFromCanvas); + s_defaultAttributes.insert(QWebEngineSettings::DisableReadingFromCanvas, readingFromCanvas); } if (s_defaultFontFamilies.isEmpty()) { @@ -370,6 +373,7 @@ void WebEngineSettings::applySettingsToWebPreferences(blink::web_pref::WebPrefer prefs->dom_paste_enabled = testAttribute(QWebEngineSettings::JavascriptCanPaste); prefs->dns_prefetching_enabled = testAttribute(QWebEngineSettings::DnsPrefetchEnabled); prefs->navigate_on_drag_drop = testAttribute(QWebEngineSettings::NavigateOnDropEnabled); + prefs->disable_reading_from_canvas = testAttribute(QWebEngineSettings::DisableReadingFromCanvas); // Fonts settings. prefs->standard_font_family_map[blink::web_pref::kCommonScript] = diff --git a/src/webenginequick/api/qquickwebenginesettings.cpp b/src/webenginequick/api/qquickwebenginesettings.cpp index 6d64c1d3b..54407cc2f 100644 --- a/src/webenginequick/api/qquickwebenginesettings.cpp +++ b/src/webenginequick/api/qquickwebenginesettings.cpp @@ -432,6 +432,20 @@ bool QQuickWebEngineSettings::navigateOnDropEnabled() const return d_ptr->testAttribute(QWebEngineSettings::NavigateOnDropEnabled); } +/*! + \qmlproperty bool WebEngineSettings::disableReadingFromCanvas + \since QtWebEngine 6.6 + + Disables JavaScript reading from canvas elements. + This setting will have impact on all HTML5 canvas elements irrespective of origin. + + Disabled by default. + */ +bool QQuickWebEngineSettings::disableReadingFromCanvas() const +{ + return d_ptr->testAttribute(QWebEngineSettings::DisableReadingFromCanvas); +} + /*! \qmlproperty string WebEngineSettings::defaultTextEncoding \since QtWebEngine 1.2 @@ -715,6 +729,14 @@ void QQuickWebEngineSettings::setNavigateOnDropEnabled(bool on) Q_EMIT navigateOnDropEnabledChanged(); } +void QQuickWebEngineSettings::setDisableReadingFromCanvas(bool on) +{ + bool wasOn = d_ptr->testAttribute(QWebEngineSettings::DisableReadingFromCanvas); + d_ptr->setAttribute(QWebEngineSettings::DisableReadingFromCanvas, on); + if (wasOn != on) + Q_EMIT disableReadingFromCanvasChanged(); +} + void QQuickWebEngineSettings::setUnknownUrlSchemePolicy(QQuickWebEngineSettings::UnknownUrlSchemePolicy policy) { QWebEngineSettings::UnknownUrlSchemePolicy oldPolicy = d_ptr->unknownUrlSchemePolicy(); diff --git a/src/webenginequick/api/qquickwebenginesettings_p.h b/src/webenginequick/api/qquickwebenginesettings_p.h index 71081c232..2fed034c1 100644 --- a/src/webenginequick/api/qquickwebenginesettings_p.h +++ b/src/webenginequick/api/qquickwebenginesettings_p.h @@ -57,6 +57,7 @@ class Q_WEBENGINEQUICK_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject { Q_PROPERTY(bool dnsPrefetchEnabled READ dnsPrefetchEnabled WRITE setDnsPrefetchEnabled NOTIFY dnsPrefetchEnabledChanged REVISION(1,7) FINAL) Q_PROPERTY(bool pdfViewerEnabled READ pdfViewerEnabled WRITE setPdfViewerEnabled NOTIFY pdfViewerEnabledChanged REVISION(1,8) FINAL) Q_PROPERTY(bool navigateOnDropEnabled READ navigateOnDropEnabled WRITE setNavigateOnDropEnabled NOTIFY navigateOnDropEnabledChanged REVISION(6,4) FINAL) + Q_PROPERTY(bool disableReadingFromCanvas READ disableReadingFromCanvas WRITE setDisableReadingFromCanvas NOTIFY disableReadingFromCanvasChanged REVISION(6,6) FINAL) QML_NAMED_ELEMENT(WebEngineSettings) QML_ADDED_IN_VERSION(1, 1) QML_EXTRA_VERSION(2, 0) @@ -104,6 +105,7 @@ public: bool dnsPrefetchEnabled() const; bool pdfViewerEnabled() const; bool navigateOnDropEnabled() const; + bool disableReadingFromCanvas() const; void setAutoLoadImages(bool on); void setJavascriptEnabled(bool on); @@ -137,6 +139,7 @@ public: void setDnsPrefetchEnabled(bool on); void setPdfViewerEnabled(bool on); void setNavigateOnDropEnabled(bool on); + void setDisableReadingFromCanvas(bool on); signals: void autoLoadImagesChanged(); @@ -171,6 +174,7 @@ signals: Q_REVISION(1,7) void dnsPrefetchEnabledChanged(); Q_REVISION(1,8) void pdfViewerEnabledChanged(); Q_REVISION(6,4) void navigateOnDropEnabledChanged(); + Q_REVISION(6,6) void disableReadingFromCanvasChanged(); private: explicit QQuickWebEngineSettings(QQuickWebEngineSettings *parentSettings = nullptr); -- cgit v1.2.1