From 714bf5f261c625cf3169f3398e8310e0d08265d5 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 24 Nov 2022 10:05:59 +0100 Subject: Add WebSocket resource type for Qt 6.4 See #7314 --- qutebrowser/browser/webengine/interceptor.py | 11 +++++++++++ qutebrowser/components/braveadblock.py | 1 + qutebrowser/extensions/interceptors.py | 3 ++- tests/unit/components/test_braveadblock.py | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3-54-g00ecf