summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-11-24 10:05:59 +0100
committerFlorian Bruhin <me@the-compiler.org>2022-11-24 14:12:28 +0100
commit714bf5f261c625cf3169f3398e8310e0d08265d5 (patch)
treec2ba3b8cedb5fd19db7b6bbf16ca220e9c93db19
parenta497ce69be7de4bcf44db1ef40ec19f27dcfecd6 (diff)
downloadqutebrowser-714bf5f261c625cf3169f3398e8310e0d08265d5.tar.gz
qutebrowser-714bf5f261c625cf3169f3398e8310e0d08265d5.zip
Add WebSocket resource type for Qt 6.4
See #7314
-rw-r--r--qutebrowser/browser/webengine/interceptor.py11
-rw-r--r--qutebrowser/components/braveadblock.py1
-rw-r--r--qutebrowser/extensions/interceptors.py3
-rw-r--r--tests/unit/components/test_braveadblock.py5
4 files changed, 19 insertions, 1 deletions
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index a3370a599..bd1feaad1 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -114,6 +114,17 @@ class RequestInterceptor(QWebEngineUrlRequestInterceptor):
QWebEngineUrlRequestInfo.ResourceType.ResourceTypeNavigationPreloadSubFrame:
interceptors.ResourceType.preload_sub_frame,
}
+ new_types = {
+ "WebSocket": interceptors.ResourceType.websocket, # added in Qt 6.4
+ }
+ for qt_name, qb_value in new_types.items():
+ qt_value = getattr(
+ QWebEngineUrlRequestInfo.ResourceType,
+ f"ResourceType{qt_name}",
+ None,
+ )
+ if qt_value is not None:
+ self._resource_types[qt_value] = qb_value
def install(self, profile):
"""Install the interceptor on the given QWebEngineProfile."""
diff --git a/qutebrowser/components/braveadblock.py b/qutebrowser/components/braveadblock.py
index d963df88e..82a59b482 100644
--- a/qutebrowser/components/braveadblock.py
+++ b/qutebrowser/components/braveadblock.py
@@ -109,6 +109,7 @@ _RESOURCE_TYPE_STRINGS = {
ResourceType.plugin_resource: "other",
ResourceType.preload_main_frame: "other",
ResourceType.preload_sub_frame: "other",
+ ResourceType.websocket: "websocket",
ResourceType.unknown: "other",
None: "",
}
diff --git a/qutebrowser/extensions/interceptors.py b/qutebrowser/extensions/interceptors.py
index ae537492e..2a9cfb647 100644
--- a/qutebrowser/extensions/interceptors.py
+++ b/qutebrowser/extensions/interceptors.py
@@ -30,7 +30,7 @@ class ResourceType(enum.Enum):
"""Possible request types that can be received.
Currently corresponds to the QWebEngineUrlRequestInfo Enum:
- https://doc.qt.io/qt-5/qwebengineurlrequestinfo.html#ResourceType-enum
+ https://doc.qt.io/qt-6/qwebengineurlrequestinfo.html#ResourceType-enum
"""
main_frame = 0
@@ -54,6 +54,7 @@ class ResourceType(enum.Enum):
# 18 is "preload", deprecated in Chromium
preload_main_frame = 19
preload_sub_frame = 20
+ websocket = 254
unknown = 255
diff --git a/tests/unit/components/test_braveadblock.py b/tests/unit/components/test_braveadblock.py
index d776e94be..7dcffc91f 100644
--- a/tests/unit/components/test_braveadblock.py
+++ b/tests/unit/components/test_braveadblock.py
@@ -430,3 +430,8 @@ def test_corrupt_cache_handling(ad_blocker, message_mock, caplog):
assert msg.text == (
"Reading adblock filter data failed (corrupted data?). "
"Please run :adblock-update.")
+
+
+def test_resource_type_strings_complete():
+ defined = set(braveadblock._RESOURCE_TYPE_STRINGS) - {None}
+ assert defined == set(ResourceType)