summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/browsertab.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/browser/browsertab.py')
-rw-r--r--qutebrowser/browser/browsertab.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py
index 5a0f8cc27..f59786f31 100644
--- a/qutebrowser/browser/browsertab.py
+++ b/qutebrowser/browser/browsertab.py
@@ -867,6 +867,13 @@ class AbstractTab(QWidget):
# arg 1: The exit code.
renderer_process_terminated = pyqtSignal(TerminationStatus, int)
+ # Hosts for which a certificate error happened. Shared between all tabs.
+ #
+ # Note that we remember hosts here, without scheme/port:
+ # QtWebEngine/Chromium also only remembers hostnames, and certificates are
+ # for a given hostname anyways.
+ _insecure_hosts = set() # type: typing.Set[str]
+
def __init__(self, *, win_id: int, private: bool,
parent: QWidget = None) -> None:
self.is_private = private
@@ -884,7 +891,6 @@ class AbstractTab(QWidget):
self._layout = miscwidgets.WrapperLayout(self)
self._widget = typing.cast(QWidget, None)
self._progress = 0
- self._has_ssl_errors = False
self._load_status = usertypes.LoadStatus.none
self._tab_event_filter = eventfilter.TabEventFilter(
self, parent=self)
@@ -971,7 +977,6 @@ class AbstractTab(QWidget):
@pyqtSlot()
def _on_load_started(self) -> None:
self._progress = 0
- self._has_ssl_errors = False
self.data.viewing_source = False
self._set_load_status(usertypes.LoadStatus.loading)
self.load_started.emit()
@@ -1030,9 +1035,12 @@ class AbstractTab(QWidget):
Needs to be called by subclasses to trigger a load status update, e.g.
as a response to a loadFinished signal.
"""
- if ok and not self._has_ssl_errors:
+ if ok:
if self.url().scheme() == 'https':
- self._set_load_status(usertypes.LoadStatus.success_https)
+ if self.url().host() in self._insecure_hosts:
+ self._set_load_status(usertypes.LoadStatus.warn)
+ else:
+ self._set_load_status(usertypes.LoadStatus.success_https)
else:
self._set_load_status(usertypes.LoadStatus.success)
elif ok: