From 1313704802f0bdb84d32ab84ec9e8d4543040108 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 13 Jun 2023 19:32:50 +0200 Subject: qt: Add wrapper info to backendproblem messages --- qutebrowser/misc/backendproblem.py | 14 ++++++++++---- qutebrowser/qt/machinery.py | 4 ++++ tests/unit/test_qt_machinery.py | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 4c0e184ac..7e3f987c4 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -29,6 +29,7 @@ import argparse import dataclasses from typing import Any, Optional, Sequence, Tuple +from qutebrowser.qt import machinery from qutebrowser.qt.core import Qt from qutebrowser.qt.widgets import (QDialog, QPushButton, QHBoxLayout, QVBoxLayout, QLabel, QMessageBox, QWidget) @@ -97,6 +98,8 @@ def _error_text( f"setting the backend = '{other_setting}' option " f"(if you have a config.py file, you'll need to set " f"this manually). {warning}

") + + text += f"

{machinery.INFO.to_html()}

" return text @@ -260,9 +263,11 @@ class _BackendProblemChecker: "

The errors encountered were:

".format( + "

{info}

".format( webkit_error=html.escape(imports.webkit_error), - webengine_error=html.escape(imports.webengine_error))) + webengine_error=html.escape(imports.webengine_error), + info=machinery.INFO.to_html(), + )) errbox = msgbox.msgbox(parent=None, title="No backend library found!", text=text, @@ -328,6 +333,7 @@ class _BackendProblemChecker: """Ask if there are Chromium downgrades or a Qt 5 -> 6 upgrade.""" versions = version.qtwebengine_versions(avoid_init=True) change = configfiles.state.chromium_version_changed + info = f"

{machinery.INFO.to_html()}" if change == configfiles.VersionChange.major: # FIXME:qt6 Remove this before the release, as it typically should # not concern users? @@ -340,7 +346,7 @@ class _BackendProblemChecker: "Chromium data will be invalid and discarded.

" "This affects page data such as cookies, but not data managed by " "qutebrowser, such as your configuration or :open history." - ) + ) + info elif change == configfiles.VersionChange.downgrade: text = ( "Chromium/QtWebEngine downgrade detected:
" @@ -349,7 +355,7 @@ class _BackendProblemChecker: "Data managed by Chromium will be discarded if you continue.

" "This affects page data such as cookies, but not data managed by " "qutebrowser, such as your configuration or :open history." - ) + ) + info else: return diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py index 99b23ec8e..4ef9017be 100644 --- a/qutebrowser/qt/machinery.py +++ b/qutebrowser/qt/machinery.py @@ -12,6 +12,7 @@ Contains selection logic and globals for Qt wrapper selection. import os import sys import enum +import html import argparse import importlib import dataclasses @@ -108,6 +109,9 @@ class SelectionInfo: lines.append(f"selected: {self.wrapper} (via {self.reason.value})") return "\n".join(lines) + def to_html(self) -> str: + return html.escape(str(self)).replace("\n", "
") + def _autoselect_wrapper() -> SelectionInfo: """Autoselect a Qt wrapper. diff --git a/tests/unit/test_qt_machinery.py b/tests/unit/test_qt_machinery.py index 79f21308e..eb2f6fa1e 100644 --- a/tests/unit/test_qt_machinery.py +++ b/tests/unit/test_qt_machinery.py @@ -114,6 +114,7 @@ def test_selectioninfo_set_module(): ) def test_selectioninfo_str(info: machinery.SelectionInfo, expected: str): assert str(info) == expected + assert info.to_html() == expected.replace("\n", "
") @pytest.fixture -- cgit v1.2.3-54-g00ecf