From ce1b675a1ef02e78b9ff0beb0e0ca6b42b516f34 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 7 Nov 2016 10:59:25 +0100 Subject: [PATCH] Implement :download/hints via QtNetwork --- qutebrowser/browser/commands.py | 15 ++++++++++++--- qutebrowser/browser/hints.py | 11 +++++------ tests/end2end/features/test_downloads_bdd.py | 4 ---- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 606ed2ec1..78059d7ba 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -1294,8 +1294,7 @@ class CommandDispatcher: except inspector.WebInspectorError as e: raise cmdexc.CommandError(e) - @cmdutils.register(instance='command-dispatcher', scope='window', - backend=usertypes.Backend.QtWebKit) + @cmdutils.register(instance='command-dispatcher', scope='window') @cmdutils.argument('dest_old', hide=True) def download(self, url=None, dest_old=None, *, mhtml_=False, dest=None): """Download a given URL, or current page if no URL given. @@ -1335,10 +1334,16 @@ class CommandDispatcher: self._download_mhtml(dest) else: tab = self._current_widget() + # FIXME:qtwebengine have a proper API for this # pylint: disable=protected-access - qnam = tab._widget.page().networkAccessManager() + try: + qnam = tab._widget.page().networkAccessManager() + except AttributeError: + # QtWebEngine + qnam = None # pylint: enable=protected-access + if dest is None: target = None else: @@ -1352,6 +1357,10 @@ class CommandDispatcher: dest: The file path to write the download to. """ tab = self._current_widget() + if tab.backend == usertypes.Backend.QtWebEngine: + raise cmdexc.CommandError("Download --mhtml is not implemented " + "with QtWebEngine yet") + if dest is None: suggested_fn = self._current_title() + ".mht" suggested_fn = utils.sanitize_filename(suggested_fn) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 89f327fbf..e92a73642 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -285,7 +285,11 @@ class HintActions: # FIXME:qtwebengine get a proper API for this # pylint: disable=protected-access - qnam = elem._elem.webFrame().page().networkAccessManager() + try: + qnam = elem._elem.webFrame().page().networkAccessManager() + except AttributeError: + # QtWebEngine + qnam = None # pylint: enable=protected-access # FIXME:qtwebengine do this with QtWebEngine downloads? @@ -663,11 +667,6 @@ class HintManager(QObject): tab = tabbed_browser.currentWidget() if tab is None: raise cmdexc.CommandError("No WebView available yet!") - if (tab.backend == usertypes.Backend.QtWebEngine and - target == Target.download): - message.error("The download target is not available yet with " - "QtWebEngine.") - return mode_manager = objreg.get('mode-manager', scope='window', window=self._win_id) diff --git a/tests/end2end/features/test_downloads_bdd.py b/tests/end2end/features/test_downloads_bdd.py index 4b9476f04..65ccf1f3e 100644 --- a/tests/end2end/features/test_downloads_bdd.py +++ b/tests/end2end/features/test_downloads_bdd.py @@ -25,10 +25,6 @@ import pytest_bdd as bdd bdd.scenarios('downloads.feature') -pytestmark = pytest.mark.qtwebengine_todo("Downloads not implemented yet", - run=False) - - PROMPT_MSG = ("Asking question text=* " "title='Save file to:'>, *")