mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 12:19:54 +00: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:
parent
baf589deef
commit
609a72f7c7
Notes:
sideshowbarker
2024-07-18 05:01:22 +09:00
Author: https://github.com/kalenikaliaksandr
Commit: 609a72f7c7
Pull-request: https://github.com/SerenityOS/serenity/pull/23720
3 changed files with 17 additions and 13 deletions
|
@ -1,12 +1,16 @@
|
|||
<script src="../include.js"></script>
|
||||
<div id="foo">
|
||||
<iframe></iframe>
|
||||
<script>
|
||||
setTimeout(function () {
|
||||
foo.remove();
|
||||
// Pass (didn't crash)
|
||||
internals.signalTextTestIsDone();
|
||||
<script src="../include.js"></script><div id="foo"><iframe></iframe><script>
|
||||
setTimeout(function () {
|
||||
foo.remove();
|
||||
window.done = true;
|
||||
}, 0);
|
||||
</script></div><iframe></iframe><script>
|
||||
asyncTest(function (done) {
|
||||
let internalId;
|
||||
internalId = setInterval(function () {
|
||||
if (window.done) {
|
||||
clearInterval(internalId);
|
||||
done();
|
||||
}
|
||||
}, 0);
|
||||
</script>
|
||||
</div>
|
||||
<iframe></iframe>
|
||||
});
|
||||
</script>PASS: did not crash
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue