diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-11-23 18:10:02 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-11-23 19:57:20 +0100 |
commit | 63a0803b67344f90f40171f35948dc299d2db826 (patch) | |
tree | 3b1b5bff7abd4527a7a590002bcb80a16d517e68 | |
parent | 451d912bc76fffa5478ce051fa89e101438170e0 (diff) | |
download | qutebrowser-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.py | 16 | ||||
-rw-r--r-- | tests/unit/config/test_qtargs.py | 22 |
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 |