Serenity Operating System
at master 37 lines 883 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 <LibCore/ElapsedTimer.h> 10#include <LibWeb/DOM/EventTarget.h> 11 12namespace Web::HighResolutionTime { 13 14class Performance final : public DOM::EventTarget { 15 WEB_PLATFORM_OBJECT(Performance, DOM::EventTarget); 16 17public: 18 virtual ~Performance() override; 19 20 double now() const { return static_cast<double>(m_timer.elapsed()); } 21 double time_origin() const; 22 23 JS::GCPtr<NavigationTiming::PerformanceTiming> timing(); 24 25private: 26 explicit Performance(HTML::Window&); 27 28 virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override; 29 virtual void visit_edges(Cell::Visitor&) override; 30 31 JS::NonnullGCPtr<HTML::Window> m_window; 32 JS::GCPtr<NavigationTiming::PerformanceTiming> m_timing; 33 34 Core::ElapsedTimer m_timer; 35}; 36 37}