mirror of
https://github.com/RGBCube/serenity
synced 2025-05-24 01:15:07 +00:00
LibWeb: Start working on spec-aligned HTML scripting semantics
This patch adds HTML::Script and HTML::ClassicScript (subclass of the former.)
This commit is contained in:
parent
612a23d6fc
commit
0839442da5
5 changed files with 105 additions and 0 deletions
|
@ -157,6 +157,8 @@ set(SOURCES
|
|||
HTML/Parser/HTMLTokenizer.cpp
|
||||
HTML/Parser/ListOfActiveFormattingElements.cpp
|
||||
HTML/Parser/StackOfOpenElements.cpp
|
||||
HTML/Scripting/ClassicScript.cpp
|
||||
HTML/Scripting/Script.cpp
|
||||
HTML/SubmitEvent.cpp
|
||||
HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
|
||||
HTML/TagNames.cpp
|
||||
|
|
26
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.cpp
Normal file
26
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/HTML/Scripting/ClassicScript.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
NonnullRefPtr<ClassicScript> ClassicScript::create(URL base_url, RefPtr<JS::Script> script_record)
|
||||
{
|
||||
return adopt_ref(*new ClassicScript(move(base_url), move(script_record)));
|
||||
}
|
||||
|
||||
ClassicScript::ClassicScript(URL base_url, RefPtr<JS::Script> script_record)
|
||||
: Script(move(base_url))
|
||||
, m_script_record(move(script_record))
|
||||
{
|
||||
}
|
||||
|
||||
ClassicScript::~ClassicScript()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
29
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.h
Normal file
29
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibJS/Script.h>
|
||||
#include <LibWeb/HTML/Scripting/Script.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/webappapis.html#classic-script
|
||||
class ClassicScript final : public Script {
|
||||
public:
|
||||
~ClassicScript();
|
||||
static NonnullRefPtr<ClassicScript> create(URL base_url, RefPtr<JS::Script>);
|
||||
|
||||
JS::Script* script_record() { return m_script_record; }
|
||||
JS::Script const* script_record() const { return m_script_record; }
|
||||
|
||||
private:
|
||||
explicit ClassicScript(URL base_url, RefPtr<JS::Script>);
|
||||
|
||||
RefPtr<JS::Script> m_script_record;
|
||||
};
|
||||
|
||||
}
|
20
Userland/Libraries/LibWeb/HTML/Scripting/Script.cpp
Normal file
20
Userland/Libraries/LibWeb/HTML/Scripting/Script.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/HTML/Scripting/Script.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
Script::Script(URL base_url)
|
||||
: m_base_url(move(base_url))
|
||||
{
|
||||
}
|
||||
|
||||
Script::~Script()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
28
Userland/Libraries/LibWeb/HTML/Scripting/Script.h
Normal file
28
Userland/Libraries/LibWeb/HTML/Scripting/Script.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/RefCounted.h>
|
||||
#include <AK/URL.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/webappapis.html#concept-script
|
||||
class Script : public RefCounted<Script> {
|
||||
public:
|
||||
virtual ~Script();
|
||||
|
||||
URL const& base_url() const { return m_base_url; }
|
||||
|
||||
protected:
|
||||
explicit Script(URL base_url);
|
||||
|
||||
private:
|
||||
URL m_base_url;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue