netmanager: fix crash when asking with no tab_id
Issue 1413 This happens when the networkmanager is used by something that has no tab_id, like the generic DownloadManager. In this case, we should just skip the webview connection (as it makes no sense) instead of crashing (which is the last thing we want to do).
This commit is contained in:
parent
d2be8a28ca
commit
dcac832f5e
@ -226,9 +226,13 @@ class NetworkManager(QNetworkAccessManager):
|
||||
self.shutting_down.connect(q.abort)
|
||||
if owner is not None:
|
||||
owner.destroyed.connect(q.abort)
|
||||
webview = objreg.get('webview', scope='tab', window=self._win_id,
|
||||
tab=self._tab_id)
|
||||
webview.loadStarted.connect(q.abort)
|
||||
|
||||
# This might be a generic network manager, e.g. one belonging to a
|
||||
# DownloadManager. In this case, just skip the webview thing.
|
||||
if self._tab_id is not None:
|
||||
webview = objreg.get('webview', scope='tab', window=self._win_id,
|
||||
tab=self._tab_id)
|
||||
webview.loadStarted.connect(q.abort)
|
||||
bridge = objreg.get('message-bridge', scope='window',
|
||||
window=self._win_id)
|
||||
bridge.ask(q, blocking=True)
|
||||
|
@ -44,6 +44,14 @@ Feature: Downloading things from a website.
|
||||
And I run :leave-mode
|
||||
Then no crash should happen
|
||||
|
||||
Scenario: Downloading with SSL errors (issue 1413)
|
||||
When I run :debug-clear-ssl-errors
|
||||
And I set network -> ssl-strict to ask
|
||||
And I download a SSL page
|
||||
And I wait for "Entering mode KeyMode.* (reason: question asked)" in the log
|
||||
And I run :prompt-accept
|
||||
Then the error "Download error: SSL handshake failed" should be shown
|
||||
|
||||
Scenario: Retrying a failed download
|
||||
When I run :download http://localhost:(port)/does-not-exist
|
||||
And I wait for the error "Download error: * - server replied: NOT FOUND"
|
||||
@ -162,7 +170,7 @@ Feature: Downloading things from a website.
|
||||
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
|
||||
And I run :download-open with count 1
|
||||
Then the error "Download 1 is not done!" should be shown
|
||||
|
||||
|
||||
## completion -> download-path-suggestion
|
||||
|
||||
Scenario: completion -> download-path-suggestion = path
|
||||
|
@ -41,6 +41,12 @@ def wait_for_download_finished(quteproc):
|
||||
quteproc.wait_for(category='downloads', message='Download finished')
|
||||
|
||||
|
||||
@bdd.when("I download a SSL page")
|
||||
def download_ssl_page(quteproc, ssl_server):
|
||||
quteproc.send_cmd(':download https://localhost:{}/'
|
||||
.format(ssl_server.port))
|
||||
|
||||
|
||||
@bdd.then(bdd.parsers.parse("The downloaded file {filename} should not exist"))
|
||||
def download_should_not_exist(filename, tmpdir):
|
||||
path = tmpdir / filename
|
||||
|
Loading…
Reference in New Issue
Block a user