Serenity Operating System
at master 49 lines 1.4 kB view raw
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 13namespace Web::HTML { 14 15// https://html.spec.whatwg.org/multipage/webappapis.html#classic-script 16class ClassicScript final : public Script { 17 JS_CELL(ClassicScript, Script); 18 19public: 20 virtual ~ClassicScript() override; 21 22 enum class MutedErrors { 23 No, 24 Yes, 25 }; 26 static JS::NonnullGCPtr<ClassicScript> create(DeprecatedString filename, StringView source, EnvironmentSettingsObject&, AK::URL base_url, size_t source_line_number = 1, MutedErrors = MutedErrors::No); 27 28 JS::Script* script_record() { return m_script_record; } 29 JS::Script const* script_record() const { return m_script_record; } 30 31 enum class RethrowErrors { 32 No, 33 Yes, 34 }; 35 JS::Completion run(RethrowErrors = RethrowErrors::No, JS::GCPtr<JS::Environment> lexical_environment_override = {}); 36 37 MutedErrors muted_errors() const { return m_muted_errors; } 38 39private: 40 ClassicScript(AK::URL base_url, DeprecatedString filename, EnvironmentSettingsObject& environment_settings_object); 41 42 virtual void visit_edges(Cell::Visitor&) override; 43 44 JS::GCPtr<JS::Script> m_script_record; 45 MutedErrors m_muted_errors { MutedErrors::No }; 46 Optional<JS::ParserError> m_error_to_rethrow; 47}; 48 49}