LibWeb: Handle abort signal in CloseWatcher

This commit is contained in:
Felipe Muñoz Mazur 2024-12-06 18:12:29 -04:00 committed by Tim Ledbetter
commit e27c59047a
Notes: github-actions[bot] 2024-12-07 12:07:43 +00:00
7 changed files with 71 additions and 3 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2024, the Ladybird developers.
* Copyright (c) 2024, Felipe Muñoz Mazur <felipe.munoz.mazur@protonmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -57,9 +58,17 @@ WebIDL::ExceptionOr<GC::Ref<CloseWatcher>> CloseWatcher::construct_impl(JS::Real
auto close_watcher = establish(window);
// 3. If options["signal"] exists, then:
if (options.signal) {
// FIXME: 3.1 If options["signal"]'s aborted, then destroy closeWatcher.
// FIXME: 3.2 Add the following steps to options["signal"]:
if (auto signal = options.signal) {
// 3.1 If options["signal"]'s aborted, then destroy closeWatcher.
if (signal->aborted()) {
close_watcher->destroy();
}
// 3.2 Add the following steps to options["signal"]:
signal->add_abort_algorithm([close_watcher] {
// 3.2.1 Destroy closeWatcher.
close_watcher->destroy();
});
}
return close_watcher;