From 7a969a2d54633f334f7ba2002515471eec472c59 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 27 Mar 2024 16:55:18 +0100 Subject: Add caret browsing debug logging --- qutebrowser/browser/webengine/webenginetab.py | 2 ++ qutebrowser/javascript/caret.js | 19 +++++++++++++++++++ qutebrowser/qutebrowser.py | 3 ++- tests/end2end/fixtures/quteprocess.py | 8 +++++--- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 1c712db5e..02d912a50 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -292,6 +292,8 @@ class WebEngineCaret(browsertab.AbstractCaret): flags = set() if utils.is_windows: flags.add('windows') + if 'caret' in objects.debug_flags: + flags.add('debug') return list(flags) @pyqtSlot(usertypes.KeyMode) diff --git a/qutebrowser/javascript/caret.js b/qutebrowser/javascript/caret.js index b16a15348..4aeefcdb9 100644 --- a/qutebrowser/javascript/caret.js +++ b/qutebrowser/javascript/caret.js @@ -739,6 +739,12 @@ window._qutebrowser.caret = (function() { */ CaretBrowsing.isWindows = null; + /** + * Whether we should log debug outputs. + * @type {boolean} + */ + CaretBrowsing.isDebug = null; + /** * The id returned by window.setInterval for our stopAnimation function, so * we can cancel it when we call stopAnimation again. @@ -1150,6 +1156,8 @@ window._qutebrowser.caret = (function() { action = "extend"; } + CaretBrowsing.debug(`(move) ${action} ${count} ${granularity} ${direction}, selection ${CaretBrowsing.selectionState}`); + for (let i = 0; i < count; i++) { if (CaretBrowsing.selectionState === CaretBrowsing.SelectionState.LINE) { CaretBrowsing.updateLineSelection(direction, granularity); @@ -1180,6 +1188,8 @@ window._qutebrowser.caret = (function() { if (CaretBrowsing.selectionState !== CaretBrowsing.SelectionState.NONE) { action = "extend"; } + CaretBrowsing.debug(`(moveToBlock) ${action} paragraph ${paragraph}, boundary ${boundary}, count ${count}, selection ${CaretBrowsing.selectionState}`); + for (let i = 0; i < count; i++) { window. getSelection(). @@ -1196,6 +1206,7 @@ window._qutebrowser.caret = (function() { }; CaretBrowsing.toggle = function(value) { + CaretBrowsing.debug(`(toggle) enabled ${CaretBrowsing.isEnabled}, force ${CaretBrowsing.forceEnabled}`); if (CaretBrowsing.forceEnabled) { CaretBrowsing.recreateCaretElement(); return; @@ -1231,6 +1242,7 @@ window._qutebrowser.caret = (function() { * is enabled and whether this window / iframe has focus. */ CaretBrowsing.updateIsCaretVisible = function() { + CaretBrowsing.debug(`(updateIsCaretVisible) isEnabled ${CaretBrowsing.isEnabled}, isWindowFocused ${CaretBrowsing.isWindowFocused}, isCaretVisible ${CaretBrowsing.isCaretVisible}, caretElement ${CaretBrowsing.caretElement}`); CaretBrowsing.isCaretVisible = (CaretBrowsing.isEnabled && CaretBrowsing.isWindowFocused); if (CaretBrowsing.isCaretVisible && !CaretBrowsing.caretElement) { @@ -1274,6 +1286,12 @@ window._qutebrowser.caret = (function() { } }; + CaretBrowsing.debug = (text) => { + if (CaretBrowsing.isDebug) { + console.debug(`caret: ${text}`); + } + } + CaretBrowsing.init = function() { CaretBrowsing.isWindowFocused = document.hasFocus(); @@ -1313,6 +1331,7 @@ window._qutebrowser.caret = (function() { funcs.setFlags = (flags) => { CaretBrowsing.isWindows = flags.includes("windows"); + CaretBrowsing.isDebug = flags.includes("debug"); }; funcs.disableCaret = () => { diff --git a/qutebrowser/qutebrowser.py b/qutebrowser/qutebrowser.py index c3a0a60be..e68156759 100644 --- a/qutebrowser/qutebrowser.py +++ b/qutebrowser/qutebrowser.py @@ -171,12 +171,13 @@ def debug_flag_error(flag): avoid-chromium-init: Enable `--version` without initializing Chromium. werror: Turn Python warnings into errors. test-notification-service: Use the testing libnotify service. + caret: Enable debug logging for caret.js. """ valid_flags = ['debug-exit', 'pdb-postmortem', 'no-sql-history', 'no-scroll-filtering', 'log-requests', 'log-cookies', 'log-scroll-pos', 'log-sensitive-keys', 'stack', 'chromium', 'wait-renderer-process', 'avoid-chromium-init', 'werror', - 'test-notification-service', 'log-qt-events'] + 'test-notification-service', 'log-qt-events', 'caret'] if flag in valid_flags: return flag diff --git a/tests/end2end/fixtures/quteprocess.py b/tests/end2end/fixtures/quteprocess.py index a74445507..a6ad157f8 100644 --- a/tests/end2end/fixtures/quteprocess.py +++ b/tests/end2end/fixtures/quteprocess.py @@ -405,9 +405,11 @@ class QuteProc(testprocess.Process): backend = 'webengine' if self.request.config.webengine else 'webkit' args = ['--debug', '--no-err-windows', '--temp-basedir', '--json-logging', '--loglevel', 'vdebug', - '--backend', backend, '--debug-flag', 'no-sql-history', - '--debug-flag', 'werror', '--debug-flag', - 'test-notification-service', + '--backend', backend, + '--debug-flag', 'no-sql-history', + '--debug-flag', 'werror', + '--debug-flag', 'test-notification-service', + '--debug-flag', 'caret', '--qt-flag', 'disable-features=PaintHoldingCrossOrigin'] if self.request.config.webengine and testutils.disable_seccomp_bpf_sandbox(): -- cgit v1.2.3-54-g00ecf