From 21869d149a361c9fe05dff90593ba18b6e42408a Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 4 Dec 2023 14:59:08 +0100 Subject: Support QWebEngineSettings.WebAttribute.ReadingFromCanvasEnabled See #7646 --- doc/changelog.asciidoc | 2 ++ doc/help/settings.asciidoc | 3 ++- qutebrowser/browser/webengine/webenginesettings.py | 6 ++++++ qutebrowser/config/configdata.yml | 5 ++++- qutebrowser/config/qtargs.py | 1 + 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index f18a28814..57570776b 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -41,6 +41,8 @@ Changed - The `colors.webpage.darkmode.threshold.text` setting got renamed to `colors.webpage.darkmode.threshold.foreground`, following a rename in Chromium. +- With Qt 6.6, the `content.canvas_reading` setting now works without a restart + and supports URL patterns. Fixed ~~~~~ diff --git a/doc/help/settings.asciidoc b/doc/help/settings.asciidoc index 95f844b15..b6f61ab03 100644 --- a/doc/help/settings.asciidoc +++ b/doc/help/settings.asciidoc @@ -2085,8 +2085,9 @@ Default: empty === content.canvas_reading Allow websites to read canvas elements. Note this is needed for some websites to work properly. +On QtWebEngine < 6.6, this setting requires a restart and does not support URL patterns, only the global setting is applied. -This setting requires a restart. +This setting supports link:configuring{outfilesuffix}#patterns[URL patterns]. This setting is only available with the QtWebEngine backend. diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 1275edf0b..808e75c30 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -148,6 +148,12 @@ class WebEngineSettings(websettings.AbstractSettings): Attr(QWebEngineSettings.WebAttribute.AutoLoadIconsForPage, converter=lambda val: val != 'never'), } + try: + _ATTRIBUTES['content.canvas_reading'] = Attr( + QWebEngineSettings.WebAttribute.ReadingFromCanvasEnabled) + except AttributeError: + # Added in QtWebEngine 6.6 + pass _FONT_SIZES = { 'fonts.web.size.minimum': diff --git a/qutebrowser/config/configdata.yml b/qutebrowser/config/configdata.yml index d7871c121..cddac7353 100644 --- a/qutebrowser/config/configdata.yml +++ b/qutebrowser/config/configdata.yml @@ -454,12 +454,15 @@ content.canvas_reading: default: true type: Bool backend: QtWebEngine - restart: true + supports_pattern: true desc: >- Allow websites to read canvas elements. Note this is needed for some websites to work properly. + On QtWebEngine < 6.6, this setting requires a restart and does not support + URL patterns, only the global setting is applied. + # Defaults from QWebSettings::QWebSettings() in # qtwebkit/Source/WebKit/qt/Api/qwebsettings.cpp diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py index 85f066ccb..4358a0ece 100644 --- a/qutebrowser/config/qtargs.py +++ b/qutebrowser/config/qtargs.py @@ -294,6 +294,7 @@ _WEBENGINE_SETTINGS: Dict[str, Dict[Any, Optional[_SettingValueType]]] = { }, 'content.canvas_reading': { True: None, + # might be overridden in webenginesettings.py False: '--disable-reading-from-canvas', }, 'content.webrtc_ip_handling_policy': { -- cgit v1.2.3-54-g00ecf