diff options
Diffstat (limited to 'qutebrowser/browser/webengine/certificateerror.py')
-rw-r--r-- | qutebrowser/browser/webengine/certificateerror.py | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/qutebrowser/browser/webengine/certificateerror.py b/qutebrowser/browser/webengine/certificateerror.py index 4df7ce8ab..0dbd91ccb 100644 --- a/qutebrowser/browser/webengine/certificateerror.py +++ b/qutebrowser/browser/webengine/certificateerror.py @@ -19,27 +19,54 @@ """Wrapper over a QWebEngineCertificateError.""" -from PyQt5.QtCore import QUrl -from PyQt5.QtWebEngineWidgets import QWebEngineCertificateError +from typing import Any + +from qutebrowser.qt import machinery +from qutebrowser.qt.core import QUrl +from qutebrowser.qt.webenginecore import QWebEngineCertificateError from qutebrowser.utils import usertypes, utils, debug class CertificateErrorWrapper(usertypes.AbstractCertificateErrorWrapper): - """A wrapper over a QWebEngineCertificateError.""" + """A wrapper over a QWebEngineCertificateError. + + Support both Qt 5 and 6. + """ def __init__(self, error: QWebEngineCertificateError) -> None: + super().__init__() self._error = error self.ignore = False def __str__(self) -> str: - return self._error.errorDescription() + if machinery.IS_QT5: + return self._error.errorDescription() + else: + return self._error.description() + + def _type(self) -> Any: # QWebEngineCertificateError.Type or .Error + if machinery.IS_QT5: + return self._error.error() + else: + return self._error.type() + + def reject_certificate(self) -> None: + super().reject_certificate() + self._error.rejectCertificate() + + def accept_certificate(self) -> None: + super().accept_certificate() + if machinery.IS_QT5: + self._error.ignoreCertificateError() + else: + self._error.acceptCertificate() def __repr__(self) -> str: return utils.get_repr( self, - error=debug.qenum_key(QWebEngineCertificateError, self._error.error()), + error=debug.qenum_key(QWebEngineCertificateError, self._type()), string=str(self)) def url(self) -> QUrl: @@ -47,3 +74,8 @@ class CertificateErrorWrapper(usertypes.AbstractCertificateErrorWrapper): def is_overridable(self) -> bool: return self._error.isOverridable() + + def defer(self) -> None: + # WORKAROUND for https://www.riverbankcomputing.com/pipermail/pyqt/2022-April/044585.html + # (PyQt 5.15.6, 6.2.3, 6.3.0) + raise usertypes.UndeferrableError("PyQt bug") |