summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2022-09-11 11:32:00 +1200
committertoofar <toofar@spalge.com>2022-09-11 17:22:50 +1200
commit647b74197a779e00cae1847654796581df28a7b0 (patch)
treed199fa5165066ec8d491ff409dae2eee021aae61
parent9e1dfacef73279d6a950d4b0c474367c275d3f42 (diff)
downloadqutebrowser-647b74197a779e00cae1847654796581df28a7b0.tar.gz
qutebrowser-647b74197a779e00cae1847654796581df28a7b0.zip
mypy: move conditionals for CertificateErrorWrapper into class
Get rid of the per-backend classes and move the backend specific conditionals into a common class. Sadly it seems mypy isn't clever enough to reason ignore a class it should know is never used. Possibly it looks at them at parse time. Probably putting the whole class definitions into conditionals would do it but I'm not sure if I want to go down that route for such a small example. Hopefully there aren't too many more of these.
-rw-r--r--qutebrowser/browser/webengine/certificateerror.py77
1 files changed, 21 insertions, 56 deletions
diff --git a/qutebrowser/browser/webengine/certificateerror.py b/qutebrowser/browser/webengine/certificateerror.py
index 7ee69640f..5484d921d 100644
--- a/qutebrowser/browser/webengine/certificateerror.py
+++ b/qutebrowser/browser/webengine/certificateerror.py
@@ -32,23 +32,36 @@ class CertificateErrorWrapper(usertypes.AbstractCertificateErrorWrapper):
"""A wrapper over a QWebEngineCertificateError.
- Base code shared between Qt 5 and 6 implementations.
+ Support both Qt 5 and 6.
"""
def __init__(self, error: QWebEngineCertificateError) -> None:
super().__init__()
self._error = error
self.ignore = False
- self._validate()
-
- def _validate(self) -> None:
- raise NotImplementedError
def __str__(self) -> str:
- raise NotImplementedError
+ if machinery.IS_QT5:
+ return self._error.errorDescription()
+ else:
+ return self._error.description()
def _type(self) -> Any: # QWebEngineCertificateError.Type or .Error
- raise NotImplementedError
+ 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(
@@ -68,54 +81,6 @@ class CertificateErrorWrapper(usertypes.AbstractCertificateErrorWrapper):
raise usertypes.UndeferrableError("PyQt bug")
-class CertificateErrorWrapperQt5(CertificateErrorWrapper):
-
- """QWebEngineCertificateError handling for Qt 5 API."""
-
- def _validate(self) -> None:
- assert machinery.IS_QT5
-
- def __str__(self) -> str:
- return self._error.errorDescription()
-
- def _type(self) -> Any:
- return self._error.error()
-
- def reject_certificate(self) -> None:
- super().reject_certificate()
- self._error.rejectCertificate()
-
- def accept_certificate(self) -> None:
- super().accept_certificate()
- self._error.ignoreCertificateError()
-
-
-class CertificateErrorWrapperQt6(CertificateErrorWrapper):
-
- """QWebEngineCertificateError handling for Qt 6 API."""
-
- def _validate(self) -> None:
- assert machinery.IS_QT6
-
- def __str__(self) -> str:
- return self._error.description()
-
- def _type(self) -> Any:
- return self._error.type()
-
- def reject_certificate(self) -> None:
- super().reject_certificate()
- self._error.rejectCertificate()
-
- def accept_certificate(self) -> None:
- super().accept_certificate()
- self._error.acceptCertificate()
-
-
def create(error: QWebEngineCertificateError) -> CertificateErrorWrapper:
"""Factory function picking the right class based on Qt version."""
- if machinery.IS_QT5:
- return CertificateErrorWrapperQt5(error)
- elif machinery.IS_QT6:
- return CertificateErrorWrapperQt6(error)
- raise utils.Unreachable
+ return CertificateErrorWrapper(error)