Serenity Operating System
1/*
2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Forward.h>
10#include <LibWeb/Forward.h>
11
12namespace Web::Platform {
13
14class EventLoopPlugin {
15public:
16 static EventLoopPlugin& the();
17 static void install(EventLoopPlugin&);
18
19 virtual ~EventLoopPlugin();
20
21 virtual void spin_until(Function<bool()> goal_condition) = 0;
22 virtual void deferred_invoke(Function<void()>) = 0;
23 virtual NonnullRefPtr<Timer> create_timer() = 0;
24 virtual void quit() = 0;
25};
26
27}