diff options
Diffstat (limited to 'qutebrowser/browser/shared.py')
-rw-r--r-- | qutebrowser/browser/shared.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/qutebrowser/browser/shared.py b/qutebrowser/browser/shared.py index 54c466415..b75f7dab0 100644 --- a/qutebrowser/browser/shared.py +++ b/qutebrowser/browser/shared.py @@ -25,6 +25,7 @@ import html import enum import netrc import tempfile +import fnmatch from typing import Callable, Mapping, List, Optional, Iterable, Iterator from PyQt5.QtCore import QUrl, pyqtBoundSignal @@ -149,11 +150,30 @@ _JS_LOGMAP: Mapping[str, Callable[[str], None]] = { 'warning': log.js.warning, 'error': log.js.error, } +# Callables to use for content.javascript.log_message. +# Note that the keys are JS log levels here, not config settings! +_JS_LOGMAP_MESSAGE: Mapping[usertypes.JsLogLevel, Callable[[str], None]] = { + usertypes.JsLogLevel.info: message.info, + usertypes.JsLogLevel.warning: message.warning, + usertypes.JsLogLevel.error: message.error, +} -def javascript_log_message(level, source, line, msg): +def javascript_log_message( + level: usertypes.JsLogLevel, + source: str, + line: int, + msg: str, +): """Display a JavaScript log message.""" - logstring = "[{}:{}] {}".format(source, line, msg) + logstring = f"[{source}:{line}] {msg}" + + for pattern, levels in config.cache['content.javascript.log_message'].items(): + if level.name in levels and fnmatch.fnmatchcase(source, pattern): + func = _JS_LOGMAP_MESSAGE[level] + func(f"JS: {logstring}") + return + logger = _JS_LOGMAP[config.cache['content.javascript.log'][level.name]] logger(logstring) |