summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/browser/webengine/interceptor.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index 3f7618974..e95ec92b0 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -27,7 +27,7 @@ from PyQt5.QtWebEngineCore import (QWebEngineUrlRequestInterceptor,
from qutebrowser.config import config
from qutebrowser.browser import shared
-from qutebrowser.utils import utils, log, debug
+from qutebrowser.utils import utils, log, debug, qtutils
from qutebrowser.extensions import interceptors
@@ -112,17 +112,23 @@ class RequestInterceptor(QWebEngineUrlRequestInterceptor):
def install(self, profile):
"""Install the interceptor on the given QWebEngineProfile."""
- profile.setRequestInterceptor(self)
+ try:
+ # Qt >= 5.13, GUI thread
+ profile.setUrlRequestInterceptor(self)
+ except AttributeError:
+ # Qt <= 5.12, IO thread
+ profile.setRequestInterceptor(self)
# Gets called in the IO thread -> showing crash window will fail
- @utils.prevent_exceptions(None)
+ @utils.prevent_exceptions(None, not qtutils.version_check('5.13'))
def interceptRequest(self, info):
"""Handle the given request.
Reimplementing this virtual function and setting the interceptor on a
- profile makes it possible to intercept URL requests. This function is
- executed on the IO thread, and therefore running long tasks here will
- block networking.
+ profile makes it possible to intercept URL requests.
+
+ On Qt < 5.13, this function is executed on the IO thread, and therefore
+ running long tasks here will block networking.
info contains the information about the URL request and will track
internally whether its members have been altered.