summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-12-03 14:27:36 +0100
committerFlorian Bruhin <me@the-compiler.org>2020-12-03 14:27:36 +0100
commitaa43c6a09e93ddd09cd80b9f49898e81357189fa (patch)
tree68bc486f6d646c964fc38c9f30ae9bfad3811d82
parenta85b8a61c4e733ae374fc28f3ec96cd082bfd673 (diff)
parent1f67527662a076aa0a3caf5348f9ba6b663f4a0e (diff)
downloadqutebrowser-aa43c6a09e93ddd09cd80b9f49898e81357189fa.tar.gz
qutebrowser-aa43c6a09e93ddd09cd80b9f49898e81357189fa.zip
Merge remote-tracking branch 'origin/pr/5917'
-rw-r--r--qutebrowser/browser/webengine/darkmode.py6
-rw-r--r--qutebrowser/config/qtargs.py10
-rw-r--r--tests/end2end/test_invocations.py15
-rw-r--r--tests/unit/browser/webengine/test_darkmode.py20
-rw-r--r--tests/unit/config/test_qtargs.py22
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