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:
"
"- QtWebKit: {webkit_error}"
"
- QtWebEngine: {webengine_error}"
- "
".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