Avoid disabling off-the-record profile Hangouts extension with Qt 6.10.1

Otherwise this results in a crash, see #8785
This commit is contained in:
Florian Bruhin 2025-11-22 10:38:46 +01:00
parent 8ae5e3d83b
commit 31a5737c61
2 changed files with 31 additions and 0 deletions

View File

@ -431,6 +431,17 @@ def _maybe_disable_hangouts_extension(profile: QWebEngineProfile) -> None:
except AttributeError: except AttributeError:
return # added in QtWebEngine 6.10 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 assert ext_manager is not None # mypy
for info in ext_manager.extensions(): for info in ext_manager.extensions():
if info.id() == pakjoy.HANGOUTS_EXT_ID: if info.id() == pakjoy.HANGOUTS_EXT_ID:

View File

@ -21,6 +21,7 @@ import pytest
from qutebrowser.qt.core import QProcess, QPoint from qutebrowser.qt.core import QProcess, QPoint
from helpers import testutils from helpers import testutils
from end2end.fixtures import quteprocess
from qutebrowser.utils import qtutils, utils, version from qutebrowser.utils import qtutils, utils, version
@ -612,6 +613,25 @@ def test_service_worker_workaround(
assert not service_worker_dir.exists() 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]) @pytest.mark.parametrize('store', [True, False])
def test_cookies_store(quteproc_new, request, short_tmpdir, store): def test_cookies_store(quteproc_new, request, short_tmpdir, store):
# Start test process # Start test process