summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/webengine/certificateerror.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/webengine/certificateerror.py')
-rw-r--r--qutebrowser/browser/webengine/certificateerror.py42
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")