From 300b88fcbfe395988591cedcccdb63a199a9d355 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sat, 9 Nov 2019 23:32:31 +0100 Subject: Work around broken error pages on Debian See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882805 See #5078, #3773 (cherry picked from commit d741bdf2f92b9dcf897b15c9d850fff6442f1cf7) --- doc/changelog.asciidoc | 1 + qutebrowser/browser/webengine/webenginetab.py | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 9e9f25783..e51ef6d01 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -41,6 +41,7 @@ Fixed - Downloads are now hidden properly when the browser is in fullscreen mode. - Crash when setting `colors.webpage.bg` to an empty value with QtWebKit. - Crash when the history database file is not a proper sqlite database. +- Workaround for missing/broken error pages on Debian. v1.8.1 (2019-09-27) ------------------- diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index fc11b75a5..d79ad7a92 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -1352,13 +1352,22 @@ class WebEngineTab(browsertab.AbstractTab): def _error_page_workaround(self, html): """Check if we're displaying a Chromium error page. - This gets only called if we got loadFinished(False) without JavaScript, - so we can display at least some error page. + This gets called if we got a loadFinished(False), so we can display at + least some error page in situations where Chromium's can't be + displayed. WORKAROUND for https://bugreports.qt.io/browse/QTBUG-66643 + WORKAROUND for https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882805 + Needs to check the page content as a WORKAROUND for https://bugreports.qt.io/browse/QTBUG-66661 """ + js_enabled = self.settings.test_attribute('content.javascript.enabled') + missing_jst = 'jstProcess(' in html and 'jstProcess=' not in html + + if js_enabled and not missing_jst: + return + match = re.search(r'"errorCode":"([^"]*)"', html) if match is None: return @@ -1388,8 +1397,7 @@ class WebEngineTab(browsertab.AbstractTab): else: self._update_load_status(ok) - js_enabled = self.settings.test_attribute('content.javascript.enabled') - if not ok and not js_enabled: + if not ok: self.dump_async(self._error_page_workaround) if ok and self._reload_url is not None: -- cgit v1.2.3-54-g00ecf