/src/serenity/Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include <LibJS/Script.h> |
10 | | #include <LibWeb/Forward.h> |
11 | | #include <LibWeb/HTML/Scripting/Script.h> |
12 | | |
13 | | namespace Web::HTML { |
14 | | |
15 | | // https://html.spec.whatwg.org/multipage/webappapis.html#classic-script |
16 | | class ClassicScript final : public Script { |
17 | | JS_CELL(ClassicScript, Script); |
18 | | JS_DECLARE_ALLOCATOR(ClassicScript); |
19 | | |
20 | | public: |
21 | | virtual ~ClassicScript() override; |
22 | | |
23 | | enum class MutedErrors { |
24 | | No, |
25 | | Yes, |
26 | | }; |
27 | | static JS::NonnullGCPtr<ClassicScript> create(ByteString filename, StringView source, EnvironmentSettingsObject&, URL::URL base_url, size_t source_line_number = 1, MutedErrors = MutedErrors::No); |
28 | | |
29 | 0 | JS::Script* script_record() { return m_script_record; } |
30 | 0 | JS::Script const* script_record() const { return m_script_record; } |
31 | | |
32 | | enum class RethrowErrors { |
33 | | No, |
34 | | Yes, |
35 | | }; |
36 | | JS::Completion run(RethrowErrors = RethrowErrors::No, JS::GCPtr<JS::Environment> lexical_environment_override = {}); |
37 | | |
38 | 0 | MutedErrors muted_errors() const { return m_muted_errors; } |
39 | | |
40 | | private: |
41 | | ClassicScript(URL::URL base_url, ByteString filename, EnvironmentSettingsObject& environment_settings_object); |
42 | | |
43 | | virtual void visit_edges(Cell::Visitor&) override; |
44 | | |
45 | | JS::GCPtr<JS::Script> m_script_record; |
46 | | MutedErrors m_muted_errors { MutedErrors::No }; |
47 | | }; |
48 | | |
49 | | } |