Serenity Operating System
at master 40 lines 1.0 kB view raw
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/RefCounted.h> 10#include <LibJS/SafeFunction.h> 11 12namespace Web::Platform { 13 14class Timer : public RefCounted<Timer> { 15public: 16 static NonnullRefPtr<Timer> create(); 17 static NonnullRefPtr<Timer> create_repeating(int interval_ms, JS::SafeFunction<void()>&& timeout_handler); 18 static NonnullRefPtr<Timer> create_single_shot(int interval_ms, JS::SafeFunction<void()>&& timeout_handler); 19 20 virtual ~Timer(); 21 22 virtual void start() = 0; 23 virtual void start(int interval_ms) = 0; 24 virtual void restart() = 0; 25 virtual void restart(int interval_ms) = 0; 26 virtual void stop() = 0; 27 28 virtual void set_active(bool) = 0; 29 30 virtual bool is_active() const = 0; 31 virtual int interval() const = 0; 32 virtual void set_interval(int interval_ms) = 0; 33 34 virtual bool is_single_shot() const = 0; 35 virtual void set_single_shot(bool) = 0; 36 37 JS::SafeFunction<void()> on_timeout; 38}; 39 40}