Merge branch 'Kingdread-issue-1535'
This commit is contained in:
commit
4054992583
@ -70,6 +70,7 @@ Fixed
|
|||||||
- Fixed a crash when entering `:-- ` in the commandline
|
- Fixed a crash when entering `:-- ` in the commandline
|
||||||
- Fixed `:debug-console` with PyQt 5.6
|
- Fixed `:debug-console` with PyQt 5.6
|
||||||
- Fixed qutebrowser not starting when `sys.stderr` is `None`
|
- Fixed qutebrowser not starting when `sys.stderr` is `None`
|
||||||
|
- Fixed crash when cancelling a download which belongs to a MHTML download
|
||||||
|
|
||||||
v0.6.2
|
v0.6.2
|
||||||
------
|
------
|
||||||
|
@ -345,7 +345,7 @@ class _Downloader:
|
|||||||
self.pending_downloads.add((url, item))
|
self.pending_downloads.add((url, item))
|
||||||
item.finished.connect(functools.partial(self._finished, url, item))
|
item.finished.connect(functools.partial(self._finished, url, item))
|
||||||
item.error.connect(functools.partial(self._error, url, item))
|
item.error.connect(functools.partial(self._error, url, item))
|
||||||
item.cancelled.connect(functools.partial(self._error, url, item))
|
item.cancelled.connect(functools.partial(self._cancelled, url, item))
|
||||||
|
|
||||||
def _finished(self, url, item):
|
def _finished(self, url, item):
|
||||||
"""Callback when a single asset is downloaded.
|
"""Callback when a single asset is downloaded.
|
||||||
@ -418,6 +418,20 @@ class _Downloader:
|
|||||||
return
|
return
|
||||||
self._finish_file()
|
self._finish_file()
|
||||||
|
|
||||||
|
def _cancelled(self, url, item):
|
||||||
|
"""Callback when a download is cancelled by the user.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
url: The original url of the asset as QUrl.
|
||||||
|
item: The DownloadItem given by the DownloadManager.
|
||||||
|
"""
|
||||||
|
# This callback is called before _finished, so there's no need to
|
||||||
|
# remove the item or close the fileobject.
|
||||||
|
log.downloads.debug("MHTML download cancelled by user: {}".format(url))
|
||||||
|
# Write an empty file instead
|
||||||
|
item.fileobj.seek(0)
|
||||||
|
item.fileobj.truncate()
|
||||||
|
|
||||||
def _finish_file(self):
|
def _finish_file(self):
|
||||||
"""Save the file to the filename given in __init__."""
|
"""Save the file to the filename given in __init__."""
|
||||||
if self._finished_file:
|
if self._finished_file:
|
||||||
|
14
tests/end2end/data/downloads/issue1535.html
Normal file
14
tests/end2end/data/downloads/issue1535.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>test case for issue 1535</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Cancelling a download that belongs to a mhtml download.</p>
|
||||||
|
<p>See also <a href="https://github.com/The-Compiler/qutebrowser/issues/1535">GitHub</a></p>
|
||||||
|
<!--
|
||||||
|
Use drip so we have a chance to cancel the download before
|
||||||
|
it finishes
|
||||||
|
-->
|
||||||
|
<img src="/drip?numbytes=128&duration=2">
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -126,6 +126,14 @@ Feature: Downloading things from a website.
|
|||||||
Then "cancelled" should be logged
|
Then "cancelled" should be logged
|
||||||
And "cancelled" should be logged
|
And "cancelled" should be logged
|
||||||
|
|
||||||
|
# https://github.com/The-Compiler/qutebrowser/issues/1535
|
||||||
|
Scenario: Cancelling a MHTML download (issue 1535)
|
||||||
|
When I open data/downloads/issue1535.html
|
||||||
|
And I run :download --mhtml
|
||||||
|
And I wait for "fetch: PyQt5.QtCore.QUrl('http://localhost:*/drip?numbytes=128&duration=2') -> drip" in the log
|
||||||
|
And I run :download-cancel
|
||||||
|
Then no crash should happen
|
||||||
|
|
||||||
## :download-delete
|
## :download-delete
|
||||||
|
|
||||||
Scenario: Deleting a download
|
Scenario: Deleting a download
|
||||||
|
Loading…
Reference in New Issue
Block a user