summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-07-31 15:50:29 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-07-31 15:50:29 +0200
commitc048a48b788af535d05ebb90288d76f2d3e308bf (patch)
treee47341a3a88c93fc5454985e26fb93e664fb450b
parent592735767f6062335c5853346f2ed5b82bf2040f (diff)
downloadqutebrowser-c048a48b788af535d05ebb90288d76f2d3e308bf.tar.gz
qutebrowser-c048a48b788af535d05ebb90288d76f2d3e308bf.zip
Add a test for ignoring _toggle_sel_translate
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py2
-rw-r--r--tests/unit/browser/test_caret.py15
2 files changed, 17 insertions, 0 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index ebce1e0fe..fe4d37745 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -535,6 +535,8 @@ class WebEngineCaret(browsertab.AbstractCaret):
# This may happen if the user switches to another mode after
# `:toggle-selection` is executed and before this callback function
# is asynchronously called.
+ log.misc.debug("Ignoring caret selection callback in {}".format(
+ self._mode_manager.mode))
return
if state_str is None:
message.error("Error toggling caret selection")
diff --git a/tests/unit/browser/test_caret.py b/tests/unit/browser/test_caret.py
index 7d1325612..75d9fee09 100644
--- a/tests/unit/browser/test_caret.py
+++ b/tests/unit/browser/test_caret.py
@@ -99,6 +99,21 @@ def test_toggle(caret, selection, qtbot):
assert selection.toggle() == browsertab.SelectionState.none
+def test_selection_callback_wrong_mode(qtbot, caplog,
+ webengine_tab, mode_manager):
+ """Test what calling the selection callback outside of caret mode.
+
+ It should be ignored, as something could have left caret mode while the
+ async callback was happening, so we don't want to mess with the status bar.
+ """
+ assert mode_manager.mode == usertypes.KeyMode.normal
+ with qtbot.assertNotEmitted(webengine_tab.caret.selection_toggled):
+ webengine_tab.caret._toggle_sel_translate('normal')
+
+ msg = 'Ignoring caret selection callback in KeyMode.normal'
+ assert caplog.messages == [msg]
+
+
class TestDocument:
def test_selecting_entire_document(self, caret, selection):