From 31a5737c61c4ed09cec4ad82a3fb964aca9de3ca Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sat, 22 Nov 2025 10:38:46 +0100 Subject: [PATCH] Avoid disabling off-the-record profile Hangouts extension with Qt 6.10.1 Otherwise this results in a crash, see #8785 --- .../browser/webengine/webenginesettings.py | 11 ++++++++++ tests/end2end/test_invocations.py | 20 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 599111196..b272eab19 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -431,6 +431,17 @@ def _maybe_disable_hangouts_extension(profile: QWebEngineProfile) -> None: except AttributeError: return # added in QtWebEngine 6.10 + qtwe_versions = version.qtwebengine_versions(avoid_init=True) + if ( + qtwe_versions.webengine == utils.VersionNumber(6, 10, 1) + and profile.isOffTheRecord() + ): + # WORKAROUND for https://github.com/qutebrowser/qutebrowser/issues/8785 + log.misc.warning( + "Not disabling Hangouts extension on private profile to avoid " + "QtWebEngine crash with Qt 6.10.1") + return + assert ext_manager is not None # mypy for info in ext_manager.extensions(): if info.id() == pakjoy.HANGOUTS_EXT_ID: diff --git a/tests/end2end/test_invocations.py b/tests/end2end/test_invocations.py index 5f5e70faf..b5e1f08bf 100644 --- a/tests/end2end/test_invocations.py +++ b/tests/end2end/test_invocations.py @@ -21,6 +21,7 @@ import pytest from qutebrowser.qt.core import QProcess, QPoint from helpers import testutils +from end2end.fixtures import quteprocess from qutebrowser.utils import qtutils, utils, version @@ -612,6 +613,25 @@ def test_service_worker_workaround( assert not service_worker_dir.exists() +def test_disable_hangouts_extension_crash( + quteproc_new: quteprocess.QuteProc, + request: pytest.FixtureRequest, + webengine_versions: version.WebEngineVersions, +): + """Make sure disabling the Hangouts extension doesn't crash.""" + args = _base_args(request.config) + [ + '--temp-basedir', + '-s', 'qt.workarounds.disable_hangouts_extension', 'true', + ] + quteproc_new.start(args) + if webengine_versions.webengine == utils.VersionNumber(6, 10, 1): + line = quteproc_new.wait_for(message="Not disabling Hangouts extension *") + line.expected = True + + quteproc_new.send_cmd(':quit') + quteproc_new.wait_for_quit() + + @pytest.mark.parametrize('store', [True, False]) def test_cookies_store(quteproc_new, request, short_tmpdir, store): # Start test process