Timer.cpp 884 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibCore/Timer.h>
  7. #include <LibWeb/HTML/Timer.h>
  8. #include <LibWeb/HTML/Window.h>
  9. namespace Web::HTML {
  10. JS::NonnullGCPtr<Timer> Timer::create(Window& window, i32 milliseconds, Function<void()> callback, i32 id)
  11. {
  12. return *window.heap().allocate_without_realm<Timer>(window, milliseconds, move(callback), id);
  13. }
  14. Timer::Timer(Window& window, i32 milliseconds, Function<void()> callback, i32 id)
  15. : m_window(window)
  16. , m_callback(move(callback))
  17. , m_id(id)
  18. {
  19. m_timer = Core::Timer::create_single_shot(milliseconds, [this] {
  20. m_callback();
  21. });
  22. }
  23. void Timer::visit_edges(Cell::Visitor& visitor)
  24. {
  25. Base::visit_edges(visitor);
  26. visitor.visit(m_window.ptr());
  27. }
  28. Timer::~Timer()
  29. {
  30. }
  31. void Timer::start()
  32. {
  33. m_timer->start();
  34. }
  35. }