Coverage Report

Created: 2026-05-16 07:03

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibWeb/Animations/DocumentTimeline.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>.
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <LibWeb/Animations/AnimationTimeline.h>
10
#include <LibWeb/HighResolutionTime/DOMHighResTimeStamp.h>
11
#include <LibWeb/WebIDL/ExceptionOr.h>
12
13
namespace Web::Animations {
14
15
// https://www.w3.org/TR/web-animations-1/#dictdef-documenttimelineoptions
16
struct DocumentTimelineOptions {
17
    HighResolutionTime::DOMHighResTimeStamp origin_time { 0.0 };
18
};
19
20
// https://www.w3.org/TR/web-animations-1/#the-documenttimeline-interface
21
class DocumentTimeline : public AnimationTimeline {
22
    WEB_PLATFORM_OBJECT(DocumentTimeline, AnimationTimeline);
23
    JS_DECLARE_ALLOCATOR(DocumentTimeline);
24
25
public:
26
    static JS::NonnullGCPtr<DocumentTimeline> create(JS::Realm&, DOM::Document&, HighResolutionTime::DOMHighResTimeStamp origin_time);
27
    static WebIDL::ExceptionOr<JS::NonnullGCPtr<DocumentTimeline>> construct_impl(JS::Realm&, DocumentTimelineOptions options = {});
28
29
    virtual void set_current_time(Optional<double> current_time) override;
30
    virtual bool is_inactive() const override;
31
32
    virtual Optional<double> convert_a_timeline_time_to_an_origin_relative_time(Optional<double>) override;
33
0
    virtual bool can_convert_a_timeline_time_to_an_origin_relative_time() const override { return true; }
34
35
private:
36
    DocumentTimeline(JS::Realm&, DOM::Document&, HighResolutionTime::DOMHighResTimeStamp origin_time);
37
    virtual ~DocumentTimeline() override = default;
38
39
    virtual void initialize(JS::Realm&) override;
40
41
    HighResolutionTime::DOMHighResTimeStamp m_origin_time;
42
};
43
44
}