/* * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include #include #include namespace Web::Platform { Timer::~Timer() = default; void Timer::visit_edges(JS::Cell::Visitor& visitor) { Base::visit_edges(visitor); visitor.visit(on_timeout); } GC::Ref Timer::create(GC::Heap& heap) { return EventLoopPlugin::the().create_timer(heap); } GC::Ref Timer::create_repeating(GC::Heap& heap, int interval_ms, GC::Ptr> timeout_handler) { auto timer = EventLoopPlugin::the().create_timer(heap); timer->set_single_shot(false); timer->set_interval(interval_ms); timer->on_timeout = move(timeout_handler); return timer; } GC::Ref Timer::create_single_shot(GC::Heap& heap, int interval_ms, GC::Ptr> timeout_handler) { auto timer = EventLoopPlugin::the().create_timer(heap); timer->set_single_shot(true); timer->set_interval(interval_ms); timer->on_timeout = move(timeout_handler); return timer; } }