diff options
author | toofar <toofar@spalge.com> | 2023-09-23 14:40:22 +1200 |
---|---|---|
committer | toofar <toofar@spalge.com> | 2023-09-27 08:51:23 +1300 |
commit | 5345d534189175a986ae287b3d4a49ecebf7103a (patch) | |
tree | 26102735fe4681a3028858dbf30b49bd0624e5d0 | |
parent | c0be28ebee3e1837aaf3f30ec534ccd6d038f129 (diff) | |
download | qutebrowser-5345d534189175a986ae287b3d4a49ecebf7103a.tar.gz qutebrowser-5345d534189175a986ae287b3d4a49ecebf7103a.zip |
Support wildcard mimes in filepicker workaround too
We've seen it in the wild, so it could happen, and it wasn't hard to add
in the end.
ref: #7866
-rw-r--r-- | qutebrowser/browser/webengine/webview.py | 11 | ||||
-rw-r--r-- | tests/unit/browser/webengine/test_webview.py | 18 |
2 files changed, 24 insertions, 5 deletions
diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index 4fb48c060..61f64724d 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -276,7 +276,16 @@ class WebEnginePage(QWebEnginePage): mimes = {entry for entry in upstream_mimetypes if "/" in entry} python_suffixes = set() for mime in mimes: - python_suffixes.update(mimetypes.guess_all_extensions(mime)) + if mime.endswith("/*"): + python_suffixes.update( + [ + suffix + for suffix, mimetype in mimetypes.types_map.items() + if mimetype.startswith(mime[:-1]) + ] + ) + else: + python_suffixes.update(mimetypes.guess_all_extensions(mime)) return python_suffixes - suffixes def chooseFiles( diff --git a/tests/unit/browser/webengine/test_webview.py b/tests/unit/browser/webengine/test_webview.py index b213713e2..2789dcc9f 100644 --- a/tests/unit/browser/webengine/test_webview.py +++ b/tests/unit/browser/webengine/test_webview.py @@ -65,14 +65,22 @@ def test_enum_mappings(enum_type, naming, mapping): @pytest.fixture def suffix_mocks(monkeypatch): + types_map = { + ".jpg": "image/jpeg", + ".jpe": "image/jpeg", + ".png": "image/png", + ".m4v": "video/mp4", + ".mpg4": "video/mp4", + } + mimetypes_map = {} # mimetype -> [suffixes] map + for suffix, mime in types_map.items(): + mimetypes_map[mime] = mimetypes_map.get(mime, []) + [suffix] + def guess(mime): - mimetypes_map = { - "image/jpeg": [".jpg", ".jpe"], - "video/mp4": [".m4v", ".mpg4"], - } return mimetypes_map.get(mime, []) monkeypatch.setattr(mimetypes, "guess_all_extensions", guess) + monkeypatch.setattr(mimetypes, "types_map", types_map) def version(string): if string == "6.2.3": @@ -95,6 +103,8 @@ EXTRA_SUFFIXES_PARAMS = [ set(), ), # not sure why black reformats this one and not the others (["image/jpeg", "video/mp4"], {".jpg", ".jpe", ".m4v", ".mpg4"}), + (["image/*"], {".jpg", ".jpe", ".png"}), + (["image/*", ".jpg"], {".jpe", ".png"}), ] |