summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-11-23 18:10:02 +0100
committerFlorian Bruhin <me@the-compiler.org>2020-11-23 19:57:20 +0100
commit63a0803b67344f90f40171f35948dc299d2db826 (patch)
tree3b1b5bff7abd4527a7a590002bcb80a16d517e68
parent451d912bc76fffa5478ce051fa89e101438170e0 (diff)
downloadqutebrowser-63a0803b67344f90f40171f35948dc299d2db826.tar.gz
qutebrowser-63a0803b67344f90f40171f35948dc299d2db826.zip
Fix content.headers.referer = 'same-domain' with Qt 5.14+
Fixes #5892 (together with the next commit for 'never')
-rw-r--r--qutebrowser/config/qtargs.py16
-rw-r--r--tests/unit/config/test_qtargs.py22
2 files changed, 30 insertions, 8 deletions
diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py
index 0550b1c7f..6786d7973 100644
--- a/qutebrowser/config/qtargs.py
+++ b/qutebrowser/config/qtargs.py
@@ -109,6 +109,16 @@ def _qtwebengine_enabled_features(feature_flags: Sequence[str]) -> Iterator[str]
if config.val.scrolling.bar == 'overlay':
yield 'OverlayScrollbar'
+ if (qtutils.version_check('5.14', compiled=False) and
+ config.val.content.headers.referer == 'same-domain'):
+ # Handling of reduced-referrer-granularity in Chromium 76+
+ # https://chromium-review.googlesource.com/c/chromium/src/+/1572699
+ #
+ # Note that this is removed entirely (and apparently the default) starting with
+ # Chromium 89 (Qt 5.15.x or 6.x):
+ # https://chromium-review.googlesource.com/c/chromium/src/+/2545444
+ yield 'ReducedReferrerGranularity'
+
def _qtwebengine_args(
namespace: argparse.Namespace,
@@ -192,15 +202,19 @@ def _qtwebengine_settings_args() -> Iterator[str]:
'content.headers.referer': {
'always': None,
'never': '--no-referrers',
- 'same-domain': '--reduced-referrer-granularity',
}
}
+ referrer_setting = settings['content.headers.referer']
if qtutils.version_check('5.14', compiled=False):
settings['colors.webpage.prefers_color_scheme_dark'] = {
True: '--force-dark-mode',
False: None,
}
+ # Starting with Qt 5.14, this is handled via --enable-features
+ referrer_setting['same-domain'] = None
+ else:
+ referrer_setting['same-domain'] = '--reduced-referrer-granularity'
for setting, args in sorted(settings.items()):
arg = args[config.instance.get(setting)]
diff --git a/tests/unit/config/test_qtargs.py b/tests/unit/config/test_qtargs.py
index af1d8a1ef..a2af26800 100644
--- a/tests/unit/config/test_qtargs.py
+++ b/tests/unit/config/test_qtargs.py
@@ -252,14 +252,21 @@ class TestQtArgs:
else:
assert arg in args
- @pytest.mark.parametrize('referer, arg', [
- ('always', None),
- ('never', '--no-referrers'),
- ('same-domain', '--reduced-referrer-granularity'),
+ @pytest.mark.parametrize('qt_version, referer, arg', [
+ ('5.15', 'always', None),
+ ('5.15', 'never', '--no-referrers'),
+ ('5.15', 'same-domain', '--enable-features=ReducedReferrerGranularity'),
+ ('5.14', 'same-domain', '--enable-features=ReducedReferrerGranularity'),
+ ('5.13', 'same-domain', '--reduced-referrer-granularity'),
])
- def test_referer(self, config_stub, monkeypatch, parser, referer, arg):
- monkeypatch.setattr(qtargs.objects, 'backend',
- usertypes.Backend.QtWebEngine)
+ def test_referer(self, config_stub, monkeypatch, parser, qt_version, referer, arg):
+ monkeypatch.setattr(qtargs.objects, 'backend', usertypes.Backend.QtWebEngine)
+ monkeypatch.setattr(qtargs.qtutils, 'qVersion', lambda: qt_version)
+
+ # Avoid WebRTC pipewire feature
+ monkeypatch.setattr(qtargs.utils, 'is_linux', False)
+ # Avoid overlay scrollbar feature
+ config_stub.val.scrolling.bar = 'never'
config_stub.val.content.headers.referer = referer
parsed = parser.parse_args([])
@@ -268,6 +275,7 @@ class TestQtArgs:
if arg is None:
assert '--no-referrers' not in args
assert '--reduced-referrer-granularity' not in args
+ assert '--enable-features=ReducedReferrerGranularity' not in args
else:
assert arg in args