diff --git a/qutebrowser/test/utils/test_misc_content_disposition.py b/qutebrowser/test/utils/test_misc_content_disposition.py index 20e3b9e37..2ee793f7b 100644 --- a/qutebrowser/test/utils/test_misc_content_disposition.py +++ b/qutebrowser/test/utils/test_misc_content_disposition.py @@ -251,6 +251,8 @@ class AttachmentTests(AttachmentTestCase): """ self._check_ignored('attachment; filename=foo,bar.html') + # With relaxed=True we accept that + @unittest.expectedFailure def test_attwithasciifilenamenqs(self): """'attachment', specifying a filename of foo.html. @@ -881,6 +883,16 @@ class RFC2047EncodingTests(AttachmentTestCase): '=?ISO-8859-1?Q?foo-=E4.html?=') +class OurTests(AttachmentTestCase): + + """Our own tests, not based on http://greenbytes.de/tech/tc2231/""" + + def test_att_double_space(self): + """'attachment' with double space in the filename.""" + self._check_filename('attachment; filename="foo bar.html"', + 'foo bar.html') + + def setUpModule(): """Mock out logging in utils.""" utils.log = Mock() diff --git a/qutebrowser/utils/misc.py b/qutebrowser/utils/misc.py index d749cb266..abc4eea04 100644 --- a/qutebrowser/utils/misc.py +++ b/qutebrowser/utils/misc.py @@ -322,7 +322,7 @@ def parse_content_disposition(reply): # os.path.basename later. try: content_disposition = rfc6266.parse_headers( - bytes(reply.rawHeader('Content-Disposition'))) + bytes(reply.rawHeader('Content-Disposition')), relaxed=True) filename = content_disposition.filename_unsafe except UnicodeDecodeError as e: log.misc.warning("Error while getting filename: {}: {}".format(