From 01dceb588ae47742fe70606f76e952904978a2cb Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 3 Dec 2023 21:02:34 +0100 Subject: [PATCH] Allow configuring web view console logging via environment variable --- README.md | 1 + syncthingwidgets/CMakeLists.txt | 10 ------- syncthingwidgets/webview/webpage.cpp | 45 +++++++++++++--------------- 3 files changed, 22 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 8c31085..b8a322a 100644 --- a/README.md +++ b/README.md @@ -512,6 +512,7 @@ It is possible to turn on logging of the underlying library by setting environme * `LIB_SYNCTHING_CONNECTOR_LOG_API_REPLIES`: log replies from Syncthing's REST-API (except events) * `LIB_SYNCTHING_CONNECTOR_LOG_EVENTS`: log events emitted by Syncthing's events REST-API endpoint * `LIB_SYNCTHING_CONNECTOR_LOG_DIRS_OR_DEVS_RESETTED`: log when folders/devices are internally reset +* `SYNCTHINGWIDGETS_LOG_JS_CONSOLE`: log message from the JavaScript console of the built-in web view ### Useful environment variables for development * `QT_QPA_PLATFORM`: set to `offscreen` to disable graphical output, e.g. to run tests in headless diff --git a/syncthingwidgets/CMakeLists.txt b/syncthingwidgets/CMakeLists.txt index 7f7f9e5..91443da 100644 --- a/syncthingwidgets/CMakeLists.txt +++ b/syncthingwidgets/CMakeLists.txt @@ -108,16 +108,6 @@ if (USE_LIBSYNCTHING) list(APPEND META_PUBLIC_COMPILE_DEFINITIONS SYNCTHINGWIDGETS_USE_LIBSYNCTHING) endif () -# configure logging JavaScript events to stderr -option(SYNCTHING_WIDGETS_LOG_JAVASCRIPT_CONSOLE "enables logging JavaScript events of webview to stderr" OFF) -if (SYNCTHING_WIDGETS_LOG_JAVASCRIPT_CONSOLE) - set_property( - SOURCE webview/webpage.cpp - APPEND - PROPERTY COMPILE_DEFINITIONS SYNCTHINGWIDGETS_LOG_JAVASCRIPT_CONSOLE) - message(STATUS_MESSAGE "JavaScript console of web view will be logged to stderr") -endif () - # configure autostart .desktop file exec path set(AUTOSTART_EXEC_PATH "" diff --git a/syncthingwidgets/webview/webpage.cpp b/syncthingwidgets/webview/webpage.cpp index 65a826d..7e9e137 100644 --- a/syncthingwidgets/webview/webpage.cpp +++ b/syncthingwidgets/webview/webpage.cpp @@ -33,9 +33,7 @@ #include #endif -#ifdef SYNCTHINGWIDGETS_LOG_JAVASCRIPT_CONSOLE #include -#endif using namespace Data; @@ -285,26 +283,25 @@ bool WebPage::acceptNavigationRequest(const QUrl &url, SYNCTHINGWIDGETS_WEB_PAGE void WebPage::javaScriptConsoleMessage( QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID) { - Q_UNUSED(level) - Q_UNUSED(lineNumber) Q_UNUSED(sourceID) -#ifdef SYNCTHINGWIDGETS_LOG_JAVASCRIPT_CONSOLE - auto levelName = std::string_view(); - switch (level) { - case QWebEnginePage::InfoMessageLevel: - levelName = "info"; - break; - case QWebEnginePage::WarningMessageLevel: - levelName = "warning"; - break; - case QWebEnginePage::ErrorMessageLevel: - levelName = "error"; - break; - default: - levelName = "message"; + static const auto loggingEnabled = qEnvironmentVariableIntValue(PROJECT_VARNAME_UPPER "_LOG_JS_CONSOLE"); + if (loggingEnabled) { + auto levelName = std::string_view(); + switch (level) { + case QWebEnginePage::InfoMessageLevel: + levelName = "info"; + break; + case QWebEnginePage::WarningMessageLevel: + levelName = "warning"; + break; + case QWebEnginePage::ErrorMessageLevel: + levelName = "error"; + break; + default: + levelName = "message"; + } + std::cerr << "JS " << levelName << ": line " << lineNumber << ": " << message.toLocal8Bit().data() << '\n'; } - std::cerr << "JS " << levelName << ": line " << lineNumber << ": " << message.toLocal8Bit().data() << '\n'; -#endif if (level == QWebEnginePage::InfoMessageLevel) { processJavaScriptConsoleMessage(message); } @@ -326,11 +323,11 @@ bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &r */ void WebPage::javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID) { - Q_UNUSED(lineNumber) Q_UNUSED(sourceID) -#ifdef SYNCTHINGWIDGETS_LOG_JAVASCRIPT_CONSOLE - std::cerr << "JS console: line " << lineNumber << ": " << message.toLocal8Bit().data() << '\n'; -#endif + static const auto loggingEnabled = qEnvironmentVariableIntValue(PROJECT_VARNAME_UPPER "_LOG_JS_CONSOLE"); + if (loggingEnabled) { + std::cerr << "JS console: line " << lineNumber << ": " << message.toLocal8Bit().data() << '\n'; + } processJavaScriptConsoleMessage(message); } #endif