Add an API to get the QNAM of a tab

This commit is contained in:
Florian Bruhin 2016-11-22 11:23:45 +01:00
parent c363982d05
commit 97d23144f7
5 changed files with 17 additions and 21 deletions

View File

@ -727,6 +727,14 @@ class AbstractTab(QWidget):
def set_html(self, html, base_url):
raise NotImplementedError
def networkaccessmanager(self):
"""Get the QNetworkAccessManager for this tab.
This is only implemented for QtWebKit.
For QtWebEngine, always returns None.
"""
raise NotImplementedError
def __repr__(self):
try:
url = utils.elide(self.url().toDisplayString(QUrl.EncodeUnicode),

View File

@ -1332,16 +1332,7 @@ class CommandDispatcher:
elif mhtml_:
self._download_mhtml(dest)
else:
tab = self._current_widget()
# FIXME:qtwebengine have a proper API for this
# pylint: disable=protected-access
try:
qnam = tab._widget.page().networkAccessManager()
except AttributeError:
# QtWebEngine
qnam = None
# pylint: enable=protected-access
qnam = self._current_widget().networkaccessmanager()
if dest is None:
target = None

View File

@ -284,15 +284,7 @@ class HintActions:
else:
prompt = None
# FIXME:qtwebengine get a proper API for this
# pylint: disable=protected-access
try:
qnam = elem._elem.webFrame().page().networkAccessManager()
except AttributeError:
# QtWebEngine
qnam = None
# pylint: enable=protected-access
qnam = context.tab.networkaccessmanager()
# FIXME:qtwebengine do this with QtWebEngine downloads?
download_manager = objreg.get('qtnetwork-download-manager',
scope='window', window=self._win_id)

View File

@ -574,6 +574,9 @@ class WebEngineTab(browsertab.AbstractTab):
# percent encoded content is 2 megabytes minus 30 bytes.
self._widget.setHtml(html, base_url)
def networkaccessmanager(self):
return None
def clear_ssl_errors(self):
raise browsertab.UnsupportedOperationError

View File

@ -657,8 +657,7 @@ class WebKitTab(browsertab.AbstractTab):
return self._widget.title()
def clear_ssl_errors(self):
nam = self._widget.page().networkAccessManager()
nam.clear_all_ssl_errors()
self.networkaccessmanager().clear_all_ssl_errors()
@pyqtSlot()
def _on_history_trigger(self):
@ -669,6 +668,9 @@ class WebKitTab(browsertab.AbstractTab):
def set_html(self, html, base_url):
self._widget.setHtml(html, base_url)
def networkaccessmanager(self):
return self._widget.page().networkAccessManager()
@pyqtSlot()
def _on_frame_load_finished(self):
"""Make sure we emit an appropriate status when loading finished.