From 3d6f604739f65bda407c4608ae203e0788c531f6 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 10 Dec 2018 14:29:01 +0100 Subject: [PATCH] Prepare for moving adblocker to extension API --- qutebrowser/app.py | 5 ---- qutebrowser/browser/adblock.py | 39 +++++++++++++++++++------------- qutebrowser/extensions/loader.py | 6 +++-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 65c7395eb..5bd4b3388 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -468,11 +468,6 @@ def _init_modules(args, crash_handler): log.init.debug("Initializing websettings...") websettings.init(args) - log.init.debug("Initializing adblock...") - host_blocker = adblock.HostBlocker() - host_blocker.read_hosts() - objreg.register('host-blocker', host_blocker) - log.init.debug("Initializing quickmarks...") quickmark_manager = urlmarks.QuickmarkManager(qApp) objreg.register('quickmark-manager', quickmark_manager) diff --git a/qutebrowser/browser/adblock.py b/qutebrowser/browser/adblock.py index 917942b7f..216e9cc98 100644 --- a/qutebrowser/browser/adblock.py +++ b/qutebrowser/browser/adblock.py @@ -24,11 +24,12 @@ import os.path import functools import posixpath import zipfile +import logging -from qutebrowser.api import downloads -from qutebrowser.config import config -from qutebrowser.utils import objreg, standarddir, log, message -from qutebrowser.api import cmdutils +from qutebrowser.api import cmdutils, hook, config, message, downloads + + +logger = logging.getLogger('misc') def _guess_zip_filename(zf): @@ -95,18 +96,17 @@ class HostBlocker: _config_hosts_file: The path to a blocked-hosts in ~/.config """ - def __init__(self): + def __init__(self, *, data_dir, config_dir, args): + self._args = args self._blocked_hosts = set() self._config_blocked_hosts = set() self._in_progress = [] self._done_count = 0 - data_dir = standarddir.data() - self._local_hosts_file = os.path.join(data_dir, 'blocked-hosts') + self._local_hosts_file = str(data_dir / 'blocked-hosts') self._update_files() - config_dir = standarddir.config() - self._config_hosts_file = os.path.join(config_dir, 'blocked-hosts') + self._config_hosts_file = str(config_dir / 'blocked-hosts') config.instance.changed.connect(self._update_files) @@ -141,7 +141,7 @@ class HostBlocker: for line in f: target.add(line.strip()) except (OSError, UnicodeDecodeError): - log.misc.exception("Failed to read host blocklist!") + logger.exception("Failed to read host blocklist!") return True @@ -156,9 +156,8 @@ class HostBlocker: self._blocked_hosts) if not found: - args = objreg.get('args') if (config.val.content.host_blocking.lists and - args.basedir is None and + self._args.basedir is None and config.val.content.host_blocking.enabled): message.info("Run :adblock-update to get adblock lists.") @@ -221,7 +220,7 @@ class HostBlocker: try: line = line.decode('utf-8') except UnicodeDecodeError: - log.misc.error("Failed to decode: {!r}".format(line)) + logger.error("Failed to decode: {!r}".format(line)) return False # Remove comments @@ -277,7 +276,7 @@ class HostBlocker: if not ok: error_count += 1 - log.misc.debug("{}: read {} lines".format(byte_io.name, line_count)) + logger.debug("{}: read {} lines".format(byte_io.name, line_count)) if error_count > 0: message.error("adblock: {} read errors for {}".format( error_count, byte_io.name)) @@ -299,7 +298,7 @@ class HostBlocker: except FileNotFoundError: pass except OSError as e: - log.misc.exception("Failed to delete hosts file: {}".format(e)) + logger.exception("Failed to delete hosts file: {}".format(e)) def _on_download_finished(self, download): """Check if all downloads are finished and if so, trigger reading. @@ -318,4 +317,12 @@ class HostBlocker: try: self._on_lists_downloaded() except OSError: - log.misc.exception("Failed to write host block list!") + logger.exception("Failed to write host block list!") + + +@hook.init() +def init(context): + host_blocker = HostBlocker(data_dir=context.data_dir, + config_dir=context.config_dir, + args=context.args) + host_blocker.read_hosts() diff --git a/qutebrowser/extensions/loader.py b/qutebrowser/extensions/loader.py index 1aa37e4fe..303eda213 100644 --- a/qutebrowser/extensions/loader.py +++ b/qutebrowser/extensions/loader.py @@ -29,7 +29,7 @@ import pathlib import attr from qutebrowser import components -from qutebrowser.utils import log, standarddir +from qutebrowser.utils import log, standarddir, objreg @attr.s @@ -39,6 +39,7 @@ class InitContext: data_dir = attr.ib() # type: pathlib.Path config_dir = attr.ib() # type: pathlib.Path + args = attr.ib() # type: argparse.Namespace @attr.s @@ -119,7 +120,8 @@ def _walk_pyinstaller() -> typing.Iterator[ExtensionInfo]: def _get_init_context() -> InitContext: """Get an InitContext object.""" return InitContext(data_dir=pathlib.Path(standarddir.data()), - config_dir=pathlib.Path(standarddir.config())) + config_dir=pathlib.Path(standarddir.config()), + args=objreg.get('args')) def _load_component(info: ExtensionInfo) -> types.ModuleType: