/* * Copyright (c) 2021, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::HTML { // https://html.spec.whatwg.org/multipage/webappapis.html#classic-script class ClassicScript final : public Script { JS_CELL(ClassicScript, Script); public: virtual ~ClassicScript() override; enum class MutedErrors { No, Yes, }; static JS::NonnullGCPtr create(DeprecatedString filename, StringView source, EnvironmentSettingsObject&, AK::URL base_url, size_t source_line_number = 1, MutedErrors = MutedErrors::No); JS::Script* script_record() { return m_script_record; } JS::Script const* script_record() const { return m_script_record; } enum class RethrowErrors { No, Yes, }; JS::Completion run(RethrowErrors = RethrowErrors::No, JS::GCPtr lexical_environment_override = {}); MutedErrors muted_errors() const { return m_muted_errors; } private: ClassicScript(AK::URL base_url, DeprecatedString filename, EnvironmentSettingsObject& environment_settings_object); virtual void visit_edges(Cell::Visitor&) override; JS::GCPtr m_script_record; MutedErrors m_muted_errors { MutedErrors::No }; Optional m_error_to_rethrow; }; }