QtWebEngine: Add JS logging

This commit is contained in:
Florian Bruhin 2016-07-13 10:25:21 +02:00
parent e35dfe7aa3
commit 9c49900f9e
3 changed files with 30 additions and 0 deletions

View File

@ -25,6 +25,9 @@ from PyQt5.QtCore import pyqtSignal, Qt, QPoint
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
# pylint: enable=no-name-in-module,import-error,useless-suppression
from qutebrowser.config import config
from qutebrowser.utils import log
class WebEngineView(QWebEngineView):
@ -58,3 +61,19 @@ class WebEnginePage(QWebEnginePage):
def certificateError(self, error):
self.certificate_error.emit()
return super().certificateError(error)
def javaScriptConsoleMessage(self, level, msg, line, source):
"""Log javascript messages to qutebrowser's log."""
# FIXME:qtwebengine maybe unify this in the tab api somehow?
setting = config.get('general', 'log-javascript-console')
if setting == 'none':
return
level_to_logger = {
QWebEnginePage.InfoMessageLevel: log.js.info,
QWebEnginePage.WarningMessageLevel: log.js.warning,
QWebEnginePage.ErrorMessageLevel: log.js.error,
}
logstring = "[{}:{}] {}".format(source, line, msg)
logger = level_to_logger[level]
logger(logstring)

View File

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html>
<body onload="console.log('console.log works!')">
<p>This page logs a line via console.log</p>
</body>
</html>

View File

@ -2,6 +2,11 @@ Feature: Javascript stuff
Integration with javascript.
Scenario: Using console.log
When I set general -> log-javascript-console to debug
And I open data/javascript/consolelog.html
Then the javascript message "console.log works!" should be logged
# https://github.com/The-Compiler/qutebrowser/issues/906
Scenario: Closing a JS window twice (issue 906)