From 4a4a6549d0ca68d25a5a42910212a553048fe144 Mon Sep 17 00:00:00 2001 From: Marc Jauvin Date: Fri, 19 Jan 2018 09:34:45 -0500 Subject: [PATCH] use a temporary attribute of the class to prevent the loop; tested to work in both backends --- qutebrowser/browser/browsertab.py | 9 ++++++--- qutebrowser/browser/webengine/webenginetab.py | 5 ++--- qutebrowser/browser/webkit/network/networkmanager.py | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index b925d7d7a..b53cd32ca 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -99,7 +99,6 @@ class TabData: Only used for QtWebKit. pinned: Flag to pin the tab. fullscreen: Whether the tab has a video shown fullscreen currently. - netrc_used: flag to avoid endless loop when using netrc """ keep_icon = attr.ib(False) @@ -108,7 +107,6 @@ class TabData: override_target = attr.ib(None) pinned = attr.ib(False) fullscreen = attr.ib(False) - netrc_used = False class AbstractAction: @@ -726,7 +724,12 @@ class AbstractTab(QWidget): self._progress = 0 self._has_ssl_errors = False self.data.viewing_source = False - self.data.netrc_used = False + if self.backend == usertypes.Backend.QtWebKit: + obj = self.networkaccessmanager() + else: + obj = self + if hasattr(obj, 'netrc_used'): + delattr(obj, 'netrc_used') self._set_load_status(usertypes.LoadStatus.loading) self.load_started.emit() diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index cf7dc2d98..4a05312f8 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -19,7 +19,6 @@ """Wrapper over a QWebEngineView.""" -import os import math import functools import html as html_utils @@ -741,8 +740,8 @@ class WebEngineTab(browsertab.AbstractTab): @pyqtSlot(QUrl, 'QAuthenticator*') def _on_authentication_required(self, url, authenticator): netrc = None - if not self.data.netrc_used: - self.data.netrc_used = True + if not hasattr(self, 'netrc_used'): + setattr(self, 'netrc_used', True) netrc = shared.netrc_authentication(url, authenticator) if not netrc: abort_on = [self.shutting_down, self.load_started] diff --git a/qutebrowser/browser/webkit/network/networkmanager.py b/qutebrowser/browser/webkit/network/networkmanager.py index d41bfbd90..90761d0fc 100644 --- a/qutebrowser/browser/webkit/network/networkmanager.py +++ b/qutebrowser/browser/webkit/network/networkmanager.py @@ -269,8 +269,8 @@ class NetworkManager(QNetworkAccessManager): def on_authentication_required(self, reply, authenticator): """Called when a website needs authentication.""" netrc = False - if not self.data.netrc_used: - self.data.netrc_used = True + if not hasattr(self, 'netrc_used'): + setattr(self, 'netrc_used', True) netrc = shared.netrc_authentication(reply.url(), authenticator) if not netrc: abort_on = self._get_abort_signals(reply)