diff --git a/www-client/qutebrowser/files/qutebrowser-3.6.1-qt6.10.1.patch b/www-client/qutebrowser/files/qutebrowser-3.6.1-qt6.10.1.patch new file mode 100644 index 0000000000000..5a72167fd72fc --- /dev/null +++ b/www-client/qutebrowser/files/qutebrowser-3.6.1-qt6.10.1.patch @@ -0,0 +1,121 @@ +https://github.com/qutebrowser/qutebrowser/issues/8785 +https://github.com/qutebrowser/qutebrowser/commit/0c34bf2f791b1 +--- a/qutebrowser/browser/webengine/webenginesettings.py ++++ b/qutebrowser/browser/webengine/webenginesettings.py +@@ -459,12 +459,16 @@ + + ++def default_qt_profile() -> QWebEngineProfile: ++ """Get the default profile from Qt.""" ++ if machinery.IS_QT6: ++ return QWebEngineProfile("Default") ++ else: ++ return QWebEngineProfile.defaultProfile() ++ ++ + def _init_default_profile(): + """Init the default QWebEngineProfile.""" + global default_profile +- +- if machinery.IS_QT6: +- default_profile = QWebEngineProfile("Default") +- else: +- default_profile = QWebEngineProfile.defaultProfile() ++ default_profile = default_qt_profile() + assert not default_profile.isOffTheRecord() + +--- a/qutebrowser/utils/version.py ++++ b/qutebrowser/utils/version.py +@@ -931,10 +931,16 @@ + if ( + objects.backend == usertypes.Backend.QtWebEngine +- and "avoid-chromium-init" not in objects.debug_flags + and machinery.IS_QT6 # mypy; TODO early return once Qt 5 is dropped + ): +- from qutebrowser.qt.webenginecore import QWebEngineProfile +- profile = QWebEngineProfile.defaultProfile() +- assert profile is not None # mypy ++ from qutebrowser.browser.webengine import webenginesettings ++ lines.append("WebExtensions:") ++ ++ if webenginesettings.default_profile: ++ profile = webenginesettings.default_profile ++ elif "avoid-chromium-init" in objects.debug_flags: ++ lines[0] += " unknown (avoiding init)" ++ return lines ++ else: ++ profile = webenginesettings.default_qt_profile() + + try: +@@ -945,5 +951,4 @@ + assert ext_manager is not None # mypy + +- lines.append("WebExtensions:") + if not ext_manager.extensions(): + lines[0] += " none" +--- a/tests/unit/utils/test_version.py ++++ b/tests/unit/utils/test_version.py +@@ -1450,9 +1450,7 @@ + if machinery.IS_QT6: + monkeypatch.setattr( +- QWebEngineProfile, +- "defaultProfile", +- lambda: FakeExtensionProfile( +- FakeExtensionManager([FakeExtensionInfo("ext1")]) +- ), ++ webenginesettings, ++ "default_profile", ++ FakeExtensionProfile(FakeExtensionManager([FakeExtensionInfo("ext1")])), + ) + substitutions['webextensions'] = ( +@@ -1593,18 +1591,33 @@ + + def test_qtwebkit(self, monkeypatch: pytest.MonkeyPatch) -> None: ++ assert webenginesettings.default_profile is None # -> default_qt_profile() used + monkeypatch.setattr(version.objects, "backend", usertypes.Backend.QtWebKit) +- monkeypatch.setattr(QWebEngineProfile, "defaultProfile", lambda: 1/0) ++ monkeypatch.setattr(webenginesettings, "default_qt_profile", lambda: 1 / 0) + assert not version._webengine_extensions() + + def test_avoid_chromium_init(self, monkeypatch: pytest.MonkeyPatch) -> None: ++ assert webenginesettings.default_profile is None # -> default_qt_profile() used + monkeypatch.setattr(version.objects, "backend", usertypes.Backend.QtWebEngine) + monkeypatch.setattr(objects, "debug_flags", {"avoid-chromium-init"}) +- monkeypatch.setattr(QWebEngineProfile, "defaultProfile", lambda: 1/0) +- assert not version._webengine_extensions() ++ monkeypatch.setattr(webenginesettings, "default_qt_profile", lambda: 1 / 0) ++ assert version._webengine_extensions() == [ ++ "WebExtensions: unknown (avoiding init)" ++ ] + + def test_no_extension_manager(self, monkeypatch: pytest.MonkeyPatch) -> None: +- monkeypatch.setattr(QWebEngineProfile, "defaultProfile", object) ++ assert webenginesettings.default_profile is None # -> default_qt_profile() used ++ monkeypatch.setattr(webenginesettings, "default_qt_profile", object) + assert not version._webengine_extensions() + ++ @pytest.mark.parametrize("avoid_init", [True, False]) ++ def test_preexisting_profile(self, monkeypatch: pytest.MonkeyPatch, avoid_init: bool) -> None: ++ """Test that we use the pre-existing profile if available.""" ++ monkeypatch.setattr(webenginesettings, "default_profile", FakeExtensionProfile(FakeExtensionManager([]))) ++ if avoid_init: ++ monkeypatch.setattr(objects, "debug_flags", {"avoid-chromium-init"}) ++ ++ result = version._webengine_extensions() ++ assert result == ["WebExtensions: none"] ++ + @pytest.mark.parametrize( + "extensions, expected", +@@ -1667,9 +1680,7 @@ + ) -> None: + monkeypatch.setattr( +- QWebEngineProfile, +- "defaultProfile", +- lambda: FakeExtensionProfile( +- FakeExtensionManager(extensions) +- ), ++ webenginesettings, ++ "default_profile", ++ FakeExtensionProfile(FakeExtensionManager(extensions)), + ) + assert version._webengine_extensions() == expected diff --git a/www-client/qutebrowser/qutebrowser-3.6.1.ebuild b/www-client/qutebrowser/qutebrowser-3.6.1-r1.ebuild similarity index 99% rename from www-client/qutebrowser/qutebrowser-3.6.1.ebuild rename to www-client/qutebrowser/qutebrowser-3.6.1-r1.ebuild index 170101720577e..3e70ebcadf806 100644 --- a/www-client/qutebrowser/qutebrowser-3.6.1.ebuild +++ b/www-client/qutebrowser/qutebrowser-3.6.1-r1.ebuild @@ -66,6 +66,10 @@ fi EPYTEST_PLUGINS=( hypothesis pytest-{bdd,mock,qt,rerunfailures,xvfb} ) distutils_enable_tests pytest +PATCHES=( + "${FILESDIR}"/${P}-qt6.10.1.patch +) + src_prepare() { distutils-r1_src_prepare