diff options
author | Ted Morse <ekpneo@users.noreply.github.com> | 2020-11-28 21:27:11 -0800 |
---|---|---|
committer | Ted Morse <ekpneo@users.noreply.github.com> | 2020-11-28 22:58:32 -0800 |
commit | 314c81b24eb9f9457ccdb5c682d718cf24f24a76 (patch) | |
tree | 02505664c17ee749c3a78f67dfe014ece3514ed2 | |
parent | 6a9f3d6cf55d7863b9b650aece2ab081e46bfc61 (diff) | |
download | qutebrowser-314c81b24eb9f9457ccdb5c682d718cf24f24a76.tar.gz qutebrowser-314c81b24eb9f9457ccdb5c682d718cf24f24a76.zip |
Use blink-setting for colorscheme on Qt 5.15+
On Qt 5.15+, `--force-dark-mode` does not set the preferred colorscheme.
A blink-setting is used instead to set the preferred colorscheme.
The `--force-dark-mode` flag is only set for Qt 5.14. All later versions
will use the blink-setting flag.
-rw-r--r-- | qutebrowser/browser/webengine/darkmode.py | 4 | ||||
-rw-r--r-- | qutebrowser/config/qtargs.py | 10 | ||||
-rw-r--r-- | tests/helpers/utils.py | 3 | ||||
-rw-r--r-- | tests/unit/browser/webengine/test_darkmode.py | 13 | ||||
-rw-r--r-- | tests/unit/config/test_qtargs.py | 18 |
5 files changed, 37 insertions, 11 deletions
diff --git a/qutebrowser/browser/webengine/darkmode.py b/qutebrowser/browser/webengine/darkmode.py index 630a7bf9e..5ae079392 100644 --- a/qutebrowser/browser/webengine/darkmode.py +++ b/qutebrowser/browser/webengine/darkmode.py @@ -264,6 +264,10 @@ def _variant() -> Variant: def settings() -> Iterator[Tuple[str, str]]: """Get necessary blink settings to configure dark mode for QtWebEngine.""" + if (qtutils.version_check('5.15', compiled=False) and + config.val.colors.webpage.prefers_color_scheme_dark): + yield "preferredColorScheme", "1" + if not config.val.colors.webpage.darkmode.enabled: return diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py index 8ab93c904..663296bbc 100644 --- a/qutebrowser/config/qtargs.py +++ b/qutebrowser/config/qtargs.py @@ -203,12 +203,18 @@ def _qtwebengine_settings_args() -> Iterator[str]: } } - referrer_setting = settings['content.headers.referer'] - if qtutils.version_check('5.14', compiled=False): + if (qtutils.version_check('5.14', compiled=False) and + not qtutils.version_check('5.15', compiled=False)): + # In Qt 5.14, `--force-dark-mode` is used to set the preferred + # colorscheme. In Qt 5.15, this is handled by a blink-setting + # instead. settings['colors.webpage.prefers_color_scheme_dark'] = { True: '--force-dark-mode', False: None, } + + referrer_setting = settings['content.headers.referer'] + if qtutils.version_check('5.14', compiled=False): # Starting with Qt 5.14, this is handled via --enable-features referrer_setting['same-domain'] = None else: diff --git a/tests/helpers/utils.py b/tests/helpers/utils.py index 2c275bf15..3b5ee0ab6 100644 --- a/tests/helpers/utils.py +++ b/tests/helpers/utils.py @@ -44,6 +44,9 @@ ON_CI = 'CI' in os.environ qt514 = pytest.mark.skipif( not qtutils.version_check('5.14'), reason="Needs Qt 5.14 or newer") +qt515 = pytest.mark.skipif( + not qtutils.version_check('5.15'), reason="Needs Qt 5.15 or newer") + class PartialCompareOutcome: diff --git a/tests/unit/browser/webengine/test_darkmode.py b/tests/unit/browser/webengine/test_darkmode.py index 3e62000d2..0c39cf95c 100644 --- a/tests/unit/browser/webengine/test_darkmode.py +++ b/tests/unit/browser/webengine/test_darkmode.py @@ -32,6 +32,19 @@ def patch_backend(monkeypatch): monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebEngine) +@pytest.mark.parametrize('enabled, expected', [ + # Disabled or nothing set + (False, []), + + # Enabled in configuration + (True, [("preferredColorScheme", "1")]), +]) +@utils.qt515 +def test_colorscheme(config_stub, monkeypatch, enabled, expected): + config_stub.set_obj('colors.webpage.prefers_color_scheme_dark', enabled) + assert list(darkmode.settings()) == expected + + @pytest.mark.parametrize('settings, expected', [ # Disabled ({}, []), diff --git a/tests/unit/config/test_qtargs.py b/tests/unit/config/test_qtargs.py index 051956a00..d26a8ab50 100644 --- a/tests/unit/config/test_qtargs.py +++ b/tests/unit/config/test_qtargs.py @@ -289,20 +289,20 @@ class TestQtArgs: else: assert arg in args - @pytest.mark.parametrize('dark, new_qt, added', [ - (True, True, True), - (True, False, False), - (False, True, False), - (False, False, False), + @pytest.mark.parametrize('dark, qt_version, added', [ + (True, "5.13", False), + (True, "5.14", True), + (True, "5.15", False), + (False, "5.13", False), + (False, "5.14", False), + (False, "5.15", False), ]) @utils.qt514 def test_prefers_color_scheme_dark(self, config_stub, monkeypatch, parser, - dark, new_qt, added): + dark, qt_version, added): monkeypatch.setattr(qtargs.objects, 'backend', usertypes.Backend.QtWebEngine) - monkeypatch.setattr(qtargs.qtutils, 'version_check', - lambda version, exact=False, compiled=True: - new_qt) + monkeypatch.setattr(qtargs.qtutils, 'qVersion', lambda: qt_version) config_stub.val.colors.webpage.prefers_color_scheme_dark = dark |