Coverage Report

Created: 2026-10-28 07:05

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/serenity/Userland/Libraries/LibJS/Runtime/GlobalObject.h
Line
Count
Source
1
/*
2
 * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
3
 * Copyright (c) 2020-2022, Linus Groh <linusg@serenityos.org>
4
 *
5
 * SPDX-License-Identifier: BSD-2-Clause
6
 */
7
8
#pragma once
9
10
#include <LibJS/Heap/Heap.h>
11
#include <LibJS/Runtime/Environment.h>
12
#include <LibJS/Runtime/VM.h>
13
14
namespace JS {
15
16
class GlobalObject : public Object {
17
    JS_OBJECT(GlobalObject, Object);
18
    JS_DECLARE_ALLOCATOR(GlobalObject);
19
20
    friend class Intrinsics;
21
22
public:
23
    virtual void initialize(Realm&) override;
24
    virtual ~GlobalObject() override;
25
26
protected:
27
    explicit GlobalObject(Realm&);
28
29
private:
30
0
    virtual bool is_global_object() const final { return true; }
31
32
    JS_DECLARE_NATIVE_FUNCTION(gc);
33
    JS_DECLARE_NATIVE_FUNCTION(is_nan);
34
    JS_DECLARE_NATIVE_FUNCTION(is_finite);
35
    JS_DECLARE_NATIVE_FUNCTION(parse_float);
36
    JS_DECLARE_NATIVE_FUNCTION(parse_int);
37
    JS_DECLARE_NATIVE_FUNCTION(eval);
38
    JS_DECLARE_NATIVE_FUNCTION(encode_uri);
39
    JS_DECLARE_NATIVE_FUNCTION(decode_uri);
40
    JS_DECLARE_NATIVE_FUNCTION(encode_uri_component);
41
    JS_DECLARE_NATIVE_FUNCTION(decode_uri_component);
42
    JS_DECLARE_NATIVE_FUNCTION(escape);
43
    JS_DECLARE_NATIVE_FUNCTION(unescape);
44
};
45
46
void set_default_global_bindings(Realm&);
47
48
template<>
49
0
inline bool Object::fast_is<GlobalObject>() const { return is_global_object(); }
50
51
template<typename... Args>
52
[[nodiscard]] ALWAYS_INLINE ThrowCompletionOr<Value> Value::invoke(VM& vm, PropertyKey const& property_key, Args... args)
53
0
{
54
0
    if constexpr (sizeof...(Args) > 0) {
55
0
        MarkedVector<Value> arglist { vm.heap() };
56
0
        (..., arglist.append(move(args)));
57
0
        return invoke_internal(vm, property_key, move(arglist));
58
0
    }
59
60
0
    return invoke_internal(vm, property_key, Optional<MarkedVector<Value>> {});
61
0
}
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::Value, JS::Value>(JS::VM&, JS::PropertyKey const&, JS::Value, JS::Value)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<>(JS::VM&, JS::PropertyKey const&)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::PromiseAllResolveElementFunction>, JS::NonnullGCPtr<JS::FunctionObject> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::PromiseAllResolveElementFunction>, JS::NonnullGCPtr<JS::FunctionObject>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::PromiseAllSettledResolveElementFunction>, JS::NonnullGCPtr<JS::PromiseAllSettledRejectElementFunction> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::PromiseAllSettledResolveElementFunction>, JS::NonnullGCPtr<JS::PromiseAllSettledRejectElementFunction>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::FunctionObject>, JS::NonnullGCPtr<JS::PromiseAnyRejectElementFunction> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::FunctionObject>, JS::NonnullGCPtr<JS::PromiseAnyRejectElementFunction>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::FunctionObject>, JS::NonnullGCPtr<JS::FunctionObject> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::FunctionObject>, JS::NonnullGCPtr<JS::FunctionObject>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::NativeFunction> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::NativeFunction>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::NonnullGCPtr<JS::PrimitiveString> >(JS::VM&, JS::PropertyKey const&, JS::NonnullGCPtr<JS::PrimitiveString>)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::Object*>(JS::VM&, JS::PropertyKey const&, JS::Object*)
Unexecuted instantiation: JS::ThrowCompletionOr<JS::Value> JS::Value::invoke<JS::Object const*, JS::Value>(JS::VM&, JS::PropertyKey const&, JS::Object const*, JS::Value)
62
63
}