mirror of
https://github.com/RGBCube/serenity
synced 2025-05-24 05:55:06 +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/HTMLTokenizer.cpp
|
||||||
HTML/Parser/ListOfActiveFormattingElements.cpp
|
HTML/Parser/ListOfActiveFormattingElements.cpp
|
||||||
HTML/Parser/StackOfOpenElements.cpp
|
HTML/Parser/StackOfOpenElements.cpp
|
||||||
|
HTML/Scripting/ClassicScript.cpp
|
||||||
|
HTML/Scripting/Script.cpp
|
||||||
HTML/SubmitEvent.cpp
|
HTML/SubmitEvent.cpp
|
||||||
HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
|
HTML/SyntaxHighlighter/SyntaxHighlighter.cpp
|
||||||
HTML/TagNames.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