Fix input.insert_mode.auto_load race / test_auto_load flakiness
Fixes #8145, see #5390. As long as we don't have a solution to get notified about focus happening (#2471 possibly?), it looks like there is no better way to get notified about this, so a delay will need to do for now.
This commit is contained in:
parent
0b220117e2
commit
982b8bdcec
|
|
@ -32,6 +32,12 @@ Changed
|
|||
`:quickmark-*`, `:bookmark-*`, `:tab-take` and `:tab-select` (for the quick
|
||||
and bookmark categories). (#7955)
|
||||
|
||||
Fixed
|
||||
~~~~~
|
||||
|
||||
- `input.insert_mode.auto_load` sometimes not triggering due to a race
|
||||
condition.
|
||||
|
||||
[[v3.1.1]]
|
||||
v3.1.1 (unreleased)
|
||||
-------------------
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ from typing import (cast, TYPE_CHECKING, Any, Callable, Iterable, List, Optional
|
|||
|
||||
from qutebrowser.qt import machinery
|
||||
from qutebrowser.qt.core import (pyqtSignal, pyqtSlot, QUrl, QObject, QSizeF, Qt,
|
||||
QEvent, QPoint, QRect)
|
||||
QEvent, QPoint, QRect, QTimer)
|
||||
from qutebrowser.qt.gui import QKeyEvent, QIcon, QPixmap
|
||||
from qutebrowser.qt.widgets import QApplication, QWidget
|
||||
from qutebrowser.qt.printsupport import QPrintDialog, QPrinter
|
||||
|
|
@ -902,7 +902,13 @@ class AbstractTabPrivate:
|
|||
modeman.enter(self._tab.win_id, usertypes.KeyMode.insert,
|
||||
'load finished', only_if_normal=True)
|
||||
|
||||
self._tab.elements.find_focused(_auto_insert_mode_cb)
|
||||
# There seems to be a race between loadFinished being called,
|
||||
# and the autoload attribute on websites actually focusing anything.
|
||||
# Thus, we delay this by a bit. Locally, a delay of 13ms caused no races
|
||||
# with 5000 test reruns (even with simultaneous CPU stress testing),
|
||||
# so 65ms should be a safe bet and still not be too noticeable.
|
||||
QTimer.singleShot(
|
||||
65, lambda: self._tab.elements.find_focused(_auto_insert_mode_cb))
|
||||
|
||||
def clear_ssl_errors(self) -> None:
|
||||
raise NotImplementedError
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@
|
|||
elem.addEventListener('input', function() {
|
||||
console.log("contents: " + elem.value);
|
||||
});
|
||||
elem.addEventListener('focus', function() {
|
||||
console.log("autofocus element focused");
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ def test_insert_mode(file_name, elem_id, source, input_text, zoom,
|
|||
(True, False, True), # enabled and foreground tab
|
||||
(True, True, False), # background tab
|
||||
])
|
||||
@pytest.mark.flaky
|
||||
def test_auto_load(quteproc, auto_load, background, insert_mode):
|
||||
quteproc.set_setting('input.insert_mode.auto_load', str(auto_load))
|
||||
url_path = 'data/insert_mode_settings/html/autofocus.html'
|
||||
|
|
|
|||
Loading…
Reference in New Issue