def test_invalid_utf8(config_stub, download_stub, tmpdir, data_tmpdir, caplog, location): """Make sure invalid UTF-8 is handled correctly. See https://github.com/qutebrowser/qutebrowser/issues/2301 """ blocklist = tmpdir / 'blocklist' if location == 'comment': blocklist.write_binary(b'# nbsp: \xa0\n') else: assert location == 'content' blocklist.write_binary(b'https://www.example.org/\xa0') for url in BLOCKLIST_HOSTS: blocklist.write(url + '\n', mode='a') url = blocklist_to_url('blocklist') config_stub.val.content.host_blocking.lists = [url.toString()] config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = None host_blocker = adblock.HostBlocker() host_blocker.adblock_update() finished_signal = host_blocker._in_progress[0].finished if location == 'content': with caplog.at_level(logging.ERROR): finished_signal.emit() expected = (r"Failed to decode: " r"b'https://www.example.org/\xa0localhost") assert caplog.records[-2].message.startswith(expected) else: finished_signal.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_whitelisted_lines(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry, caplog, ip, host): """Make sure we don't block hosts we don't want to.""" host_blocker = adblock.HostBlocker() line = ('{} {}'.format(ip, host)).encode('ascii') host_blocker._parse_line(line) assert host not in host_blocker._blocked_hosts
def test_failed_dl_update(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry): """One blocklist fails to download. Ensure hosts from this list are not blocked. """ dl_fail_blocklist = QUrl( create_blocklist(tmpdir, blocked_hosts=CLEAN_HOSTS, name='download_will_fail', line_format='one_per_line')) hosts_to_block = generic_blocklists(tmpdir) + [dl_fail_blocklist] config_stub.data = { 'content': { 'host-block-lists': hosts_to_block, 'host-blocking-enabled': True, 'host-blocking-whitelist': None, } } host_blocker = adblock.HostBlocker() host_blocker.adblock_update(0) while host_blocker._in_progress: current_download = host_blocker._in_progress[0] # if current download is the file we want to fail, make it fail if current_download.name == dl_fail_blocklist.path(): current_download.successful = False current_download.finished.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_failed_dl_update(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry, caplog): """One blocklist fails to download. Ensure hosts from this list are not blocked. """ dl_fail_blocklist = blocklist_to_url(create_blocklist( tmpdir, blocked_hosts=CLEAN_HOSTS, name='download_will_fail', line_format='one_per_line')) hosts_to_block = (generic_blocklists(tmpdir) + [dl_fail_blocklist.toString()]) config_stub.val.content.host_blocking.lists = hosts_to_block config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = None host_blocker = adblock.HostBlocker() host_blocker.adblock_update() while host_blocker._in_progress: current_download = host_blocker._in_progress[0] # if current download is the file we want to fail, make it fail if current_download.name == dl_fail_blocklist.path(): current_download.successful = False else: current_download.successful = True with caplog.at_level(logging.ERROR): current_download.finished.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_parsing_multiple_hosts_on_line(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry, caplog): """Ensure multiple hosts on a line get parsed correctly.""" host_blocker = adblock.HostBlocker() bytes_host_line = ' '.join(BLOCKLIST_HOSTS).encode('utf-8') host_blocker._parse_line(bytes_host_line) assert_urls(host_blocker, whitelisted=[])
def _init_modules(args, crash_handler): """Initialize all 'modules' which need to be initialized. Args: args: The argparse namespace. crash_handler: The CrashHandler instance. """ # pylint: disable=too-many-statements log.init.debug("Initializing save manager...") save_manager = savemanager.SaveManager(qApp) objreg.register('save-manager', save_manager) save_manager.add_saveable('version', _save_version) log.init.debug("Initializing network...") networkmanager.init() log.init.debug("Initializing readline-bridge...") readline_bridge = readline.ReadlineBridge() objreg.register('readline-bridge', readline_bridge) log.init.debug("Initializing directories...") standarddir.init(args) log.init.debug("Initializing config...") config.init(qApp) save_manager.init_autosave() log.init.debug("Initializing web history...") history.init(qApp) log.init.debug("Initializing crashlog...") if not args.no_err_windows: crash_handler.handle_segfault() log.init.debug("Initializing sessions...") sessions.init(qApp) log.init.debug("Initializing js-bridge...") js_bridge = qutescheme.JSBridge(qApp) objreg.register('js-bridge', js_bridge) log.init.debug("Initializing websettings...") websettings.init() 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) log.init.debug("Initializing bookmarks...") bookmark_manager = urlmarks.BookmarkManager(qApp) objreg.register('bookmark-manager', bookmark_manager) log.init.debug("Initializing proxy...") proxy.init() log.init.debug("Initializing cookies...") cookie_jar = cookies.CookieJar(qApp) objreg.register('cookie-jar', cookie_jar) log.init.debug("Initializing cache...") diskcache = cache.DiskCache(qApp) objreg.register('cache', diskcache) log.init.debug("Initializing completions...") completionmodels.init() log.init.debug("Misc initialization...") _maybe_hide_mouse_cursor() objreg.get('config').changed.connect(_maybe_hide_mouse_cursor)
def test_adblock_benchmark(config_stub, data_tmpdir, basedir, benchmark): blocked_hosts = os.path.join(utils.abs_datapath(), 'blocked-hosts') shutil.copy(blocked_hosts, str(data_tmpdir)) url = QUrl('https://www.example.org/') blocker = adblock.HostBlocker() blocker.read_hosts() assert blocker._blocked_hosts benchmark(lambda: blocker.is_blocked(url))
def test_no_blocklist_update(config_stub, download_stub, data_tmpdir, basedir, tmpdir, win_registry): """Ensure no URL is blocked when no block list exists.""" config_stub.val.content.host_blocking.lists = None config_stub.val.content.host_blocking.enabled = True host_blocker = adblock.HostBlocker() host_blocker.adblock_update() host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_no_blocklist_update(config_stub, download_stub, data_tmpdir, basedir, tmpdir, win_registry): """Ensure no URL is blocked when no block list exists.""" config_stub.data = { 'content': { 'host-block-lists': None, 'host-blocking-enabled': True, } } host_blocker = adblock.HostBlocker() host_blocker.adblock_update(0) host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_disabled_blocking_per_url(config_stub, data_tmpdir): example_com = 'https://www.example.com/' config_stub.val.content.host_blocking.lists = [] pattern = urlmatch.UrlPattern(example_com) config_stub.set_obj('content.host_blocking.enabled', False, pattern=pattern) url = QUrl('blocked.example.com') host_blocker = adblock.HostBlocker() host_blocker._blocked_hosts.add(url.host()) assert host_blocker.is_blocked(url) assert not host_blocker.is_blocked(url, first_party_url=QUrl(example_com))
def test_disabled_blocking_update(basedir, config_stub, download_stub, data_tmpdir, tmpdir, win_registry, caplog): """Ensure no URL is blocked when host blocking is disabled.""" config_stub.val.content.host_blocking.lists = generic_blocklists(tmpdir) config_stub.val.content.host_blocking.enabled = False host_blocker = adblock.HostBlocker() host_blocker.adblock_update() while host_blocker._in_progress: current_download = host_blocker._in_progress[0] with caplog.at_level(logging.ERROR): current_download.finished.emit() host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_successful_update(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry, caplog): """Ensure hosts from host_blocking.lists are blocked after an update.""" config_stub.val.content.host_blocking.lists = generic_blocklists(tmpdir) config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = None host_blocker = adblock.HostBlocker() host_blocker.adblock_update() # Simulate download is finished while host_blocker._in_progress: current_download = host_blocker._in_progress[0] with caplog.at_level(logging.ERROR): current_download.finished.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_invalid_utf8_compiled(config_stub, config_tmpdir, data_tmpdir, monkeypatch, caplog): """Make sure invalid UTF-8 in the compiled file is handled.""" config_stub.val.content.host_blocking.lists = [] # Make sure the HostBlocker doesn't delete blocked-hosts in __init__ monkeypatch.setattr(adblock.HostBlocker, '_update_files', lambda _self: None) (config_tmpdir / 'blocked-hosts').write_binary( b'https://www.example.org/\xa0') (data_tmpdir / 'blocked-hosts').ensure() host_blocker = adblock.HostBlocker() with caplog.at_level(logging.ERROR): host_blocker.read_hosts() assert caplog.records[-1].message == "Failed to read host blocklist!"
def test_disabled_blocking_update(basedir, config_stub, download_stub, data_tmpdir, tmpdir, win_registry): """Ensure no URL is blocked when host blocking is disabled.""" config_stub.data = { 'content': { 'host-block-lists': generic_blocklists(tmpdir), 'host-blocking-enabled': False, } } host_blocker = adblock.HostBlocker() host_blocker.adblock_update(0) while host_blocker._in_progress: current_download = host_blocker._in_progress[0] current_download.finished.emit() host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_config_change(config_stub, basedir, download_stub, data_tmpdir, tmpdir): """Ensure blocked-hosts resets if host-block-list is changed to None.""" filtered_blocked_hosts = BLOCKLIST_HOSTS[1:] # Exclude localhost blocklist = blocklist_to_url(create_blocklist( tmpdir, blocked_hosts=filtered_blocked_hosts, name='blocked-hosts', line_format='one_per_line')) config_stub.val.content.host_blocking.lists = [blocklist.toString()] config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = None host_blocker = adblock.HostBlocker() host_blocker.read_hosts() config_stub.set_obj('content.host_blocking.lists', None) host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_add_directory(config_stub, basedir, download_stub, data_tmpdir, tmpdir): """Ensure adblocker can import all files in a directory.""" blocklist_hosts2 = [] for i in BLOCKLIST_HOSTS[1:]: blocklist_hosts2.append('1' + i) create_blocklist(tmpdir, blocked_hosts=BLOCKLIST_HOSTS, name='blocked-hosts', line_format='one_per_line') create_blocklist(tmpdir, blocked_hosts=blocklist_hosts2, name='blocked-hosts2', line_format='one_per_line') config_stub.val.content.host_blocking.lists = [tmpdir.strpath] config_stub.val.content.host_blocking.enabled = True host_blocker = adblock.HostBlocker() host_blocker.adblock_update() assert len(host_blocker._blocked_hosts) == len(blocklist_hosts2) * 2
def test_successful_update(config_stub, basedir, download_stub, data_tmpdir, tmpdir, win_registry): """Ensure hosts from host-block-lists are blocked after an update.""" config_stub.data = { 'content': { 'host-block-lists': generic_blocklists(tmpdir), 'host-blocking-enabled': True, 'host-blocking-whitelist': None, } } host_blocker = adblock.HostBlocker() host_blocker.adblock_update(0) # Simulate download is finished while host_blocker._in_progress: current_download = host_blocker._in_progress[0] current_download.finished.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_blocking_with_whitelist(config_stub, basedir, download_stub, data_tmpdir, tmpdir): """Ensure hosts in content.host_blocking.whitelist are never blocked.""" # Simulate adblock_update has already been run # by creating a file named blocked-hosts, # Exclude localhost from it, since localhost is in HostBlocker.WHITELISTED filtered_blocked_hosts = BLOCKLIST_HOSTS[1:] blocklist = create_blocklist(data_tmpdir, blocked_hosts=filtered_blocked_hosts, name='blocked-hosts', line_format='one_per_line') config_stub.val.content.host_blocking.lists = [blocklist] config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = list(WHITELISTED_HOSTS) host_blocker = adblock.HostBlocker() host_blocker.read_hosts() assert_urls(host_blocker)
def test_config_change_initial(config_stub, basedir, download_stub, data_tmpdir, tmpdir): """Test emptying host_blocking.lists with existing blocked_hosts. - A blocklist is present in host_blocking.lists and blocked_hosts is populated - User quits qutebrowser, empties host_blocking.lists from his config - User restarts qutebrowser, does adblock-update """ create_blocklist(tmpdir, blocked_hosts=BLOCKLIST_HOSTS, name='blocked-hosts', line_format='one_per_line') config_stub.val.content.host_blocking.lists = None config_stub.val.content.host_blocking.enabled = True config_stub.val.content.host_blocking.whitelist = None host_blocker = adblock.HostBlocker() host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def test_invalid_utf8_compiled(config_stub, tmpdir, monkeypatch, caplog): """Make sure invalid UTF-8 in the compiled file is handled.""" data_dir = tmpdir / 'data' config_dir = tmpdir / 'config' monkeypatch.setattr(adblock.standarddir, 'data', lambda: str(data_dir)) monkeypatch.setattr(adblock.standarddir, 'config', lambda: str(config_dir)) config_stub.data = { 'content': { 'host-block-lists': [], } } (config_dir / 'blocked-hosts').write_binary(b'https://www.example.org/\xa0') (data_dir / 'blocked-hosts').ensure() host_blocker = adblock.HostBlocker() with caplog.at_level(logging.ERROR): host_blocker.read_hosts() assert caplog.records[-1].message == "Failed to read host blocklist!"
def test_config_change(config_stub, basedir, download_stub, data_tmpdir, tmpdir): """Ensure blocked-hosts resets if host-block-list is changed to None.""" filtered_blocked_hosts = BLOCKLIST_HOSTS[1:] # Exclude localhost blocklist = QUrl(create_blocklist(tmpdir, blocked_hosts=filtered_blocked_hosts, name='blocked-hosts', line_format='one_per_line')) config_stub.data = { 'content': { 'host-block-lists': [blocklist], 'host-blocking-enabled': True, 'host-blocking-whitelist': None, } } host_blocker = adblock.HostBlocker() host_blocker.read_hosts() config_stub.set('content', 'host-block-lists', None) host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url))
def _init_modules(self): """Initialize all 'modules' which need to be initialized.""" log.init.debug("Initializing readline-bridge...") readline_bridge = readline.ReadlineBridge() objreg.register('readline-bridge', readline_bridge) log.init.debug("Initializing directories...") standarddir.init() log.init.debug("Initializing config...") config.init(self._args) log.init.debug("Initializing crashlog...") self._handle_segfault() log.init.debug("Initializing js-bridge...") js_bridge = qutescheme.JSBridge(self) objreg.register('js-bridge', js_bridge) log.init.debug("Initializing websettings...") websettings.init() 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 = quickmarks.QuickmarkManager() objreg.register('quickmark-manager', quickmark_manager) log.init.debug("Initializing proxy...") proxy.init() log.init.debug("Initializing cookies...") cookie_jar = cookies.CookieJar(self) objreg.register('cookie-jar', cookie_jar) log.init.debug("Initializing cache...") diskcache = cache.DiskCache(self) objreg.register('cache', diskcache) log.init.debug("Initializing main window...") win_id = mainwindow.MainWindow.spawn( False if self._args.nowindow else True) main_window = objreg.get('main-window', scope='window', window=win_id) self.setActiveWindow(main_window)
def test_invalid_utf8(config_stub, download_stub, tmpdir, caplog, location): """Make sure invalid UTF-8 is handled correctly. See https://github.com/qutebrowser/qutebrowser/issues/2301 """ blocklist = tmpdir / 'blocklist' if location == 'comment': blocklist.write_binary(b'# nbsp: \xa0\n') else: assert location == 'content' blocklist.write_binary(b'https://www.example.org/\xa0') for url in BLOCKLIST_HOSTS: blocklist.write(url + '\n', mode='a') config_stub.data = { 'content': { 'host-block-lists': [QUrl(str(blocklist))], 'host-blocking-enabled': True, 'host-blocking-whitelist': None, } } host_blocker = adblock.HostBlocker() host_blocker.adblock_update() finished_signal = host_blocker._in_progress[0].finished if location == 'content': with caplog.at_level(logging.ERROR): finished_signal.emit() expected = (r"Failed to decode: " r"b'https://www.example.org/\xa0localhost\n'") assert caplog.records[-2].message == expected else: finished_signal.emit() host_blocker.read_hosts() assert_urls(host_blocker, whitelisted=[])
def test_without_datadir(config_stub, tmpdir, monkeypatch, win_registry): """No directory for data configured so no hosts file exists. Ensure CommandError is raised and no URL is blocked. """ config_stub.data = { 'content': { 'host-block-lists': generic_blocklists(tmpdir), 'host-blocking-enabled': True, } } monkeypatch.setattr('qutebrowser.utils.standarddir.data', lambda: None) host_blocker = adblock.HostBlocker() with pytest.raises(cmdexc.CommandError) as excinfo: host_blocker.adblock_update(0) assert str(excinfo.value) == "No data storage is configured!" host_blocker.read_hosts() for str_url in URLS_TO_CHECK: assert not host_blocker.is_blocked(QUrl(str_url)) # To test on_config_changed config_stub.set('content', 'host-block-lists', None)
def _init_modules(args, crash_handler): """Initialize all 'modules' which need to be initialized. Args: args: The argparse namespace. crash_handler: The CrashHandler instance. """ log.init.debug("Initializing save manager...") save_manager = savemanager.SaveManager(qApp) objreg.register('save-manager', save_manager) configinit.late_init(save_manager) log.init.debug("Checking backend requirements...") backendproblem.init() log.init.debug("Initializing prompts...") prompt.init() log.init.debug("Initializing network...") networkmanager.init() log.init.debug("Initializing proxy...") proxy.init() log.init.debug("Initializing readline-bridge...") readline_bridge = readline.ReadlineBridge() objreg.register('readline-bridge', readline_bridge) try: log.init.debug("Initializing sql...") sql.init(os.path.join(standarddir.data(), 'history.sqlite')) log.init.debug("Initializing web history...") history.init(qApp) except sql.SqlError as e: if e.environmental: error.handle_fatal_exc(e, args, 'Error initializing SQL', pre_text='Error initializing SQL') sys.exit(usertypes.Exit.err_init) else: raise log.init.debug("Initializing completion...") completiondelegate.init() log.init.debug("Initializing command history...") cmdhistory.init() log.init.debug("Initializing crashlog...") if not args.no_err_windows: crash_handler.handle_segfault() log.init.debug("Initializing sessions...") sessions.init(qApp) 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) log.init.debug("Initializing bookmarks...") bookmark_manager = urlmarks.BookmarkManager(qApp) objreg.register('bookmark-manager', bookmark_manager) log.init.debug("Initializing cookies...") cookie_jar = cookies.CookieJar(qApp) ram_cookie_jar = cookies.RAMCookieJar(qApp) objreg.register('cookie-jar', cookie_jar) objreg.register('ram-cookie-jar', ram_cookie_jar) log.init.debug("Initializing cache...") diskcache = cache.DiskCache(standarddir.cache(), parent=qApp) objreg.register('cache', diskcache) log.init.debug("Initializing downloads...") download_manager = qtnetworkdownloads.DownloadManager(parent=qApp) objreg.register('qtnetwork-download-manager', download_manager) log.init.debug("Initializing Greasemonkey...") greasemonkey.init() log.init.debug("Misc initialization...") macros.init() # Init backend-specific stuff browsertab.init()
def _init_modules(args, crash_handler): """Initialize all 'modules' which need to be initialized. Args: args: The argparse namespace. crash_handler: The CrashHandler instance. """ # pylint: disable=too-many-statements log.init.debug("Initializing prompts...") prompt.init() log.init.debug("Initializing save manager...") save_manager = savemanager.SaveManager(qApp) objreg.register('save-manager', save_manager) save_manager.add_saveable('version', _save_version) log.init.debug("Initializing network...") networkmanager.init() log.init.debug("Initializing proxy...") proxy.init() log.init.debug("Initializing readline-bridge...") readline_bridge = readline.ReadlineBridge() objreg.register('readline-bridge', readline_bridge) log.init.debug("Initializing config...") config.init(qApp) save_manager.init_autosave() log.init.debug("Initializing web history...") history.init(qApp) log.init.debug("Initializing crashlog...") if not args.no_err_windows: crash_handler.handle_segfault() log.init.debug("Initializing sessions...") sessions.init(qApp) 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) log.init.debug("Initializing bookmarks...") bookmark_manager = urlmarks.BookmarkManager(qApp) objreg.register('bookmark-manager', bookmark_manager) log.init.debug("Initializing cookies...") cookie_jar = cookies.CookieJar(qApp) ram_cookie_jar = cookies.RAMCookieJar(qApp) objreg.register('cookie-jar', cookie_jar) objreg.register('ram-cookie-jar', ram_cookie_jar) log.init.debug("Initializing cache...") diskcache = cache.DiskCache(standarddir.cache(), parent=qApp) objreg.register('cache', diskcache) log.init.debug("Initializing completions...") completionmodels.init() log.init.debug("Misc initialization...") if config.get('ui', 'hide-wayland-decoration'): os.environ['QT_WAYLAND_DISABLE_WINDOWDECORATION'] = '1' else: os.environ.pop('QT_WAYLAND_DISABLE_WINDOWDECORATION', None) macros.init() # Init backend-specific stuff browsertab.init()
def _init_modules(args, crash_handler): """Initialize all 'modules' which need to be initialized. Args: args: The argparse namespace. crash_handler: The CrashHandler instance. """ # pylint: disable=too-many-statements log.init.debug("Initializing save manager...") save_manager = savemanager.SaveManager(qApp) objreg.register('save-manager', save_manager) configinit.late_init(save_manager) log.init.debug("Checking backend requirements...") backendproblem.init() log.init.debug("Initializing prompts...") prompt.init() log.init.debug("Initializing network...") networkmanager.init() log.init.debug("Initializing proxy...") proxy.init() log.init.debug("Initializing readline-bridge...") readline_bridge = readline.ReadlineBridge() objreg.register('readline-bridge', readline_bridge) log.init.debug("Initializing sql...") try: sql.init(os.path.join(standarddir.data(), 'history.sqlite')) except sql.SqlError as e: error.handle_fatal_exc(e, args, 'Error initializing SQL', pre_text='Error initializing SQL') sys.exit(usertypes.Exit.err_init) log.init.debug("Initializing completion...") completiondelegate.init() log.init.debug("Initializing command history...") cmdhistory.init() log.init.debug("Initializing web history...") history.init(qApp) log.init.debug("Initializing crashlog...") if not args.no_err_windows: crash_handler.handle_segfault() log.init.debug("Initializing sessions...") sessions.init(qApp) 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) log.init.debug("Initializing bookmarks...") bookmark_manager = urlmarks.BookmarkManager(qApp) objreg.register('bookmark-manager', bookmark_manager) log.init.debug("Initializing cookies...") cookie_jar = cookies.CookieJar(qApp) ram_cookie_jar = cookies.RAMCookieJar(qApp) objreg.register('cookie-jar', cookie_jar) objreg.register('ram-cookie-jar', ram_cookie_jar) log.init.debug("Initializing cache...") diskcache = cache.DiskCache(standarddir.cache(), parent=qApp) objreg.register('cache', diskcache) log.init.debug("Misc initialization...") if config.val.window.hide_wayland_decoration: os.environ['QT_WAYLAND_DISABLE_WINDOWDECORATION'] = '1' else: os.environ.pop('QT_WAYLAND_DISABLE_WINDOWDECORATION', None) macros.init() # Init backend-specific stuff browsertab.init()