Serenity Operating System
at master 39 lines 853 B view raw
1/* 2 * Copyright (c) 2020, 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 <AK/Function.h> 11#include <AK/WeakPtr.h> 12#include <LibCore/Forward.h> 13#include <LibJS/Heap/Cell.h> 14#include <LibJS/Heap/GCPtr.h> 15#include <LibWeb/Forward.h> 16 17namespace Web::HTML { 18 19class Timer final : public JS::Cell { 20 JS_CELL(Timer, JS::Cell); 21 22public: 23 static JS::NonnullGCPtr<Timer> create(Window&, i32 milliseconds, Function<void()> callback, i32 id); 24 virtual ~Timer() override; 25 26 void start(); 27 28private: 29 Timer(Window& window, i32 milliseconds, Function<void()> callback, i32 id); 30 31 virtual void visit_edges(Cell::Visitor&) override; 32 33 RefPtr<Platform::Timer> m_timer; 34 JS::NonnullGCPtr<Window> m_window; 35 Function<void()> m_callback; 36 i32 m_id { 0 }; 37}; 38 39}