diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-12-03 14:27:36 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-12-03 14:27:36 +0100 |
commit | aa43c6a09e93ddd09cd80b9f49898e81357189fa (patch) | |
tree | 68bc486f6d646c964fc38c9f30ae9bfad3811d82 | |
parent | a85b8a61c4e733ae374fc28f3ec96cd082bfd673 (diff) | |
parent | 1f67527662a076aa0a3caf5348f9ba6b663f4a0e (diff) | |
download | qutebrowser-aa43c6a09e93ddd09cd80b9f49898e81357189fa.tar.gz qutebrowser-aa43c6a09e93ddd09cd80b9f49898e81357189fa.zip |
Merge remote-tracking branch 'origin/pr/5917'
-rw-r--r-- | qutebrowser/browser/webengine/darkmode.py | 6 | ||||
-rw-r--r-- | qutebrowser/config/qtargs.py | 10 | ||||
-rw-r--r-- | tests/end2end/test_invocations.py | 15 | ||||
-rw-r--r-- | tests/unit/browser/webengine/test_darkmode.py | 20 | ||||
-rw-r--r-- | tests/unit/config/test_qtargs.py | 22 |
5 files changed, 62 insertions, 11 deletions
diff --git a/qutebrowser/browser/webengine/darkmode.py b/qutebrowser/browser/webengine/darkmode.py index 630a7bf9e..86b7f8c59 100644 --- a/qutebrowser/browser/webengine/darkmode.py +++ b/qutebrowser/browser/webengine/darkmode.py @@ -264,6 +264,12 @@ 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.2', compiled=False) and + config.val.colors.webpage.prefers_color_scheme_dark): + # In future versions of 'blink', (> Qt 5.15.2) the enumeration has + # changed and this will need to be set to '0' instead. + 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..2136f7e7f 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.2', compiled=False)): + # In Qt 5.14 to 5.15.1, `--force-dark-mode` is used to set the + # preferred colorscheme. In Qt 5.15.2, 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/end2end/test_invocations.py b/tests/end2end/test_invocations.py index e34bd912d..1680a838b 100644 --- a/tests/end2end/test_invocations.py +++ b/tests/end2end/test_invocations.py @@ -417,3 +417,18 @@ def test_referrer(quteproc_new, server, server2, request, value, expected): expected = expected.replace(key, str(val)) assert headers.get('Referer') == expected + + +@pytest.mark.qtwebkit_skip +@utils.qt514 +def test_preferred_colorscheme(request, quteproc_new): + """Make sure the the preferred colorscheme is set.""" + args = _base_args(request.config) + [ + '--temp-basedir', + '-s', 'colors.webpage.prefers_color_scheme_dark', 'true', + ] + quteproc_new.start(args) + + quteproc_new.send_cmd(':jseval ' + 'matchMedia("(prefers-color-scheme: dark)").matches') + quteproc_new.wait_for(message='True') diff --git a/tests/unit/browser/webengine/test_darkmode.py b/tests/unit/browser/webengine/test_darkmode.py index 3e62000d2..cd84526c3 100644 --- a/tests/unit/browser/webengine/test_darkmode.py +++ b/tests/unit/browser/webengine/test_darkmode.py @@ -32,6 +32,26 @@ def patch_backend(monkeypatch): monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebEngine) +@pytest.mark.parametrize('qversion, enabled, expected', [ + # Disabled or nothing set + ("5.14", False, []), + ("5.15.0", False, []), + ("5.15.1", False, []), + ("5.15.2", False, []), + + # Enabled in configuration + ("5.14", True, []), + ("5.15.0", True, []), + ("5.15.1", True, []), + ("5.15.2", True, [("preferredColorScheme", "1")]), +]) +@utils.qt514 +def test_colorscheme(config_stub, monkeypatch, qversion, enabled, expected): + monkeypatch.setattr(darkmode.qtutils, 'qVersion', lambda: qversion) + config_stub.val.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..8ff5b95d3 100644 --- a/tests/unit/config/test_qtargs.py +++ b/tests/unit/config/test_qtargs.py @@ -289,20 +289,24 @@ 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.0", True), + (True, "5.15.1", True), + (True, "5.15.2", False), + (False, "5.13", False), + (False, "5.14", False), + (False, "5.15.0", False), + (False, "5.15.1", False), + (False, "5.15.2", 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 |