/* * Copyright (c) 2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::DOM { class Timer final : public RefCounted { public: enum class Type { Interval, Timeout, }; static NonnullRefPtr create_interval(Window&, int milliseconds, NonnullOwnPtr callback); static NonnullRefPtr create_timeout(Window&, int milliseconds, NonnullOwnPtr callback); ~Timer(); i32 id() const { return m_id; } Type type() const { return m_type; } Bindings::CallbackType& callback() { return *m_callback; } private: Timer(Window&, Type, int ms, NonnullOwnPtr callback); Window& m_window; RefPtr m_timer; Type m_type; int m_id { 0 }; NonnullOwnPtr m_callback; }; }