diff options
author | Florian Bruhin <me@the-compiler.org> | 2019-02-17 17:53:17 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-02-17 17:53:17 +0100 |
commit | 04764b9c39ef082784c7d5ca4457b4647deff7f8 (patch) | |
tree | 18b295d942de07d46a8e84d8a2de27877fcf276e | |
parent | d97a186992fee93e137820e8e942ca3993680e37 (diff) | |
download | qutebrowser-04764b9c39ef082784c7d5ca4457b4647deff7f8.tar.gz qutebrowser-04764b9c39ef082784c7d5ca4457b4647deff7f8.zip |
Adjust filename suffix matching for Qt 5.12
https://codereview.qt-project.org/#/c/247517/
https://chromium-review.googlesource.com/c/chromium/src/+/1278137
https://cs.chromium.org/chromium/src/base/time/time_to_iso8601.cc
Fixes #4478
Fixes #4580
-rw-r--r-- | qutebrowser/browser/webengine/webenginedownloads.py | 16 | ||||
-rw-r--r-- | tests/unit/browser/webengine/test_webenginedownloads.py | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/qutebrowser/browser/webengine/webenginedownloads.py b/qutebrowser/browser/webengine/webenginedownloads.py index 6dde42070..077ea775b 100644 --- a/qutebrowser/browser/webengine/webenginedownloads.py +++ b/qutebrowser/browser/webengine/webenginedownloads.py @@ -180,7 +180,21 @@ def _get_suggested_filename(path): See https://bugreports.qt.io/browse/QTBUG-56978 """ filename = os.path.basename(path) - filename = re.sub(r'\([0-9]+\)(?=\.|$)', '', filename) + + suffix_re = re.compile(r""" + \ ? # Optional space between filename and suffix + ( + # Numerical suffix + \([0-9]+\) + | + # ISO-8601 suffix + # https://cs.chromium.org/chromium/src/base/time/time_to_iso8601.cc + \ -\ \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z + ) + (?=\.|$) # Begin of extension, or filename without extension + """, re.VERBOSE) + + filename = suffix_re.sub('', filename) if not qtutils.version_check('5.9', compiled=False): # https://bugreports.qt.io/browse/QTBUG-58155 filename = urllib.parse.unquote(filename) diff --git a/tests/unit/browser/webengine/test_webenginedownloads.py b/tests/unit/browser/webengine/test_webenginedownloads.py index a34962522..4ca447f56 100644 --- a/tests/unit/browser/webengine/test_webenginedownloads.py +++ b/tests/unit/browser/webengine/test_webenginedownloads.py @@ -30,6 +30,8 @@ from helpers import utils @pytest.mark.parametrize('path, expected', [ (os.path.join('subfolder', 'foo'), 'foo'), ('foo(1)', 'foo'), + ('foo (1)', 'foo'), + ('foo - 1970-01-01T00:00:00.000Z', 'foo'), ('foo(a)', 'foo(a)'), ('foo1', 'foo1'), pytest.param('foo%20bar', 'foo bar', marks=utils.qt58), |