summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-09-13 15:05:02 +0200
committerFlorian Bruhin <me@the-compiler.org>2019-09-13 17:02:22 +0200
commiteb706625285ebc7674aa73001681122f480eea1f (patch)
treed98848311167fba4811fb86111abe8a16bd7bbe0
parent0d1d6d19351b6004325e58da358e39e250a450d0 (diff)
downloadqutebrowser-eb706625285ebc7674aa73001681122f480eea1f.tar.gz
qutebrowser-eb706625285ebc7674aa73001681122f480eea1f.zip
Add objects.debug_flags
This removes some objreg.get('args'), see #640
-rw-r--r--qutebrowser/app.py3
-rw-r--r--qutebrowser/browser/browsertab.py3
-rw-r--r--qutebrowser/browser/history.py2
-rw-r--r--qutebrowser/browser/webengine/interceptor.py7
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py8
-rw-r--r--qutebrowser/browser/webengine/webview.py6
-rw-r--r--qutebrowser/browser/webkit/network/networkmanager.py4
-rw-r--r--qutebrowser/config/configinit.py1
-rw-r--r--qutebrowser/misc/crashsignal.py16
-rw-r--r--qutebrowser/misc/objects.py1
-rw-r--r--qutebrowser/misc/utilcmds.py6
-rw-r--r--tests/end2end/features/test_history_bdd.py4
-rw-r--r--tests/end2end/fixtures/quteprocess.py7
-rw-r--r--tests/unit/browser/test_history.py7
-rw-r--r--tests/unit/browser/test_qutescheme.py1
-rw-r--r--tests/unit/completion/test_models.py6
16 files changed, 35 insertions, 47 deletions
diff --git a/qutebrowser/app.py b/qutebrowser/app.py
index eb468d6d1..cf35f918f 100644
--- a/qutebrowser/app.py
+++ b/qutebrowser/app.py
@@ -829,7 +829,6 @@ class Application(QApplication):
log.init.debug("Initializing application...")
- self._args = args
objreg.register('args', args)
objreg.register('app', self)
@@ -864,7 +863,7 @@ class Application(QApplication):
def exit(self, status):
"""Extend QApplication::exit to log the event."""
log.destroy.debug("Now calling QApplication::exit.")
- if 'debug-exit' in self._args.debug_flags:
+ if 'debug-exit' in objects.debug_flags:
if hunter is None:
print("Not logging late shutdown because hunter could not be "
"imported!", file=sys.stderr)
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py
index 5178fa8af..10f430e34 100644
--- a/qutebrowser/browser/browsertab.py
+++ b/qutebrowser/browser/browsertab.py
@@ -528,8 +528,7 @@ class AbstractScroller(QObject):
super().__init__(parent)
self._tab = tab
self._widget = None # type: typing.Optional[QWidget]
- args = objreg.get('args', None)
- if args is not None and 'log-scroll-pos' in args.debug_flags:
+ if 'log-scroll-pos' in objects.debug_flags:
self.perc_changed.connect(self._log_scroll_pos_change)
@pyqtSlot()
diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py
index d49000d29..3cdce4853 100644
--- a/qutebrowser/browser/history.py
+++ b/qutebrowser/browser/history.py
@@ -328,7 +328,7 @@ class WebHistory(sql.SqlTable):
log.misc.warning("Ignoring invalid URL being added to history")
return
- if 'no-sql-history' in objreg.get('args').debug_flags:
+ if 'no-sql-history' in objects.debug_flags:
return
atime = int(atime) if (atime is not None) else int(time.time())
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index 0729188b7..47edabda8 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -29,6 +29,7 @@ from qutebrowser.config import config
from qutebrowser.browser import shared
from qutebrowser.utils import utils, log, debug, qtutils
from qutebrowser.extensions import interceptors
+from qutebrowser.misc import objects
@attr.s
@@ -106,10 +107,6 @@ class RequestInterceptor(QWebEngineUrlRequestInterceptor):
interceptors.ResourceType.unknown,
}
- def __init__(self, args, parent=None):
- super().__init__(parent)
- self._args = args
-
def install(self, profile):
"""Install the interceptor on the given QWebEngineProfile."""
try:
@@ -136,7 +133,7 @@ class RequestInterceptor(QWebEngineUrlRequestInterceptor):
Args:
info: QWebEngineUrlRequestInfo &info
"""
- if 'log-requests' in self._args.debug_flags:
+ if 'log-requests' in objects.debug_flags:
resource_type = debug.qenum_key(QWebEngineUrlRequestInfo,
info.resourceType())
navigation_type = debug.qenum_key(QWebEngineUrlRequestInfo,
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index cee16db9f..fc11b75a5 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -36,7 +36,7 @@ from qutebrowser.browser.webengine import (webview, webengineelem, tabhistory,
interceptor, webenginequtescheme,
cookies, webenginedownloads,
webenginesettings, certificateerror)
-from qutebrowser.misc import miscwidgets
+from qutebrowser.misc import miscwidgets, objects
from qutebrowser.utils import (usertypes, qtutils, log, javascript, utils,
message, objreg, jinja, debug)
from qutebrowser.qt import sip
@@ -60,8 +60,7 @@ def init():
_qute_scheme_handler.install(webenginesettings.private_profile)
log.init.debug("Initializing request interceptor...")
- args = objreg.get('args')
- req_interceptor = interceptor.RequestInterceptor(args=args, parent=app)
+ req_interceptor = interceptor.RequestInterceptor(parent=app)
req_interceptor.install(webenginesettings.default_profile)
if webenginesettings.private_profile:
req_interceptor.install(webenginesettings.private_profile)
@@ -419,7 +418,6 @@ class WebEngineScroller(browsertab.AbstractScroller):
def __init__(self, tab, parent=None):
super().__init__(tab, parent)
- self._args = objreg.get('args')
self._pos_perc = (0, 0)
self._pos_px = QPoint()
self._at_bottom = False
@@ -477,7 +475,7 @@ class WebEngineScroller(browsertab.AbstractScroller):
self._at_bottom = math.ceil(pos.y()) >= scrollable_y
if (self._pos_perc != (perc_x, perc_y) or
- 'no-scroll-filtering' in self._args.debug_flags):
+ 'no-scroll-filtering' in objects.debug_flags):
self._pos_perc = perc_x, perc_y
self.perc_changed.emit(*self._pos_perc)
diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py
index f71f11087..a9be81ab1 100644
--- a/qutebrowser/browser/webengine/webview.py
+++ b/qutebrowser/browser/webengine/webview.py
@@ -27,8 +27,8 @@ from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
from qutebrowser.browser import shared
from qutebrowser.browser.webengine import webenginesettings, certificateerror
from qutebrowser.config import config
-from qutebrowser.utils import log, debug, usertypes, objreg, qtutils
-from qutebrowser.misc import miscwidgets
+from qutebrowser.utils import log, debug, usertypes, qtutils
+from qutebrowser.misc import miscwidgets, objects
from qutebrowser.qt import sip
@@ -68,7 +68,7 @@ class WebEngineView(QWebEngineView):
This got introduced in Qt 5.11.0 and fixed in 5.12.0.
"""
- if 'lost-focusproxy' not in objreg.get('args').debug_flags:
+ if 'lost-focusproxy' not in objects.debug_flags:
proxy = self.focusProxy()
if proxy is not None:
return proxy
diff --git a/qutebrowser/browser/webkit/network/networkmanager.py b/qutebrowser/browser/webkit/network/networkmanager.py
index e4c8da66c..46abd5cf2 100644
--- a/qutebrowser/browser/webkit/network/networkmanager.py
+++ b/qutebrowser/browser/webkit/network/networkmanager.py
@@ -36,6 +36,7 @@ from qutebrowser.extensions import interceptors
from qutebrowser.browser.webkit import certificateerror
from qutebrowser.browser.webkit.network import (webkitqutescheme, networkreply,
filescheme)
+from qutebrowser.misc import objects
if typing.TYPE_CHECKING:
# pylint: disable=unused-import,useless-suppression
@@ -154,7 +155,6 @@ class NetworkManager(QNetworkAccessManager):
super().__init__(parent)
log.init.debug("NetworkManager init done")
self.adopted_downloads = 0
- self._args = objreg.get('args')
self._win_id = win_id
self._tab_id = tab_id
self._private = private
@@ -412,7 +412,7 @@ class NetworkManager(QNetworkAccessManager):
req, HOSTBLOCK_ERROR_STRING, QNetworkReply.ContentAccessDenied,
self)
- if 'log-requests' in self._args.debug_flags:
+ if 'log-requests' in objects.debug_flags:
operation = debug.qenum_key(QNetworkAccessManager, op)
operation = operation.replace('Operation', '').upper()
log.webview.debug("{} {}, first-party {}".format(
diff --git a/qutebrowser/config/configinit.py b/qutebrowser/config/configinit.py
index 9dc15d6e9..74c07e3ab 100644
--- a/qutebrowser/config/configinit.py
+++ b/qutebrowser/config/configinit.py
@@ -80,6 +80,7 @@ def early_init(args: argparse.Namespace) -> None:
message.error("set: {} - {}".format(e.__class__.__name__, e))
objects.backend = get_backend(args)
+ objects.debug_flags = set(args.debug_flags)
configtypes.Font.monospace_fonts = config.val.fonts.monospace
config.instance.changed.connect(_update_monospace_fonts)
diff --git a/qutebrowser/misc/crashsignal.py b/qutebrowser/misc/crashsignal.py
index 8dae7cfb5..286a4c339 100644
--- a/qutebrowser/misc/crashsignal.py
+++ b/qutebrowser/misc/crashsignal.py
@@ -38,7 +38,7 @@ from PyQt5.QtCore import (pyqtSlot, qInstallMessageHandler, QObject,
QSocketNotifier, QTimer, QUrl)
from qutebrowser.api import cmdutils
-from qutebrowser.misc import earlyinit, crashdialog, ipc
+from qutebrowser.misc import earlyinit, crashdialog, ipc, objects
from qutebrowser.utils import usertypes, standarddir, log, objreg, debug, utils
@@ -157,9 +157,9 @@ class CrashHandler(QObject):
"""Report a bug in qutebrowser."""
pages = self._recover_pages()
cmd_history = objreg.get('command-history')[-5:]
- objects = debug.get_all_objects()
+ all_objects = debug.get_all_objects()
self._crash_dialog = crashdialog.ReportDialog(pages, cmd_history,
- objects)
+ all_objects)
self._crash_dialog.show()
def destroy_crashlogfile(self):
@@ -198,11 +198,11 @@ class CrashHandler(QObject):
cmd_history = []
try:
- objects = debug.get_all_objects()
+ all_objects = debug.get_all_objects()
except Exception:
log.destroy.exception("Error while getting objects")
- objects = ""
- return ExceptionInfo(pages, cmd_history, objects)
+ all_objects = ""
+ return ExceptionInfo(pages, cmd_history, all_objects)
def exception_hook(self, exctype, excvalue, tb):
"""Handle uncaught python exceptions.
@@ -222,10 +222,10 @@ class CrashHandler(QObject):
is_ignored_exception = (exctype is bdb.BdbQuit or
not issubclass(exctype, Exception))
- if 'pdb-postmortem' in self._args.debug_flags:
+ if 'pdb-postmortem' in objects.debug_flags:
pdb.post_mortem(tb)
- if is_ignored_exception or 'pdb-postmortem' in self._args.debug_flags:
+ if is_ignored_exception or 'pdb-postmortem' in objects.debug_flags:
# pdb exit, KeyboardInterrupt, ...
sys.exit(usertypes.Exit.exception)
diff --git a/qutebrowser/misc/objects.py b/qutebrowser/misc/objects.py
index b903d8e5d..e2885ca22 100644
--- a/qutebrowser/misc/objects.py
+++ b/qutebrowser/misc/objects.py
@@ -39,3 +39,4 @@ class NoBackend:
backend = NoBackend() # type: typing.Union[usertypes.Backend, NoBackend]
commands = {} # type: typing.Dict[str, command.Command]
+debug_flags = set() # type: typing.Set[str]
diff --git a/qutebrowser/misc/utilcmds.py b/qutebrowser/misc/utilcmds.py
index a76826d80..93cf20be8 100644
--- a/qutebrowser/misc/utilcmds.py
+++ b/qutebrowser/misc/utilcmds.py
@@ -19,19 +19,21 @@
"""Misc. utility commands exposed to the user."""
+# QApplication and objects are imported so they're usable in :debug-pyeval
+
import functools
import os
import traceback
from PyQt5.QtCore import QUrl
-# so it's available for :debug-pyeval
from PyQt5.QtWidgets import QApplication # pylint: disable=unused-import
from qutebrowser.browser import qutescheme
from qutebrowser.utils import log, objreg, usertypes, message, debug, utils
from qutebrowser.commands import runners
from qutebrowser.api import cmdutils
-from qutebrowser.misc import consolewidget, debugcachestats
+from qutebrowser.misc import ( # pylint: disable=unused-import
+ consolewidget, debugcachestats, objects)
from qutebrowser.utils.version import pastebin_version
from qutebrowser.qt import sip
diff --git a/tests/end2end/features/test_history_bdd.py b/tests/end2end/features/test_history_bdd.py
index 6b0265cd6..44f64991e 100644
--- a/tests/end2end/features/test_history_bdd.py
+++ b/tests/end2end/features/test_history_bdd.py
@@ -30,8 +30,8 @@ bdd.scenarios('history.feature')
@pytest.fixture(autouse=True)
def turn_on_sql_history(quteproc):
"""Make sure SQL writing is enabled for tests in this module."""
- quteproc.send_cmd(":debug-pyeval objreg.get('args')."
- "debug_flags.remove('no-sql-history')")
+ cmd = ":debug-pyeval objects.debug_flags.remove('no-sql-history')"
+ quteproc.send_cmd(cmd)
quteproc.wait_for_load_finished_url('qute://pyeval')
diff --git a/tests/end2end/fixtures/quteprocess.py b/tests/end2end/fixtures/quteprocess.py
index 15d20ec69..c0a00624a 100644
--- a/tests/end2end/fixtures/quteprocess.py
+++ b/tests/end2end/fixtures/quteprocess.py
@@ -874,11 +874,10 @@ class QuteProc(testprocess.Process):
def turn_on_scroll_logging(self, no_scroll_filtering=False):
"""Make sure all scrolling changes are logged."""
+ cmd = ":debug-pyeval -q objects.debug_flags.add('{}')"
if no_scroll_filtering:
- self.send_cmd(":debug-pyeval -q objreg.get('args')."
- "debug_flags.append('no-scroll-filtering')")
- self.send_cmd(":debug-pyeval -q objreg.get('args')."
- "debug_flags.append('log-scroll-pos')")
+ self.send_cmd(cmd.format('no-scroll-filtering'))
+ self.send_cmd(cmd.format('log-scroll-pos'))
class YamlLoader(yaml.SafeLoader):
diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py
index 297fd4c2d..87984f1a5 100644
--- a/tests/unit/browser/test_history.py
+++ b/tests/unit/browser/test_history.py
@@ -27,13 +27,12 @@ from PyQt5.QtCore import QUrl
from qutebrowser.browser import history
from qutebrowser.utils import objreg, urlutils, usertypes
from qutebrowser.api import cmdutils
-from qutebrowser.misc import sql
+from qutebrowser.misc import sql, objects
@pytest.fixture(autouse=True)
def prerequisites(config_stub, fake_save_manager, init_sql, fake_args):
"""Make sure everything is ready to initialize a WebHistory."""
- fake_args.debug_flags = []
config_stub.data = {'general': {'private-browsing': False}}
@@ -171,8 +170,8 @@ class TestAdd:
expected = [(completion_url, title, atime)]
assert list(web_history.completion) == expected
- def test_no_sql_web_history(self, web_history, fake_args):
- fake_args.debug_flags = 'no-sql-history'
+ def test_no_sql_web_history(self, web_history, monkeypatch):
+ monkeypatch.setattr(objects, 'debug_flags', {'no-sql-history'})
web_history.add_url(QUrl('https://www.example.com/'), atime=12346,
title='Hello World', redirect=False)
assert not list(web_history)
diff --git a/tests/unit/browser/test_qutescheme.py b/tests/unit/browser/test_qutescheme.py
index 0be63fa62..932c394a4 100644
--- a/tests/unit/browser/test_qutescheme.py
+++ b/tests/unit/browser/test_qutescheme.py
@@ -101,7 +101,6 @@ class TestHistoryHandler:
@pytest.fixture(autouse=True)
def fake_history(self, web_history, fake_args, entries):
"""Create fake history."""
- fake_args.debug_flags = []
for item in entries:
web_history.add_url(**item)
diff --git a/tests/unit/completion/test_models.py b/tests/unit/completion/test_models.py
index 24e53648e..3d3ca0bf3 100644
--- a/tests/unit/completion/test_models.py
+++ b/tests/unit/completion/test_models.py
@@ -430,12 +430,6 @@ def test_bookmark_completion_delete(qtmodeltester, bookmarks, row, removed):
assert before.difference(after) == {removed}
-@pytest.fixture(autouse=True)
-def url_args(fake_args):
- """Prepare arguments needed to test the URL completion."""
- fake_args.debug_flags = []
-
-
def test_url_completion(qtmodeltester, config_stub, web_history_populated,
quickmarks, bookmarks, info):
"""Test the results of url completion.