diff options
Diffstat (limited to 'qutebrowser/browser/qtnetworkdownloads.py')
-rw-r--r-- | qutebrowser/browser/qtnetworkdownloads.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/qutebrowser/browser/qtnetworkdownloads.py b/qutebrowser/browser/qtnetworkdownloads.py index e178fb0e5..f048d293d 100644 --- a/qutebrowser/browser/qtnetworkdownloads.py +++ b/qutebrowser/browser/qtnetworkdownloads.py @@ -202,6 +202,17 @@ class DownloadItem(downloads.AbstractDownloadItem): # Note: self._reply is deleted when the download finishes return self._url + def origin(self) -> QUrl: + if self._reply is None: + return QUrl() + origin = self._reply.request().originatingObject() + try: + return origin.url() + except AttributeError: + # Raised either if origin is None or some object that doesn't + # have its own url. + return QUrl() + def _ensure_can_set_filename(self, filename): if self.fileobj is not None: # pragma: no cover raise ValueError("fileobj was already set! filename: {}, " @@ -549,6 +560,9 @@ class DownloadManager(downloads.AbstractDownloadManager): download = DownloadItem(reply, manager=self) self._init_item(download, auto_remove, suggested_filename) + if download.cancel_for_origin(): + return download + if target is not None: download.set_target(target) return download |