Show a simple error page on loading errors without JS

We can't tell what exactly the error is, but it's surely better than nothing.
This commit is contained in:
Florian Bruhin 2018-02-23 17:29:17 +01:00
parent 98b2b67b8b
commit fc6a0dbe64
2 changed files with 18 additions and 13 deletions

View File

@ -730,6 +730,15 @@ class WebEngineTab(browsertab.AbstractTab):
self.send_event(press_evt)
self.send_event(release_evt)
def _show_error_page(self, url, error):
"""Show an error page in the tab."""
url_string = url.toDisplayString()
error_page = jinja.render(
'error.html',
title="Error loading page: {}".format(url_string),
url=url_string, error=error)
self.set_html(error_page)
@pyqtSlot()
def _on_history_trigger(self):
try:
@ -778,13 +787,7 @@ class WebEngineTab(browsertab.AbstractTab):
sip.assign(authenticator, QAuthenticator())
# pylint: enable=no-member, useless-suppression
except AttributeError:
url_string = url.toDisplayString()
error_page = jinja.render(
'error.html',
title="Error loading page: {}".format(url_string),
url=url_string, error="Proxy authentication required",
icon='')
self.set_html(error_page)
self._show_error_page(url, "Proxy authentication required")
@pyqtSlot(QUrl, 'QAuthenticator*')
def _on_authentication_required(self, url, authenticator):
@ -804,12 +807,7 @@ class WebEngineTab(browsertab.AbstractTab):
except AttributeError:
# WORKAROUND for
# https://www.riverbankcomputing.com/pipermail/pyqt/2016-December/038400.html
url_string = url.toDisplayString()
error_page = jinja.render(
'error.html',
title="Error loading page: {}".format(url_string),
url=url_string, error="Authentication required")
self.set_html(error_page)
self._show_error_page(url, "Authentication required")
@pyqtSlot('QWebEngineFullScreenRequest')
def _on_fullscreen_requested(self, request):
@ -873,6 +871,9 @@ class WebEngineTab(browsertab.AbstractTab):
"""
if not ok:
self._load_finished_fake.emit(False)
if not self.settings.test_attribute('content.javascript.enabled'):
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-66643
self._show_error_page(self.url(), error="")
@pyqtSlot(usertypes.NavigationRequest)
def _on_navigation_request(self, navigation):

View File

@ -47,6 +47,10 @@ class AbstractSettings:
"""
raise NotImplementedError
def test_attribute(self, name):
"""Get the value for the given attribute."""
return self._settings.testAttribute(self._ATTRIBUTES[name])
def set_font_size(self, name, value):
"""Set the given QWebSettings/QWebEngineSettings font size."""
assert value is not configutils.UNSET