summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-13 12:39:07 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-13 20:27:24 +0100
commit4ceddb01e6dd6de9a3c40d7ca47410514562ef17 (patch)
treeae197c64f80c2c096180c1b46d1cbd58e0c40b67
parent1707607f294222a25ee066008b9cc42ae9756378 (diff)
downloadqutebrowser-4ceddb01e6dd6de9a3c40d7ca47410514562ef17.tar.gz
qutebrowser-4ceddb01e6dd6de9a3c40d7ca47410514562ef17.zip
dataclasses: Use normal class for WebEngineRequest
While we use dataclasses for its base class (interceptors.Request), it causes more problems than it solves here. See #6023
-rw-r--r--qutebrowser/browser/webengine/interceptor.py24
1 files changed, 11 insertions, 13 deletions
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index 652e4b8ef..436e2f7fe 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -33,32 +33,30 @@ from qutebrowser.extensions import interceptors
from qutebrowser.misc import objects
-_WHITELISTED_REQUEST_METHODS: Set[QByteArray] = {
- QByteArray(b'GET'),
- QByteArray(b'HEAD'),
-}
-
-
-@dataclasses.dataclass
class WebEngineRequest(interceptors.Request):
"""QtWebEngine-specific request interceptor functionality."""
- webengine_info: Optional[QWebEngineUrlRequestInfo] = None # FIXME private
- #: If this request has been redirected already
- _redirected: bool = dataclasses.field(init=False, default=False)
+ _WHITELISTED_REQUEST_METHODS = {QByteArray(b'GET'), QByteArray(b'HEAD')}
+
+ def __init__(self, *args, webengine_info, **kwargs):
+ super().__init__(*args, **kwargs)
+ self._webengine_info = webengine_info
+ self._redirected = False
def redirect(self, url: QUrl) -> None:
if self._redirected:
raise interceptors.RedirectException("Request already redirected.")
- if self.webengine_info is None:
+ if self._webengine_info is None:
raise interceptors.RedirectException("Request improperly initialized.")
+
# Redirecting a request that contains payload data is not allowed.
# To be safe, abort on any request not in a whitelist.
- if self.webengine_info.requestMethod() not in _WHITELISTED_REQUEST_METHODS:
+ verb = self._webengine_info.requestMethod()
+ if verb not in self._WHITELISTED_REQUEST_METHODS:
raise interceptors.RedirectException(
"Request method does not support redirection.")
- self.webengine_info.redirect(url)
+ self._webengine_info.redirect(url)
self._redirected = True