mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 02:05:07 +02:00
LibWeb: Fix endless spinning in apply_the_history_step()
While waiting for a task that populates a session history entry, we can't limit the processing of the event loop to the `NavigationAndTraversal` task source. This is because fetching uses the `Networking` task source, which also needs to be processed. Since making a fetch request might take some time, we want to process everything on the event loop while waiting, to avoid blocking user interactions. It is still possible to use `spin_processing_tasks_with_source_until()` on subsequent steps of `apply_the_history_step()`. Also modifies test that was flaky.
This commit is contained in:
committed by
Andreas Kling
parent
baf589deef
commit
609a72f7c7
Notes:
sideshowbarker
2024-07-18 05:01:22 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/SerenityOS/serenity/commit/609a72f7c7 Pull-request: https://github.com/SerenityOS/serenity/pull/23720
@@ -572,7 +572,7 @@ TraversableNavigable::HistoryStepResult TraversableNavigable::apply_the_history_
|
||||
// AD-HOC: Since currently populate_session_history_entry_document does not run in parallel
|
||||
// we call spin_until to interrupt execution of this function and let document population
|
||||
// to complete.
|
||||
main_thread_event_loop().spin_processing_tasks_with_source_until(Task::Source::NavigationAndTraversal, [&] {
|
||||
main_thread_event_loop().spin_until([&] {
|
||||
return !changing_navigable_continuations.is_empty() || completed_change_jobs == total_change_jobs;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user